目录
reg52.h注释
/* BYTE Registers */
sfr P0 = 0x80; //P0口锁存器
sfr P1 = 0x90; //P1口锁存器
sfr P2 = 0xA0; //P2口锁存器
sfr P3 = 0xB0; //P3口锁存器
sfr PSW = 0xD0; //程序状态寄存器
sfr ACC = 0xE0; //累加器
sfr B = 0xF0; //B寄存器
sfr SP = 0x81; //堆栈指针
sfr DPL = 0x82; //数据地址指针(低8位)
sfr DPH = 0x83; //数据地址指针(高8位)
sfr PCON = 0x87; //电源控制寄存器
sfr TCON = 0x88; //T0、T1定时器/计数器控制寄存器
sfr TMOD = 0x89; //T0、T1定时器/计数器方式控制寄存器
sfr TL0 = 0x8A; //定时器/计数器0(低8位)
sfr TL1 = 0x8B; //定时器/计数器1(低8位)
sfr TH0 = 0x8C; //定时器/计数器0(高8位)
sfr TH1 = 0x8D; //定时器/计数器1(高8位)
sfr IE = 0xA8; //中断允许控制寄存器
sfr IP = 0xB8; //中断优先级控制寄存器
sfr SCON = 0x98; //串行口控制寄存器
sfr SBUF = 0x99; //串行口锁存器
/* 8052 Extensions */
sfr T2CON = 0xC8; //T2定时器/计数器控制寄存器
sfr RCAP2L = 0xCA; //外部输入(P1.1)计数器/自动再装入模式时初值寄存器(高8位)
sfr RCAP2H = 0xCB; //外部输入(P1.1)计数器/自动再装入模式时初值寄存器(低8位)
sfr TL2 = 0xCC; //定时器/计数器2(低8位)
sfr TH2 = 0xCD; //定时器/计数器2(高8位)
/* BIT Registers */
/* PSW */ //程序状态字
sbit CY = PSW^7; //进位标志(有进、借位,CY=1;否则CY=0)
sbit AC = PSW^6; //辅助进、借位
sbit F0 = PSW^5; //用户标志位
sbit RS1 = PSW^4; //工作寄存器组选择位
sbit RS0 = PSW^3; //工作寄存器组选择位
sbit OV = PSW^2; //溢出标志位(有溢出,OV=1;否则OV=0)
sbit P = PSW^0; //8052 only//奇偶校验位
/* TCON */
sbit TF1 = TCON^7; //定时器T1溢出标志
sbit TR1 = TCON^6; //T1允许计数控制位
sbit TF0 = TCON^5; //定时器T0溢出标志
sbit TR0 = TCON^4; //T0允许计数控制位
sbit IE1 = TCON^3; //外部中断1请示源标志
sbit IT1 = TCON^2; //外部中断源1触发方式控制位
sbit IE0 = TCON^1; //外部中断0请示源标志
sbit IT0 = TCON^0; //外部中断源0触发方式控制位
/* IE */
sbit EA = IE^7; //EA=0时,所有中断禁止;EA=1时,各中断由个别的允许位决定
sbit ET2 = IE^5; //8052 only //定时器2溢出中断允许
sbit ES = IE^4; //串口中断允许
sbit ET1 = IE^3; //定时器1中断允许
sbit EX1 = IE^2; //外部中断INT1中断允许
sbit ET0 = IE^1; //定时器0中断允许
sbit EX0 = IE^0; //外部中断INT0中断允许
/* IP */
sbit PT2 = IP^5; //定时器2中断优先
sbit PS = IP^4; //串口中断优先
sbit PT1 = IP^3; //定时器1中断优先
sbit PX1 = IP^2; //外部中断INT1中断优先
sbit PT0 = IP^1; //定时器0中断优先
sbit PX0 = IP^0; //外部中断INT0中断优先
/* P3 */ //P3口引脚第二功能
sbit RD = P3^7; //外部数据存储器读脉冲
sbit WR = P3^6; //外部数据存储器写脉冲
sbit T1 = P3^5; //定时器/计数器1外部输入端
sbit T0 = P3^4; //定时器/计数器0外部输入端
sbit INT1 = P3^3; //外部中断1
sbit INT0 = P3^2; //外部中断0
sbit TXD = P3^1; //串行输出口
sbit RXD = P3^0; //串行输入口
/* SCON */
sbit SM0 = SCON^7; //串行口工作方式控制位
sbit SM1 = SCON^6; //串行口工作方式控制位
sbit SM2 = SCON^5; //多机通信控制位
sbit REN = SCON^4; //允许接收位
sbit TB8 = SCON^3; //发送数据位8
sbit RB8 = SCON^2; //接收数据位8
sbit TI = SCON^1; //发送中断标志位
sbit RI = SCON^0; //接收中断标志位
/* P1 */ //P1口引脚的第二功能
sbit T2EX = P1^1; // 8052 only //T2EX捕捉、重装触发,T2的外部控制端
sbit T2 = P1^0; // 8052 only //T2定时器的外部输入
/* T2CON */
sbit TF2 = T2CON^7; //T2溢出中断标志
sbit EXF2 = T2CON^6; //定时器T2外部中断标志
sbit RCLK = T2CON^5; //串口的接收时钟选择标志
sbit TCLK = T2CON^4; //串口的发送时钟选择标志
sbit EXEN2 = T2CON^3; //T2的外部中断允许标志
sbit TR2 = T2CON^2; //T2计数/定时控制位
sbit C_T2 = T2CON^1; //外部计数器/定时器选择位
sbit CP_RL2 = T2CON^0; //捕捉和常数自动再装入方式选择位
C51关键字说明
- sfr:特殊功能寄存器声明,声明一个8位特殊功能寄存器
- sbit:特殊功能寄存器位变量声明
序号 | 语句格式 |
---|---|
1 | sbit 位变量名 = 特殊功能寄存器名^位位置(0~7有效) |
2 | sbit 位变量名 = 字节地址^位位置(0~7有效) |
3 | sbit 位变量名 = 位地址 |
参考