特殊功能寄存器地址与控制位

合集下载

特殊寄存器地址

特殊寄存器地址
Local Word(LW)
地址
說明
注釋
9000
配方資料索引位址
RWI和RBI利用這個索引位址來訪問配方資料(讀/寫)
9002~9003
數值輸入最大值
當啟動數值輸入時輸入的數值的最大值.當沒啟動數值輸入時置爲0. (讀)
9004~9005
數值輸入最小值
當啟動數值輸入時輸入的數值的最小值.當沒啟動數值輸入時置爲0. (讀)
9016
本地時間星期
BCD碼,有效值範圍0-6(讀/寫)
9020
Object queue item
number
如果object queue item number超過1000,那麽這是一個比較複雜的HMI程式,觸摸屏將自動控制PLC通信頻寬.但是如果這是由本地資料引起的,那麽您的程式就需要重新設計了.
60040
通信口類型
0:232
1:485
60041
串列傳輸速率
0:9600
1:19200
2:38400
3:57600
4:115200
60042
資料位元
0:7
1:8
60043
校驗位
0:無
1:偶校驗
2:奇校驗
60044
停止位
0:1 Bit
1:2 Bit
60045
人機站號
60046
PLC站號
60047
多台人機互連
9044
Recipe Word儲存至系
統參數
置ON執行此功能,系統會自動置OFF.
只有特定的Recipe Word會儲存至系統參數,詳細請參照系統保留Recipe Word說明.(寫)
9045

特殊功能寄存器

特殊功能寄存器

特殊功能寄存器
在学习51单⽚机的过程中,代码⾥总会有TMOD,P0等等⼀系列⾃⼰根本没有定义过的东东。

今天在学习定时器中断时看到了介绍TMOD是特殊功能寄存器。

今天就来了解⼀下特殊功能寄存器吧!
特殊功能寄存器是80C51系列单⽚机中个功能部件对应的计时器⽤于存放相应功能的控制命令、状态和数据。

80C51有21个特殊功能寄存器,52⼜多了五个(*指代80C52独有的特殊功能寄存器)。

MCS-51单⽚机的特殊功能寄存器
符号地址功能介绍
F0H B寄存器
E0H
D0H程序状态
TH2*CDH/计数器2(⾼8位)
TL2*CCH定时器/计数器2(低8位)
RLDH*CBH外部输⼊(P1.1)计数器/⾃动再装⼊模式时初值寄存器⾼⼋位
RLDL*CAH外部输⼊(P1.1)计数器/⾃动再装⼊模式时初值寄存器低⼋位
T2CON*C8H T2/计数器
B8H中断优先级控制寄存器
B0H P3⼝
A8H中断允许
A0H P2⼝
SBUF99H
98H
P190H P1⼝
TH18DH/计数器1(⾼8位)
TH08CH定时器/计数器0(⾼8位)
TL18BH/计数器1(低8位)
TL08AH/计数器0(低8位)
89H T0、T1定时器/计数器⽅式
88H T0、T1/计数器控制寄存器
DPH83H数据地址指针(⾼8位)
DPL82H数据地址指针(低8位)
SP81H
P080H P0⼝
PCON87H电源控制寄存器。

特殊功能寄存器

特殊功能寄存器

特殊功能寄存器(SFR)也称为专用寄存器,特殊功能寄存器反映了MCS-51单片机的运行状态。

很多功能也通过特殊功能寄存器来定义和控制程序的执行。

MCS-51有21个特殊功能寄存器,它们被离散地分布在内部RAM的80H—FFH地址中,这些寄存的功能已作了专门的规定,用户不能修改其结构。

表2是特殊功能寄存器分布一览表,我们对其主要的寄存器作一些简单的介绍。

表2 特殊功能寄存器标识符号地址寄存器名称ACC 0E0H 累加器B 0F0H B寄存器PSW 0D0H 程序状态字SP 81H 堆栈指针DPTR 82H、83H 数据指针(16位)含DPL和DPHIE 0A8H 中断允许控制寄存器IP 0B8H 中断优先控制寄存器P0 80H I/O口0寄存器P1 90H I/O口1寄存器P2 0A0H I/O口2寄存器P3 0B0H I/O口3寄存器PCON 87H 电源控制及波特率选择寄存器SCON 98H 串行口控制寄存器SBUF 99H 串行数据缓冲寄存器TCON 88H 定时控制寄存器TMOD 89H 定时器方式选择寄存器TL0 8AH 定时器0低8位TH0 8CH 定时器0高8位TL1 8BH 定时器1低8位TH1 8DH 定时器1高8位程序计数器PC(program Counter)程序计数器在物理上是独立的,它不属于特殊内部数据存储器块中。

PC是一个16位的计数器,用于存放一条要执行的指令地址,寻址范围为64kB,PC有自动加1功能,即完成了一条指令的执行后,其内容自动加1。

PC本身并没有地址,因而不可寻址,用户无法对它进行读写,但是可以通过转移、调用、返回等指令改变其内容,以控制程序按我们的要求去执行。

累加器ACC(Accumulator)累加器A是一个最常用的专用寄存器,大部分单操作指令的一个操作数取自累加器,很多双操作数指令中的一个操作数也取自累加器。

加、减、乘、除法运算的指令,运算结果都存放于累加器A或AB累加器对中。

单片机89C51特殊功能寄存器

单片机89C51特殊功能寄存器

单片机89C51特殊功能寄存器高手从菜鸟忽略作起之(三)单片机共有21个特殊功能寄存器,下面从其功能,位结构,地址,读写方法对其作详细介绍。

一,特殊功能寄存器总述。

二,特殊功能寄存器分类:1.CPU控制类(6个):Acc,B,PSW,DPL,DPH,SP.2.中断控制类(2个):IE,IP.3.计数/定时类(6个):TMOD,TCON,TL0,TL1,TH0,TH1.4.并口端口类(4个):P0,P1,P2,P3.5.串口端口类(2个):SCON,SBUF.6.电源管理类(1个):PCON.三,特殊功能寄存器详述:1.CPU控制类(6个):Acc,B,PSW,DPL,DPH,SP1.1 Acc:累加器,可按位,字节访问。

1.2 B:辅助寄存器,用于进行乘除运算。

P:奇偶校验位:P=0:1的个数为奇数;P=1,1的个数为偶数。

---:保留位,没使用。

OV:Over flow,溢出标志,OV=0:没溢出;OV=1:溢出。

Rs0:Regedit select 0,寄存器选取0.RS1:Regedit select 1,寄存器选取1。

F0:User Flag bit:用户自定义位。

Ac: Auxiliary Carry,辅助进位标志,由低4位运算时,是否有向高4位进位。

Cy:Carry,进位标志。

字节运算时,是否有进位。

1.4 DPTL:Data Pointer Register Low,数据指针寄存器低8位。

1.5 DPTH:Data Pointer Register High,数据指针寄存器高8位。

1.6 SP: Stock Pointer:栈指针寄存器。

2.中断控制类寄存器(2个):IE,IPEX0: Enable Extra 0 ,INT0 中断允许位。

ET0: Enable Timer 0,C/T0 中断允许位。

EX1: Enable Extra 1 ,INT1 中断允许位。

ET1: Enable Timer 1,C/T1 中断允许位。

单片机寄存器_MCS-51单片机特殊功能寄存器详解

单片机寄存器_MCS-51单片机特殊功能寄存器详解

1、定时器/计数器的方式寄存器TMODTMOD是一个8位的特殊功能寄存器,对应的地址是89H,不可位寻址。

A.主要完成三个功能:*确定选择定时器还是计数器;*选择何种工作方式;*是否借用外中断控制定时器和计数器的启停;B.TMOD的低4位是控制T0的字段(T0--P3.4 定时器/计数器0外部事件脉冲输入端);TMOD的高4位是控制T1的字段(T1--P3.5定时器/计数器1外部事件脉冲输入端)C.控制字的格式和含义a、GATE(TMOD.7)分为两种情况:GATE=0,定时器的启停和INT1无关,只取决于TR0;GATE=1,定时器的启停不仅要由TR0来控制,而且要INT1引脚的控制,只有二者都为高电平时定时器才开始工作;b、C/T(TMOD.6)分为两种情况:C/T=0,用作定时器;C/T=1,用作计数器;d、M1(TMOD.5), M0(TMOD.4)用M1,M0来控制定时器/计数器的4种工作方式:*方式0:M1=0,M0=0.13位定时/计数方式*方式1:M1=0,M0=1.16位定时/计数器*方式2,M1=1,M0=0.8位初值自动重新装入的8位定时/计数器*方式3,M1=1,M0=1.仅适用于T0,分为两个8位计数器,T1停止计数2、定时器/计数器控制寄存器TCONTCON是一个8位的特殊功能寄存器,对应的地址为88H,可为寻址。

A 控制字的格式和含义a、TF1(TCON.7),TF0(TCON.5)----T1、T0计数溢出标志位当计数器计数溢出时,该位置“1”。

使用查询方式时,此位作为状态位供cpu查询,但应注意在查询该位有效后应以软件方法及时将该位清“0”。

使用中断方式时,此位作为中断申请标志位,进入中断服务程序后由硬件自动清0.b、TR1(TCON.6),TR0(TCON.4)----计数运行控制位TR1(TR0)=1,启动定时/计数器工作的必要条件,还与GATE位的状态有关。

80C51特殊功能寄存器地址表

80C51特殊功能寄存器地址表

80C51特殊功能寄存器地址表SFR MSB 位地址/位定义LSB 字节地址B F7 F6 F5 F4 F3 F2 F1 F0 F0HACC E7 E6 E5 E4 E3 E2 E1 E0 E0HPSW D7 D6 D5 D4 D3 D2 D1 D0 D0H CY AC F0 RS1 RS0 OV F1 PIP BF BE BD BC BB BA B9 B8 B8H ———PS PT1 PX1 PT0 PX0P3 B7 B6 B5 B4 B3 B2 B1 B0 B0H P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0IE AF AE AD AC AB AA A9 A8 A8H EA ——ES ET1 EX1 ET0 EX0P2A7 A6 A5 A4 A3 A2 A1 A0 A0H P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0SBUF (99H)SCON9F 9E 9D 9C 9B 9A 99 98 98H SM0 SM1 SM2 REN TB8 RB8 TI RIP197 96 95 94 93 92 91 90 90H P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0TH1 (8DH) TH0 (8CH) TX1 (8BH) TX0 (8AH)TMOD GATE C/T M1 M0 GATEC/T M1 M0 (89H)TCON8F 8E 8D 8C 8B 8A 89 88 88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0PCON SMOD ———GF1 GF0 PD IDL (87H)DPH (83H)DPL (82H)SP (81H)P0 87 86 85 84 83 82 81 80 80HP0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0/*--------- 8051内核特殊功能寄存器-------------*/sfr ACC = 0xE0; //累加器sfr B = 0xF0; //B 寄存器sfr PSW = 0xD0; //程序状态字寄存器sbit CY = PSW^7; //进位标志位sbit AC = PSW^6; //辅助进位标志位sbit F0 = PSW^5; //用户标志位0sbit RS1 = PSW^4; //工作寄存器组选择控制位sbit RS0 = PSW^3; //工作寄存器组选择控制位sbit OV = PSW^2; //溢出标志位sbit F1 = PSW^1; //用户标志位1sbit P = PSW^0; //奇偶标志位sfr SP = 0x81; //堆栈指针寄存器sfr DPL = 0x82; //数据指针0低字节sfr DPH = 0x83; //数据指针0高字节/*------------ 系统管理特殊功能寄存器-------------*/sfr PCON = 0x87; //电源控制寄存器sfr AUXR = 0x8E; //辅助寄存器sfr AUXR1 = 0xA2; //辅助寄存器1sfr WAKE_CLKO = 0x8F; //时钟输出和唤醒控制寄存器sfr CLK_DIV = 0x97; //时钟分频控制寄存器sfr BUS_SPEED = 0xA1; //总线速度控制寄存器/*----------- 中断控制特殊功能寄存器--------------*/sfr IE = 0xA8; //中断允许寄存器sbit EA = IE^7; //总中断允许位sbit ELVD = IE^6; //低电压检测中断控制位sbit EADC = IE^5; //ADC中断允许控制位sbit ES = IE^4; //串口1中断允许位sbit ET1 = IE^3; //定时器1溢出中断允许位sbit EX1 = IE^2; //外部中断1允许位sbit ET0 = IE^1; //定时器0溢出中断允许位sbit EX0 = IE^0; //外部中断0允许位sfr IE2 = 0xAF; //中断允许寄存器2sfr IP = 0xB8; //中断优先级寄存器sbit PPCA = IP^7; // PCA中断优先级控制位sbit PLVD = IP^6; //低电压检测中断优先级控制位sbit PADC = IP^5; //ADC中断优先级控制位sbit PS = IP^4; //串口1中断优先级控制位sbit PT1 = IP^3; //定时器1中断优先级控制位sbit PX1 = IP^2; //外部中断1优先级控制位sbit PT0 = IP^1; //定时器0中断优先级控制位sbit PX0 = IP^0; //外部中断0优先级控制位sfr IPH = 0xB7; //中断优先级高位寄存器sfr IP2 = 0xB5; //第二中断优先级寄存器低字节sfr IPH2 = 0xB6; //第二中断优先级寄存器高字节/*--------------- I/O 口特殊功能寄存器-------------------*/sfr P0 = 0x80; //P0口寄存器sfr P0M1 = 0x93; //P0口工作模式寄存器1sfr P0M0 = 0x94; //P0口工作模式寄存器0sfr P1 = 0x90; //P1口寄存器sfr P1M1 = 0x91; //P1口工作模式寄存器1sfr P1M0 = 0x92; //P1口工作模式寄存器0sfr P1ASF = 0x9D; //P1口模拟量功能设置寄存器sfr P2 = 0xA0; //P2口寄存器sfr P2M1 = 0x95; //P2口工作模式寄存器1sfr P2M0 = 0x96; //P2口工作模式寄存器0sfr P3 = 0xB0; //P3口寄存器sbit T1 = P3^5; //定时器1外部输入sbit T0 = P3^4; //定时器0外部输入sbit INT1 = P3^3; //外部中断1sbit INT0 = P3^2; //外部中断0sbit TXD = P3^1; //串行输入通道sbit RXD = P3^0; //串行输出通道sfr P3M1 = 0xB1; //P3口工作模式寄存器1sfr P3M0 = 0xB2; //P3口工作模式寄存器0sfr P4 = 0xC0; //P4口寄存器sfr P4M1 = 0xB3; //P4口工作模式寄存器1sfr P4M0 = 0xB4; //P4口工作模式寄存器0sfr P4SW = 0xBB; //P4口功能切换寄存器sfr P5 = 0xC8; //P5口(只有P5.3 P5.2 P5.1 P5.0)sfr P5M1 = 0xC9; //P5口工作模式寄存器1sfr P5M0 = 0xCA; //P5口工作模式寄存器0./*----------------- 定时器特殊功能寄存器-----------------*/sfr TCON = 0x88; //定时/计数控制寄存器sbit TF1 = TCON^7; //定时器1溢出中断标志sbit TR1 = TCON^6; //定时器1运行控制位sbit TF0 = TCON^5; //定时器0溢出中断标志sbit TR0 = TCON^4; //定时器0运行控制位sbit IE1 = TCON^3; //外部中断1请求标志sbit IT1 = TCON^2; //选择外部中断请求1为边沿触发方式的控制位sbit IE0 = TCON^1; //外部中断0请求标志sbit IT0 = TCON^0; //选择外部中断请求0为边沿触发方式的控制位sfr TMOD = 0x89; //定时/计数模式控制寄存器sfr TL0 = 0x8A; //定时/计数器0低字节sfr TH0 = 0x8C; //定时/计数器0高字节sfr TL1 = 0x8B; //定时/计数器1低字节sfr TH1 = 0x8D; //定时/计数器1高字节/*-------------- 串行口特殊功能寄存器------------------*/sfr SCON = 0x98; //串行口控制寄存器sbit SM0 = SCON^7; //串行口工作方式设定控制位0(与FE功能复用)sbit FE = SCON^7;sbit SM1 = SCON^6; //串行口工作方式设定控制位1sbit SM2 = SCON^5; //UART的SM2设定sbit REN = SCON^4; //接收允许位sbit TB8 = SCON^3; //发送数据的第九位sbit RB8 = SCON^2; //接收数据的第九位sbit TI = SCON^1; //发送中断标志sbit RI = SCON^0; //接收中断标志sfr SBUF = 0x99; //串口数据缓冲器sfr SADEN = 0xB9; //从机地址掩码寄存器sfr SADDR = 0xA9; //从机地址寄存器sfr S2CON = 0x9A; //串行口2控制寄存器sfr S2BUF = 0x9B; //串行口2数据缓冲器sfr BRT = 0x9C; //独立波特率定时器/*---------------- 看门狗定时器寄存器------------------*/sfr WDT_CONTR = 0xC1; //看门狗定时器控制寄存器/*---------------- PCA 寄存器-----------------*/sfr CCON = 0xD8; //PCA控制寄存器sbit CF = CCON^7; //PCA计数器溢出(CH,CL由FFFFH变为0000H)标志sbit CR = CCON^6; //PCA计数器计数允许控制位sbit CCF1 = CCON^1; //PCA模块1中断标志sbit CCF0 = CCON^0; //PCA模块0中断标志sfr CMOD = 0xD9; //PCA工作模式寄存器sfr CL = 0xE9; //PCA计数器低8位sfr CH = 0xF9; //PCA计数器高8位sfr CCAPM0 = 0xDA; //PAC模块0的工作模式寄存器sfr CCAPM1 = 0xDB; //PAC模块1的工作模式寄存器sfr CCAP0L = 0xEA; //PAC模块0捕捉/比较寄存器低8位sfr CCAP0H = 0xFA; //PAC模块0捕捉/比较寄存器高8位sfr CCAP1L = 0xEB; //PAC模块1捕捉/比较寄存器低8位sfr CCAP1H = 0xFB; //PAC模块1捕捉/比较寄存器高8位sfr PCA_PWM0 = 0xF2; //PCA模块0 PWM寄存器sfr PCA_PWM1 = 0xF3; //PCA模块1 PWM寄存器/*----------------- ADC 寄存器-----------------*/sfr ADC_CONTR = 0xBC; //ADC控制寄存器, 本寄存器不支持位操作sfr ADC_RES = 0xBD; //ADC转换结果高8位寄存器sfr ADC_RESL = 0xBE; //ADC转换结果低2位寄存器/*---------------- SPI 寄存器--------------------*/sfr SPSTA T = 0xCD; //SPI状态寄存器,本寄存器不支持位操作sfr SPCTL = 0xCE; //SPI控制寄存器sfr SPDAT = 0xCF; //SPI数据寄存器/*----------------- ISP_IAP_EEPROM 寄存器------------------*/sfr IAP_DA TA = 0xC2; //ISP/IAP Flash数据寄存器sfr IAP_ADDRH = 0xC3; //ISP/IAP Flash地址高字节sfr IAP_ADDRL = 0xC4; //ISP/IAP Flash地址低字节sfr IAP_CMD = 0xC5; //ISP/IAP Flash命令寄存器sfr IAP_TRIG = 0xC6; //ISP/IAP Flash命令触发器sfr IAP_CONTR = 0xC7; //ISP/IAP控制寄存器Love is not a maybe thing. You know when you love someone.。

51单片机特殊功能寄存器

51单片机特殊功能寄存器

51单⽚机特殊功能寄存器51单⽚机特殊功能寄存器(SFR)介绍作者:huqin 来源:本站原创点击数: 5937 更新时间:2013年12⽉28⽇【字体:⼤中⼩】1、21个寄存器介绍51系列单⽚机内部主要有四⼤功能模块,分别是I/O⼝模块、中断模块、定时器模块和串⼝通信模块(串⾏I/O⼝),如其结构和功能如下图:图1 51单⽚机结构和功能图51单⽚机掌握的好坏,其实就是能否正确操作这四个功能模块,⽽其操作的实质则⼜是能否对每个模块所对应寄存器的正确操纵。

所以下⾯重点介绍⼀下51系列单⽚机内部的特殊功能寄存器(简称SFR,以下说明以此代替)。

(关于什么叫特殊功能寄存器,这⾥先不作介绍,不懂的请查阅51单⽚机相关资料。

)51单⽚机内部共有21个SFR,其布局如图2,从图中可以看出,每个SFR 占1个字节,多数字节单元中的每⼀位⼜有专⽤的“位名称”。

这21个SFR⼜按是否可以位寻址分为两⼤部分,ACC、IE、P1等11个可以位寻址,SP、TMOD 等不可以位寻址。

图2 51单⽚机SFR布局图2、位寻址解释下⾯以P1、IE寄存器(可位寻)和TMOD(不可位发)为例解释⼀下位寻址。

能位寻址是指能够对它的每⼀位都可以进⾏位操作,如图3,如P1⼝接8个灯,灯阳极接正极,阴极接单⽚机的P1⼝的8个脚。

现在要让接P1⼝第1个引脚的灯亮,程序中可以写P1=0xfe,也可以先定义deng1=P1^0,即P1⼝的第1位,⾄于为什么写P1^0,是因为KEIL软件规定的,然后deng1=0。

也就是P1=0xfe和deng1=0都是可以点亮第⼀个灯,后者deng1=0属于位操作,前者P1 =0xfe属于总线操作,也就是8个引脚⼀起操作。

图3 8位灯接线图下⾯再以IE寄存器为例进⾏位操作的解释。

IE寄存器为中断允许寄存器,如各位的作⽤如图4.其中第7位EA是51单⽚机5个中断的总开关,如要进⼊任何⼀个中断时,需先把EA打开,因为可以进⾏位操作,此时程序有两种写法:1)IE=0x80(假如其它位为0,即1000 0000),也可以直接写EA=1,后者EA=1即属于位操作。

MCS-51单片机的(SFR)特殊功能寄存器

MCS-51单片机的(SFR)特殊功能寄存器

MCS-51单片机的特殊功能寄存器从图中我们可以看出,在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。

在一个51单片机的内部包含了这么多的东西。

对图进行进一步的分析,我们已知,对并行I/O口的读写只要将数据送入到相应I/O 口的锁存器就可以了,那么对于定时/计数器,串行I/O口等怎么用呢?在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。

事实上,我们已接触过P1这个特殊功能寄存器了,还有哪些呢?看下表下面,我们介绍一下几个常用的SFR。

1、ACC---是累加器,通常用A表示。

这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。

它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。

自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。

该标志常用作程序分枝转移的判断条件。

2、B--一个寄存器。

在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。

3指针寄存器(1)程序计数器PC指明即将执行的下一条指令的地址,16位,寻址64KB范围,复位时PC = 0000H(2)堆栈指针SP指明栈顶元素的地址,8位,可软件设置初值,复位时SP = 07H(3)数据指针DPTR@R0、@R1、@DPTR;指明访问的数据存储器的单元地址,16位,寻址范围64KB。

DPTR = DPH + DPL。

可以用它来访问外部数据存储器中的任一单元,如果不用,也可以作为通用寄存器来用,由我们自已决定如何使用。

分成DPL(低8位)和DPH(高8位)两个寄存器。

用来存放16位地址值,以便用间接寻址或变址寻址的方式对片外数据RAM或程序存储器作64K字节范围内的数据操作4、PSW-----程序状态字。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/************************************************************ * 特殊功能寄存器地址和控制位************************************************************/ /*中断使能1*/#define IE1_ 0x0000sfrb IE1 = IE1_;#define WDTIE 0x01 /*看门狗中断使能*/#define OFIE 0x02 /*外部晶振故障中断使能*/#define NMIIE 0x10 /*非屏蔽中断使能*/#define ACCVIE 0x20 /*可屏蔽中断使能/flash写中断错误*/ #define URXIE0 0x40 /*串口0接收中断使能*/#define UTXIE0 0x80 /*串口0发送中断使能*//*中断标志1*/#define IFG1_ 0x0002sfrb IFG1 = IFG1_;#define WDTIFG 0x01 /*看门狗中断标志*/#define OFIFG 0x02 /*外部晶振故障中断标志*/#define NMIIFG 0x10 /*非屏蔽中断标志*/#define URXIFG0 0x40 /*串口0接收中断标志*/#define UTXIFG0 0x80 /*串口0发送中断标志*//* 中断模式使能1 */#define ME1_ 0x0004sfrb ME1 = ME1_;#define URXE0 0x40 /* 串口0接收中断模式使能 */#define USPIE0 0x40 /* 同步中断模式使能 */#define UTXE0 0x80 /* 串口0发送中断模式使能 *//* 中断使能2 */#define IE2_ 0x0001sfrb IE2 = IE2_;#define URXIE1 0x10 /* 串口1接收中断使能 */#define UTXIE1 0x20 /* 串口1发送中断使能 *//* 中断标志2 */#define IFG2_ 0x0003sfrb IFG2 = IFG2_;#define URXIFG1 0x10 /* 串口1接收中断标志 */#define UTXIFG1 0x20 /* 串口1发送中断标志 *//* 中断模式使能2 */#define ME2_ 0x0005sfrb ME2 = ME2_;#define URXE1 0x10 /* 串口1接收中断模式使能 */#define USPIE1 0x10 /* 同步中断模式使能 */#define UTXE1 0x20 /* 串口1发送中断模式使能 *//************************************************************* 看门狗定时器的寄存器定义************************************************************/#define WDTCTL_ 0x0120sfrw WDTCTL = WDTCTL_;#define WDTIS0 0x0001 /*选择WDTCNT的四个输出端之一*/#define WDTIS1 0x0002 /*选择WDTCNT的四个输出端之一*/#define WDTSSEL 0x0004 /*选择WDTCNT的时钟源*/#define WDTCNTCL 0x0008 /*清除WDTCNT端: 为1时从0开始计数*/#define WDTTMSEL 0x0010 /*选择模式 0: 看门狗模式; 1: 定时器模式*/#define WDTNMI 0x0020 /*选择NMI/RST 引脚功能 0:为 RST; 1:为NMI*/#define WDTNMIES 0x0040 /*WDTNMI=1时.选择触发延 0:为上升延 1:为下降延*/#define WDTHOLD 0x0080 /*停止看门狗定时器工作 0:启动;1:停止*/#define WDTPW 0x5A00 /* 写密码:高八位*//* SMCLK= 1MHz定时器模式 */#define WDT_MDLY_32 WDTPW+WDTTMSEL+WDTCNTCL /* TSMCLK*2POWER15= 32ms 复位状态 */#define WDT_MDLY_8 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0 /* TSMCLK*2POWE R13=8.192ms " */#define WDT_MDLY_0_5 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1 /* TSMCLK*2POW ER9=0.512ms " */#define WDT_MDLY_0_064 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1+WDTIS0 /* TSMCLK* 2POWER6=0.512ms " *//* ACLK=32.768KHz 定时器模式*/#define WDT_ADLY_1000 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL /* TACLK*2POW ER15=1000ms " */#define WDT_ADLY_250 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS0 /* TACLK*2 POWER13=250ms " */#define WDT_ADLY_16 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1 /* TACLK*2 POWER9=16ms " */#define WDT_ADLY_1_9 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0 /* TAC LK*2POWER6=1.9ms " *//* SMCLK=1MHz看门狗模式 */#define WDT_MRST_32 WDTPW+WDTCNTCL /* TSMCLK*2POWER15=32ms 复位状态 */#define WDT_MRST_8 WDTPW+WDTCNTCL+WDTIS0 /* TSMCLK*2POWER13=8.19 2ms " */#define WDT_MRST_0_5 WDTPW+WDTCNTCL+WDTIS1 /* TSMCLK*2POWER9=0.51 2ms " */#define WDT_MRST_0_064 WDTPW+WDTCNTCL+WDTIS1+WDTIS0 /* TSMCLK*2POWER 6=0.512ms " *//* ACLK=32KHz看门狗模式 */#define WDT_ARST_1000 WDTPW+WDTCNTCL+WDTSSEL /* TACLK*2POWER15=10 00ms " */#define WDT_ARST_250 WDTPW+WDTCNTCL+WDTSSEL+WDTIS0 /* TACLK*2POWER1 3=250ms " */#define WDT_ARST_16 WDTPW+WDTCNTCL+WDTSSEL+WDTIS1 /* TACLK*2POWER9 =16ms " */#define WDT_ARST_1_9 WDTPW+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0 /* TACLK*2PO WER6=1.9ms " *//************************************************************硬件乘法器的寄存器定义************************************************************/#define MPY_ 0x0130 /* 无符号乘法 */sfrw MPY = MPY_;#define MPYS_ 0x0132 /* 有符号乘法*/sfrw MPYS = MPYS_;#define MAC_ 0x0134 /* 无符号乘加 */sfrw MAC = MAC_;#define MACS_ 0x0136 /* 有符号乘加 */sfrw MACS = MACS_;#define OP2_ 0x0138 /* 第二乘数 */sfrw OP2 = OP2_;#define RESLO_ 0x013A /* 低6位结果寄存器 */sfrw RESLO = RESLO_;#define RESHI_ 0x013C /* 高6位结果寄存器 */sfrw RESHI = RESHI_;#define SUMEXT_ 0x013E /*结果扩展寄存器 */const sfrw SUMEXT = SUMEXT_;/************************************************************* DIGITAL I/O Port1/2 寄存器定义有中断功能************************************************************/#define P1IN_ 0x0020 /* P1 输入寄存器 */const sfrb P1IN = P1IN_;#define P1OUT_ 0x0021 /* P1 输出寄存器 */sfrb P1OUT = P1OUT_;#define P1DIR_ 0x0022 /* P1 方向选择寄存器 */sfrb P1DIR = P1DIR_;#define P1IFG_ 0x0023 /* P1 中断标志寄存器*/sfrb P1IFG = P1IFG_;#define P1IES_ 0x0024 /* P1 中断边沿选择寄存器*/sfrb P1IES = P1IES_;#define P1IE_ 0x0025 /* P1 中断使能寄存器 */sfrb P1IE = P1IE_;#define P1SEL_ 0x0026 /* P1 功能选择寄存器*/sfrb P1SEL = P1SEL_;#define P2IN_ 0x0028 /* P2 输入寄存器 */const sfrb P2IN = P2IN_;#define P2OUT_ 0x0029 /* P2 输出寄存器 */sfrb P2OUT = P2OUT_;#define P2DIR_ 0x002A /* P2 方向选择寄存器 */sfrb P2DIR = P2DIR_;#define P2IFG_ 0x002B /* P2 中断标志寄存器 */sfrb P2IFG = P2IFG_;#define P2IES_ 0x002C /* P2 中断边沿选择寄存器 */sfrb P2IES = P2IES_;#define P2IE_ 0x002D /* P2 中断使能寄存器 */sfrb P2IE = P2IE_;#define P2SEL_ 0x002E /* P2 功能选择寄存器 */sfrb P2SEL = P2SEL_;/************************************************************ * DIGITAL I/O Port3/4寄存器定义无中断功能************************************************************/#define P3IN_ 0x0018 /* P3 输入寄存器 */const sfrb P3IN = P3IN_;#define P3OUT_ 0x0019 /* P3 输出寄存器 */sfrb P3OUT = P3OUT_;#define P3DIR_ 0x001A /* P3 方向选择寄存器 */sfrb P3DIR = P3DIR_;#define P3SEL_ 0x001B /* P3 功能选择寄存器*/sfrb P3SEL = P3SEL_;#define P4IN_ 0x001C /* P4 输入寄存器 */const sfrb P4IN = P4IN_;#define P4OUT_ 0x001D /* P4 输出寄存器 */sfrb P4OUT = P4OUT_;#define P4DIR_ 0x001E /* P4 方向选择寄存器 */sfrb P4DIR = P4DIR_;#define P4SEL_ 0x001F /* P4 功能选择寄存器 */sfrb P4SEL = P4SEL_;/************************************************************ * DIGITAL I/O Port5/6 I/O口寄存器定义PORT5和6 无中断功能************************************************************/#define P5IN_ 0x0030 /* P5 输入寄存器 */const sfrb P5IN = P5IN_;#define P5OUT_ 0x0031 /* P5 输出寄存器*/sfrb P5OUT = P5OUT_;#define P5DIR_ 0x0032 /* P5 方向选择寄存器*/sfrb P5DIR = P5DIR_;#define P5SEL_ 0x0033 /* P5 功能选择寄存器*/sfrb P5SEL = P5SEL_;#define P6IN_ 0x0034 /* P6 输入寄存器 */const sfrb P6IN = P6IN_;#define P6OUT_ 0x0035 /* P6 输出寄存器*/sfrb P6OUT = P6OUT_;#define P6DIR_ 0x0036 /* P6 方向选择寄存器*/sfrb P6DIR = P6DIR_;#define P6SEL_ 0x0037 /* P6 功能选择寄存器*/sfrb P6SEL = P6SEL_;************************************************************ * ADC12 A/D采样寄存器定义************************************************************/ /*ADC12转换控制类寄存器*/#define ADC12CTL0_ 0x0;' /* ADC12 Control 0 */sfrw ADC12CTL0 = ADC12CTL0_;#define ADC12CTL1_ 0x01A2 /* ADC12 Control 1 */sfrw ADC12CTL1 = ADC12CTL1_;/*ADC12中断控制类寄存器*/#define ADC12IFG_ 0x01A4 /* ADC12 Interrupt Flag */sfrw ADC12IFG = ADC12IFG_;#define ADC12IE_ 0x01A6 /* ADC12 Interrupt Enable */sfrw ADC12IE = ADC12IE_;#define ADC12IV_ 0x01A8 /* ADC12 Interrupt Vector Word */sfrw ADC12IV = ADC12IV_;/*ADC12存贮器类寄存器*/#define ADC12MEM_ 0x0140 /* ADC12 Conversion Memory */#ifndef __IAR_SYSTEMS_ICC#define ADC12MEM ADC12MEM_ /* ADC12 Conversion Memory (for assembler) */ #else#define ADC12MEM ((int*) ADC12MEM_) /* ADC12 Conversion Memory (for C) */ #endif#define ADC12MEM0_ ADC12MEM_ /* ADC12 Conversion Memory 0 */sfrw ADC12MEM0 = ADC12MEM0_;#define ADC12MEM1_ 0x0142 /* ADC12 Conversion Memory 1 */sfrw ADC12MEM1 = ADC12MEM1_;#define ADC12MEM2_ 0x0144 /* ADC12 Conversion Memory 2 */sfrw ADC12MEM2 = ADC12MEM2_;#define ADC12MEM3_ 0x0146 /* ADC12 Conversion Memory 3 */sfrw ADC12MEM3 = ADC12MEM3_;#define ADC12MEM4_ 0x0148 /* ADC12 Conversion Memory 4 */sfrw ADC12MEM4 = ADC12MEM4_;#define ADC12MEM5_ 0x014A /* ADC12 Conversion Memory 5 */sfrw ADC12MEM5 = ADC12MEM5_;#define ADC12MEM6_ 0x014C /* ADC12 Conversion Memory 6 */sfrw ADC12MEM6 = ADC12MEM6_;#define ADC12MEM7_ 0x014E /* ADC12 Conversion Memory 7 */sfrw ADC12MEM7 = ADC12MEM7_;#define ADC12MEM8_ 0x0150 /* ADC12 Conversion Memory 8 */sfrw ADC12MEM8 = ADC12MEM8_;#define ADC12MEM9_ 0x0152 /* ADC12 Conversion Memory 9 */sfrw ADC12MEM9 = ADC12MEM9_;#define ADC12MEM10_ 0x0154 /* ADC12 Conversion Memory 10 */sfrw ADC12MEM10 = ADC12MEM10_;#define ADC12MEM11_ 0x0156 /* ADC12 Conversion Memory 11 */sfrw ADC12MEM11 = ADC12MEM11_;#define ADC12MEM12_ 0x0158 /* ADC12 Conversion Memory 12 */sfrw ADC12MEM12 = ADC12MEM12_;#define ADC12MEM13_ 0x015A /* ADC12 Conversion Memory 13 */sfrw ADC12MEM13 = ADC12MEM13_;#define ADC12MEM14_ 0x015C /* ADC12 Conversion Memory 14 */sfrw ADC12MEM14 = ADC12MEM14_;#define ADC12MEM15_ 0x015E /* ADC12 Conversion Memory 15 */sfrw ADC12MEM15 = ADC12MEM15_;/*ADC12存贮控制类寄存器*/#define ADC12MCTL_ 0x0080 /* ADC12 Memory Control */#ifndef __IAR_SYSTEMS_ICC#define ADC12MCTL ADC12MCTL_ /* ADC12 Memory Control (for assembler) */ #else#define ADC12MCTL ((char*) ADC12MCTL_) /* ADC12 Memory Control (for C) */ #endif#define ADC12MCTL0_ ADC12MCTL_ /* ADC12 Memory Control 0 */sfrb ADC12MCTL0 = ADC12MCTL0_;#define ADC12MCTL1_ 0x0081 /* ADC12 Memory Control 1 */sfrb ADC12MCTL1 = ADC12MCTL1_;#define ADC12MCTL2_ 0x0082 /* ADC12 Memory Control 2 */sfrb ADC12MCTL2 = ADC12MCTL2_;#define ADC12MCTL3_ 0x0083 /* ADC12 Memory Control 3 */sfrb ADC12MCTL3 = ADC12MCTL3_;#define ADC12MCTL4_ 0x0084 /* ADC12 Memory Control 4 */sfrb ADC12MCTL4 = ADC12MCTL4_;#define ADC12MCTL5_ 0x0085 /* ADC12 Memory Control 5 */sfrb ADC12MCTL5 = ADC12MCTL5_;#define ADC12MCTL6_ 0x0086 /* ADC12 Memory Control 6 */sfrb ADC12MCTL6 = ADC12MCTL6_;#define ADC12MCTL7_ 0x0087 /* ADC12 Memory Control 7 */sfrb ADC12MCTL7 = ADC12MCTL7_;#define ADC12MCTL8_ 0x0088 /* ADC12 Memory Control 8 */sfrb ADC12MCTL8 = ADC12MCTL8_;#define ADC12MCTL9_ 0x0089 /* ADC12 Memory Control 9 */sfrb ADC12MCTL9 = ADC12MCTL9_;#define ADC12MCTL10_ 0x008A /* ADC12 Memory Control 10 */sfrb ADC12MCTL10 = ADC12MCTL10_;#define ADC12MCTL11_ 0x008B /* ADC12 Memory Control 11 */sfrb ADC12MCTL11 = ADC12MCTL11_;#define ADC12MCTL12_ 0x008C /* ADC12 Memory Control 12 */sfrb ADC12MCTL12 = ADC12MCTL12_;#define ADC12MCTL13_ 0x008D /* ADC12 Memory Control 13 */sfrb ADC12MCTL13 = ADC12MCTL13_;#define ADC12MCTL14_ 0x008E /* ADC12 Memory Control 14 */sfrb ADC12MCTL14 = ADC12MCTL14_;#define ADC12MCTL15_ 0x008F /* ADC12 Memory Control 15 */sfrb ADC12MCTL15 = ADC12MCTL15_;/* ADC12CTL0 内8位控制寄存器位*/#define ADC12SC 0x001 /*采样/转换控制位*/#define ENC 0x002 /* 转换允许位*/#define ADC12TOVIE 0x004 /*转换时间溢出中断允许位*/#define ADC12OVIE 0x008 /*溢出中断允许位*/#define ADC12ON 0x010 /*ADC12内核控制位*/#define REFON 0x020 /*参考电压控制位*/#define REF2_5V 0x040 /*内部参考电压的电压值选择位 '0'为1.5V; '1'为2.5V*/ #define MSH 0x080 /*多次采样/转换位*/#define MSC 0x080 /*多次采样/转换位*//*SHT0 采样保持定时器0 控制ADC12的结果存贮器MEM0~MEM7的采样周期*/#define SHT0_0 0*0x100 /*采样周期=TADC12CLK*4 */#define SHT0_1 1*0x100 /*采样周期=TADC12CLK*8 */#define SHT0_2 2*0x100 /*采样周期=TADC12CLK*16 */#define SHT0_3 3*0x100 /*采样周期=TADC12CLK*32 */#define SHT0_4 4*0x100 /*采样周期=TADC12CLK*64 */#define SHT0_5 5*0x100 /*采样周期=TADC12CLK*96 */#define SHT0_6 6*0x100 /*采样周期=TADC12CLK*128 */#define SHT0_7 7*0x100 /*采样周期=TADC12CLK*192 */#define SHT0_8 8*0x100 /*采样周期=TADC12CLK*256 */#define SHT0_9 9*0x100 /*采样周期=TADC12CLK*384 */#define SHT0_10 10*0x100 /*采样周期=TADC12CLK*512 */#define SHT0_11 11*0x100 /*采样周期=TADC12CLK*768 */#define SHT0_12 12*0x100 /*采样周期=TADC12CLK*1024 */#define SHT0_13 13*0x100 /*采样周期=TADC12CLK*1024 */#define SHT0_14 14*0x100 /*采样周期=TADC12CLK*1024 */#define SHT0_15 15*0x100 /*采样周期=TADC12CLK*1024 *//*SHT1 采样保持定时器1 控制ADC12的结果存贮器MEM8~MEM15的采样周期*/#define SHT1_0 0*0x100 /*采样周期=TADC12CLK*4 */#define SHT1_1 1*0x100 /*采样周期=TADC12CLK*8 */#define SHT1_2 2*0x100 /*采样周期=TADC12CLK*16 */#define SHT1_3 3*0x100 /*采样周期=TADC12CLK*32 */#define SHT1_4 4*0x100 /*采样周期=TADC12CLK*64 */#define SHT1_5 5*0x100 /*采样周期=TADC12CLK*96 */#define SHT1_6 6*0x100 /*采样周期=TADC12CLK*128 */#define SHT1_7 7*0x100 /*采样周期=TADC12CLK*192 */#define SHT1_8 8*0x100 /*采样周期=TADC12CLK*256 */#define SHT1_9 9*0x100 /*采样周期=TADC12CLK*384 */#define SHT1_10 10*0x100 /*采样周期=TADC12CLK*512 */#define SHT1_11 11*0x100 /*采样周期=TADC12CLK*768 */#define SHT1_12 12*0x100 /*采样周期=TADC12CLK*1024 */#define SHT1_13 13*0x100 /*采样周期=TADC12CLK*1024 */#define SHT1_14 14*0x100 /*采样周期=TADC12CLK*1024 */#define SHT1_15 15*0x100 /*采样周期=TADC12CLK*1024 *//* ADC12CTL1 内8位控制寄存器位*/#define ADC12BUSY 0x0001 /*ADC12忙标志位*/#define CONSEQ_1 1*2 /*序列通道单次转换*/#define CONSEQ_2 2*2 /*单通道多次转换*/#define CONSEQ_3 3*2 /*序列通道多次转换*/#define ADC12SSEL_0 0*8 /*ADC12内部时钟源*/#define ADC12SSEL_1 1*8 /*ACLK*/#define ADC12SSEL_2 2*8 /*MCLK*/#define ADC12SSEL_3 3*8 /*SCLK*/#define ADC12DIV_0 0*0x20 /*1分频*/#define ADC12DIV_1 1*0x20 /*2分频*/#define ADC12DIV_2 2*0x20 /*3分频*/#define ADC12DIV_3 3*0x20 /*4分频*/#define ADC12DIV_4 4*0x20 /*5分频*/#define ADC12DIV_5 5*0x20 /*6分频*/#define ADC12DIV_6 6*0x20 /*7分频*/#define ADC12DIV_7 7*0x20 /*8分频*/#define ISSH 0x0100 /*采样输入信号反向与否控制位*/#define SHP 0x0200 /*采样信号(SAMPCON)选择控制位*/#define SHS_0 0*0x400 /*采样信号输入源选择控制位 ADC12SC*/#define SHS_1 1*0x400 /*采样信号输入源选择控制位 TIMER_A.OUT1*/ #define SHS_2 2*0x400 /*采样信号输入源选择控制位 TIMER_B.OUT0*/ #define SHS_3 3*0x400 /*采样信号输入源选择控制位 TIMER_B.OUT1*/ /*转换存贮器地址定义位*/#define CSTARTADD_0 0*0x1000 /*选择MEM0首地址*/#define CSTARTADD_1 1*0x1000 /*选择MEM1首地址*/#define CSTARTADD_2 2*0x1000 /*选择MEM2首地址*/#define CSTARTADD_3 3*0x1000 /*选择MEM3首地址*/#define CSTARTADD_4 4*0x1000 /*选择MEM4首地址*/#define CSTARTADD_5 5*0x1000 /*选择MEM5首地址*/#define CSTARTADD_6 6*0x1000 /*选择MEM6首地址*/#define CSTARTADD_7 7*0x1000 /*选择MEM7首地址*/#define CSTARTADD_8 8*0x1000 /*选择MEM8首地址*/#define CSTARTADD_9 9*0x1000 /*选择MEM9首地址*/#define CSTARTADD_10 10*0x1000 /*选择MEM10首地址*/#define CSTARTADD_11 11*0x1000 /*选择MEM11首地址*/#define CSTARTADD_12 12*0x1000 /*选择MEM12首地址*/#define CSTARTADD_13 13*0x1000 /*选择MEM13首地址*/#define CSTARTADD_14 14*0x1000 /*选择MEM14首地址*/#define CSTARTADD_15 15*0x1000 /*选择MEM15首地址*//* ADC12MCTLx */#define INCH_0 0 /*选择模拟量通道0 A0 */#define INCH_1 1 /*选择模拟量通道0 A1*/#define INCH_2 2 /*选择模拟量通道0 A2*/#define INCH_4 4 /*选择模拟量通道0 A4*/#define INCH_5 5 /*选择模拟量通道0 A5*/#define INCH_6 6 /*选择模拟量通道0 A6*/#define INCH_7 7 /*选择模拟量通道0 A7*/#define INCH_8 8 /*VEREF+*/#define INCH_9 9 /*VEREF-*/#define INCH_10 10 /*片内温度传感器的输出*/#define INCH_11 11 /*(A VCC-A VSS)/2*/#define INCH_12 12 /*(A VCC-A VSS)/2*/#define INCH_13 13 /*(A VCC-A VSS)/2*/#define INCH_14 14 /*(A VCC-A VSS)/2*/#define INCH_15 15 /*(A VCC-A VSS)/2*//*参考电压源选择位*/#define SREF_0 0*0x10 /*VR+ = A VCC; VR- = A VSS*/#define SREF_1 1*0x10 /*VR+ = VREF+; VR- = A VSS*/#define SREF_2 2*0x10 /*VR+ = VEREF+; VR- = A VSS*/#define SREF_3 3*0x10 /*VR+ = VEREF+; VR- = A VSS*/#define SREF_4 4*0x10 /*VR+ = A VCC; VR- = VREF-*/#define SREF_5 5*0x10 /*VR+ = VREF+; VR- = VREF-*/#define SREF_6 6*0x10 /*VR+ = VEREF+; VR- = VREF-*/#define SREF_7 7*0x10 /*VR+ = VEREF+; VR- = VREF-*/#define EOS 0x80 /*序列结束选择位*//************************************************************* USART 串口寄存器"UCTL","UTCTL","URCTL"定义的各个位可串口1 串口2公用************************************************************//* UCTL 串口控制寄存器*/#define PENA 0x80 /*校验允许位*/#define PEV 0x40 /*偶校验为0时为奇校验*/#define SPB 0x20 /*停止位为2 为0时停止位为1*/#define CHAR 0x10 /*数据位为8位为0时数据位为7位*/#define LISTEN 0x08 /*自环模式(发数据同时在把发的数据接收回来)*/#define SYNC 0x04 /*同步模式为0异步模式*/#define MM 0x02 /*为1时地址位多机协议(异步) 主机模式(同步);为0时线路空闲多机协议(异步) 从机模式(同步)*/#define SWRST 0x01 /*控制位*//* UTCTL 串口发送控制寄存器*/#define CKPH 0x80 /*时钟相位控制位(只同步方式用)为1时时钟UCLK延时半个周期*/ #define CKPL 0x40 /*时钟极性控制位为1时异步与UCLK相反;同步下降延有效*/#define SSEL1 0x20 /*时钟源选择位:与SSEL0组合为0,1,2,3四种方式*/#define SSEL0 0x10 /*"0"选择外部时钟,"1"选择辅助时钟,"2","3"选择系统子时钟 */#define URXSE 0x08 /*接收触发延控制位(只在异步方式下用)*/#define TXWAKE 0x04 /*多处理器通信传送控制位(只在异步方式下用)*/#define STC 0x02 /*外部引脚STE选择位为0时为4线模式为1时为3线模式*/#define TXEPT 0x01 /*发送器空标志*//* URCTL 串口接收控制寄存器同步模式下只用两位:FE和OE*/#define FE 0x80 /*帧错标志*/#define PE 0x40 /*校验错标志位*/#define OE 0x20 /*溢出标志位*/#define BRK 0x10 /*打断检测位*/#define URXEIE 0x08 /*接收出错中断允许位*/#define URXWIE 0x04 /*接收唤醒中断允许位*/#define RXWAKE 0x02 /*接收唤醒检测位*/#define RXERR 0x01 /*接收错误标志位*//************************************************************* USART 0 串口0寄存器定义************************************************************/#define U0CTL_ 0x0070 /* UART 0 Control */sfrb U0CTL = U0CTL_;#define U0TCTL_ 0x0071 /* UART 0 Transmit Control */sfrb U0TCTL = U0TCTL_;#define U0RCTL_ 0x0072 /* UART 0 Receive Control */sfrb U0RCTL = U0RCTL_;#define U0MCTL_ 0x0073 /* UART 0 Modulation Control */sfrb U0MCTL = U0MCTL_;#define U0BR0_ 0x0074 /* UART 0 Baud Rate 0 */sfrb U0BR0 = U0BR0_;#define U0BR1_ 0x0075 /* UART 0 Baud Rate 1 */sfrb U0BR1 = U0BR1_;#define U0RXBUF_ 0x0076 /* UART 0 Receive Buffer */const sfrb U0RXBUF = U0RXBUF_;#define U0TXBUF_ 0x0077 /* UART 0 Transmit Buffer */sfrb U0TXBUF = U0TXBUF_;/* Alternate register names */#define UCTL0_ 0x0070 /* UART 0 Control */sfrb UCTL0 = UCTL0_;#define UTCTL0_ 0x0071 /* UART 0 Transmit Control */sfrb UTCTL0 = UTCTL0_;#define URCTL0_ 0x0072 /* UART 0 Receive Control */sfrb URCTL0 = URCTL0_;#define UMCTL0_ 0x0073 /* UART 0 Modulation Control */sfrb UMCTL0 = UMCTL0_;#define UBR00_ 0x0074 /* UART 0 Baud Rate 0 */sfrb UBR00 = UBR00_;#define UBR10_ 0x0075 /* UART 0 Baud Rate 1 */sfrb UBR10 = UBR10_;#define RXBUF0_ 0x0076 /* UART 0 Receive Buffer */const sfrb RXBUF0 = RXBUF0_;#define TXBUF0_ 0x0077 /* UART 0 Transmit Buffer */sfrb TXBUF0 = TXBUF0_;#define UCTL_0_ 0x0070 /* UART 0 Control */sfrb UCTL_0 = UCTL_0_;#define UTCTL_0_ 0x0071 /* UART 0 Transmit Control */sfrb UTCTL_0 = UTCTL_0_;#define URCTL_0_ 0x0072 /* UART 0 Receive Control */sfrb URCTL_0 = URCTL_0_;#define UMCTL_0_ 0x0073 /* UART 0 Modulation Control */ sfrb UMCTL_0 = UMCTL_0_;#define UBR0_0_ 0x0074 /* UART 0 Baud Rate 0 */sfrb UBR0_0 = UBR0_0_;#define UBR1_0_ 0x0075 /* UART 0 Baud Rate 1 */sfrb UBR1_0 = UBR1_0_;#define RXBUF_0_ 0x0076 /* UART 0 Receive Buffer */const sfrb RXBUF_0 = RXBUF_0_;#define TXBUF_0_ 0x0077 /* UART 0 Transmit Buffer */sfrb TXBUF_0 = TXBUF_0_;/************************************************************ * USART 1 串口1寄存器定义************************************************************/#define U1CTL_ 0x0078 /* UART 1 Control */sfrb U1CTL = U1CTL_;#define U1TCTL_ 0x0079 /* UART 1 Transmit Control */sfrb U1TCTL = U1TCTL_;#define U1RCTL_ 0x007A /* UART 1 Receive Control */sfrb U1RCTL = U1RCTL_;#define U1MCTL_ 0x007B /* UART 1 Modulation Control */ sfrb U1MCTL = U1MCTL_;#define U1BR0_ 0x007C /* UART 1 Baud Rate 0 */sfrb U1BR0 = U1BR0_;#define U1BR1_ 0x007D /* UART 1 Baud Rate 1 */sfrb U1BR1 = U1BR1_;#define U1RXBUF_ 0x007E /* UART 1 Receive Buffer */ const sfrb U1RXBUF = U1RXBUF_;#define U1TXBUF_ 0x007F /* UART 1 Transmit Buffer */ sfrb U1TXBUF = U1TXBUF_;#define UCTL1_ 0x0078 /* UART 1 Control */sfrb UCTL1 = UCTL1_;#define UTCTL1_ 0x0079 /* UART 1 Transmit Control */ sfrb UTCTL1 = UTCTL1_;#define URCTL1_ 0x007A /* UART 1 Receive Control */ sfrb URCTL1 = URCTL1_;#define UMCTL1_ 0x007B /* UART 1 Modulation Control */ sfrb UMCTL1 = UMCTL1_;#define UBR01_ 0x007C /* UART 1 Baud Rate 0 */sfrb UBR01 = UBR01_;#define UBR11_ 0x007D /* UART 1 Baud Rate 1 */sfrb UBR11 = UBR11_;#define RXBUF1_ 0x007E /* UART 1 Receive Buffer */ const sfrb RXBUF1 = RXBUF1_;#define TXBUF1_ 0x007F /* UART 1 Transmit Buffer */sfrb TXBUF1 = TXBUF1_;#define UCTL_1_ 0x0078 /* UART 1 Control */sfrb UCTL_1 = UCTL_1_;#define UTCTL_1_ 0x0079 /* UART 1 Transmit Control */ sfrb UTCTL_1 = UTCTL_1_;#define URCTL_1_ 0x007A /* UART 1 Receive Control */ sfrb URCTL_1 = URCTL_1_;#define UMCTL_1_ 0x007B /* UART 1 Modulation Control */ sfrb UMCTL_1 = UMCTL_1_;#define UBR0_1_ 0x007C /* UART 1 Baud Rate 0 */sfrb UBR0_1 = UBR0_1_;#define UBR1_1_ 0x007D /* UART 1 Baud Rate 1 */sfrb UBR1_1 = UBR1_1_;#define RXBUF_1_ 0x007E /* UART 1 Receive Buffer */ const sfrb RXBUF_1 = RXBUF_1_;#define TXBUF_1_ 0x007F /* UART 1 Transmit Buffer */ sfrb TXBUF_1 = TXBUF_1_;。

相关文档
最新文档