51单片机头文件reg51.h详解




/*-------------------------------------------------------------------------- 

REG51.H

 

Header file for generic 80C51 and 80C31 microcontroller.

Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.

All rights reserved. 

--------------------------------------------------------------------------*/

 

#ifndef __REG51_H__

#define __REG51_H__

 

/*  BYTE Register  */

        

 sfr P0   = 0x80;  //三态双向    IO     P0口 此句话的意思是:特殊功能寄存器 P0 地址为0x80 ,可位寻址,下同

                          //8位地址总线/数据总线(一般不用而只作普通I/O口,注意作I/O口用时,硬件上需接上接电阻)

sfr P1   = 0x90;  //准双向      IO     P1

 


sfr P2   = 0xA0;   //
准双向 IO     P2

                          //8位地址总线,一般也作普通I/O用

sfr P3   = 0xB0;  //双功能

                          //1.准双向     IO     P3

                        //2. P30             RXD串行数据接受

                       //   P31             TXD串行数据发送

                          //    P32             外部中断0    信号申请

                         //    P33             外部中断1    信号申请

                           //    P34             定时/计数器T0    外部计数脉冲输入

                           //    P35             定时/计数器T1    外部计数脉冲输入

                           //    P36             WR 片外RAM写脉冲信号输入

                           //    P37           RD 片外ram读脉冲信号输入

sfr PSW  = 0xD0; // 可以位寻址(C语言编程时可不考虑此寄存器)

                            //程序状态寄存器Program Status WORD  (程序状态信息)

                            //psw.7(CY)   进位标志

                            //psw.6(AC)辅助进位标志位低四位向高四位进位或借位时   AC=1

                            //主要用于十进制调整

                            //psw.5(F0)用户可自定义的程序标志位

                           //psw.4(RS1)

                            //psw.3(RS0)

                            //工作寄存器选择位

                            //任一时刻只有一组寄存器在工作

                            //0 0  0     00H~07H

                            //0 1   1     08H~0fH

                            //1 0   2     10H~17H

                            //1 1   3     18H~1FH

                            //psw.2(OV)   溢出标志位

                            //psw.1(   )     保留为,不可使用

                            //psw.0(P)             奇偶校验位

 

sfr ACC  = 0xE0;     //累加器A    特殊功能寄存器   可位寻址

sfr B    = 0xF0;        //寄存器B     主要用于乘除运算

sfr SP   = 0x81;       //堆栈指针寄存器SP   存放站定栈顶地址、

sfr DPL  = 0x82;      //

sfr DPH  = 0x83;     //数据指针寄存器DPTR、//对片外RAM及扩展IO进行存取用的地址指针

 

sfr PCON = 0x87; //电源控制寄存器 、不能位寻址            

                           //管理单片机的电源部分包括上电复位、掉电模式、空闲模式等

                           //单片机复位时PCON被全部清0,编程时一般是用到SMOD位,其它的一般不用

                          //D7SMOD该位与串口通信波特率有关

                         //SMOD=0    串口方式1 2 3波特率正常

                         //SMOD=1    串口方式1 2 3波特率加倍

              

 

 

 

sfr TCON = 0x88; //定时器/计数器   控制寄存器  可以位寻址                                                        
         //D7 TF1       
定时器1溢出标志位

                           //D6      TR1    定时器1运行控制位

                           //D5      TF0       定时器0溢出标志位

                           //D4    TR0       定时器0运行控制位

                           //D3      IE1        外部中断1请求标志

                           //D2      IT1        外部中断1触发方式选择位

                           //D1      IE0     外部中断0请求标志

                           //D0    IT0        外部中断0触发方式选择位

 

 

sfr TMOD = 0x89;//定时器/计数器   工作方式寄存器   不能位寻址

                           //确定工作方式和功能                                                  

                           //D7GATE    门控制位

                           //GATE=0;定时器/计数器由TRXx=01)来控制

                           //GATE=1;定时器/计数器由TRXx=01

                           //和外部中断引脚(init01)来共同控制

                           //D6 C/T     定时器、计数器选择位

                           //    0   选择定时器模式

                           //    1    选择计数器模式

                           //D5      M1        

                           //D4      M0

                           //M1      M0        工作方式

                           //0  0           方式0    13位定时器/计数器

                           //0  1         方式1    16位定时器/计数器

                           //1  0         方式2    8位自动重装定时器/计数器

                           //1  1         方式3    仅适用T0     分成两个8位计数器,T1停止计数

                           //D3GATE    门控制位

                           //GATE=0;定时器/计数器由TRXx=01)来控制

                           //GATE=1;定时器/计数器由TRXx=01

                           //和外部中断引脚(init01)来共同控制

                           //D2 C/T            定时器、计数器选择位

                           //0 选择定时器模式

                           //1  选择计数器模式

                           //D1      M1        

                           //D0      M0

                           //    M1 M0        工作方式

                           //    0    0    方式0    13位定时器/计数器

                           //    0    1    方式1  16位定时器/计数器

                           //    1    0    方式2  8位自动重装定时器/计数器

                           //    1    1    方式3  仅适用T0     分成两个8位计数器,T1停止计数

 

sfr TL0  = 0x8A;    //定时器/计数器08    容器   1计数器

sfr TL1  = 0x8B;   //定时器/计数器18    容器

sfr TH0  = 0x8C;    //定时器/计数器08    容器

sfr TH1  = 0x8D;    //定时器/计数器18    容器

 

 

 

sfr IE   = 0xA8;                //中断允许寄存器          可以位寻址

                                         //D7  EA        全局中断允许位

                                         //D6      NULL

                                         //D5      ET2       定时器/计数器2中断允许位    interrupt 5

 

                                         //D4 ES         串行口中断允许位       interrupt 4

 

                                          //D3  ET1       定时器/计数器1中断允许位    interrupt 3

 

                                          //D2 EX1       外部中断1中断允许位     interrupt 2

 

                                           //D1  ET0       定时器/计数器0中断允许位  interrupt 1

 

                                           //D0 EX0       外部中断0中断允许位     interrupt 0

  

sfr IP   = 0xB8;        //中断优先级寄存器  可进行位寻址

                             //D7NULL

                                //D6NULL

                                //D5      NULL

                                                //D4      PS         串行口中断定义优先级控制位

                                                //           1           串行口中断定义为高优先级中断

                                                //           0           串行口中断定义为低优先级中断

                                                //        

                                                //D3      PT1       

                                                //           1    定时器/计数器1中断定义为高优先级中断

                                                //           0    定时器/计数器1中断定义为低优先级中断

                                                //D2PX1

                                                //           1           外部中断1定义为高优先级中断

                                                //           0         外部中断1定义为低优先级中断

                                                //D1      PT0       

                                                //           1    定时器/计数器0中断定义为高优先级中断

                                                //           0    定时器/计数器0中断定义为低优先级中断

                                                //D0PX0

                                                //           1           外部中断0定义为高优先级中断

                                                //           0         外部中断0定义为低优先级中断

 

 

 

sfr SCON = 0x98;   //串行口控制寄存器    可以进行位寻址          

                              //D7   SM0             

                              //D6      SM1

                              //    SM0     SM1             串行口工作方式

                              //     0          0           同步移位寄存器方式

                             //     0       1           10位异步收发(8位数据),波特率可变(定时器1溢出率控制)

                               //   1         0           11位异步收发(9位数据),波特率固定

                               //    1       1           11异步收发(9位数据) ,波特率可变(定时器1溢出率控制)

                              //D5      SM2           多机通信控制位   主要用于方式2和方式3

                               //D4      REN          允许串行接收位

 

                               //D3      TB8       方式23中发送数据的第9

                              //D2      RB8    方式23中接受数据的第9

 

                               //D1      TI          发送中断标志位

                              //D0      RI       接受中断标志

 

 

sfr SBUF = 0x99;   //串行数据缓冲区

 

/*****************************************************************************

                                                       下面是位寻址区

                                         上面做过解释的就不在下面一一解释了

******************************************************************************/

/*  BIT Register  */    

/*  PSW   */

sbit CY   = 0xD7;

sbit AC   = 0xD6;

sbit F0   = 0xD5;

sbit RS1  = 0xD4;

sbit RS0  = 0xD3;

sbit OV   = 0xD2;

sbit P    = 0xD0;

 

/*  TCON  */

sbit TF1  = 0x8F;

sbit TR1  = 0x8E;

sbit TF0  = 0x8D;

sbit TR0  = 0x8C;

sbit IE1  = 0x8B;

sbit IT1  = 0x8A;

sbit IE0  = 0x89;

sbit IT0  = 0x88;

 

/*  IE   */

sbit EA   = 0xAF;

sbit ES   = 0xAC;

sbit ET1  = 0xAB;

sbit EX1  = 0xAA;

sbit ET0  = 0xA9;

sbit EX0  = 0xA8;

 

/*  IP   */

sbit PS   = 0xBC;

sbit PT1  = 0xBB;

sbit PX1  = 0xBA;

sbit PT0  = 0xB9;

sbit PX0  = 0xB8;

 

/*  P3  */

sbit RD   = 0xB7;

sbit WR   = 0xB6;

sbit T1   = 0xB5;

sbit T0   = 0xB4;

sbit INT1 = 0xB3;

sbit INT0 = 0xB2;

sbit TXD  = 0xB1;

sbit RXD  = 0xB0;

 

/*  SCON  */

sbit SM0  = 0x9F;

sbit SM1  = 0x9E;

sbit SM2  = 0x9D;

sbit REN  = 0x9C;

sbit TB8  = 0x9B;

sbit RB8  = 0x9A;

sbit TI   = 0x99;

sbit RI   = 0x98;

 

#endif


*--------------------------------------------------------------------------
REG51.H

Header file for generic 80C51 and 80C31 microcontroller.
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/

#ifndef __REG51_H__
#define __REG51_H__

/*  BYTE Register  */
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; 数据指针低八位
sfr DPH  = 0x83; 数据指针高八位
sfr PCON = 0x87; 波特率选择寄存器
sfr TCON = 0x88; 定时器/计数器控制寄存器
sfr TMOD = 0x89; 定时器方式选择寄存器
sfr TL0  = 0x8A; 定时器0低八位
sfr TL1  = 0x8B; 定时器1低八位
sfr TH0  = 0x8C; 定时器0高八位
sfr TH1  = 0x8D; 定时器1高八位
sfr IE   = 0xA8; 中断允许寄存器
sfr IP   = 0xB8; 中断优先级寄存器
sfr SCON = 0x98; 串行控制寄存器
sfr SBUF = 0x99; 串行数据缓冲器

 


/*  BIT Register  */
/*  PSW   */
sbit CY   = 0xD7; PSW.7是Cy即C,来源于最近一次算术指令或逻辑指令执行时软硬件的改写
sbit AC   = 0xD6; 辅助进位标志位,用于BCD码的十进制调整运算。当低四位向高四位借进位时Ac被置1,否则清0。此位也可和DA指令结合起来用。
sbit F0   = 0xD5; 用户使用的状态标志位
sbit RS1  = 0xD4; 4组工作寄存器区选择控制位1
sbit RS0  = 0xD3; 4组工作寄存器区选择控制位0
sbit OV   = 0xD2; 溢出标志位 在执行算术指令时,指示运算是否产生溢出
sbit P    = 0xD0; 奇偶标志位,P=1,A中“1”的个数为奇数,P=0,A中“1”的个数为偶数


/*  TCON  */   定时器/计数器控制寄存器
sbit TF1  = 0x8F;定时器/计数器T1的溢出中断请求标志位
sbit TR1  = 0x8E;定时器/计数器T1的计数运行控制位
sbit TF0  = 0x8D;定时器/计数器T0的溢出中断请求标志位
sbit TR0  = 0x8C;定时器/计数器T0的计数运行控制位
sbit IE1  = 0x8B;外部1的中断请求标志位
sbit IT1  = 0x8A;外部中断请求1的电平触发方式位
sbit IE0  = 0x89;外部0的中断请求标志位
sbit IT0  = 0x88;外部中断请求0的电平触发方式位


/*  IE   */     中断允许寄存器
sbit EA   = 0xAF;中断允许总控制位
sbit ES   = 0xAC;串口允许中断位
sbit ET1  = 0xAB;定时器/计数器T1的溢出中断位
sbit EX1  = 0xAA;外部中断1允许位
sbit ET0  = 0xA9;定时器/计数器T0的溢出中断位
sbit EX0  = 0xA8;外部中断0允许位

/*  IP   */     中断优先级寄存器IP
sbit PS   = 0xBC;串口中断优先级控制位
sbit PT1  = 0xBB;定时器T1优先级控制位
sbit PX1  = 0xBA;外部中断1中断优先级控制位
sbit PT0  = 0xB9;定时器T0优先级控制位
sbit PX0  = 0xB8;外部中断0中断优先级控制位

/*  P3  */      P3口的第二作用
sbit RD   = 0xB7; 外部数据存储器读选通
sbit WR   = 0xB6; 外部数据存储器写选通
sbit T1   = 0xB5; 记时器1外部输入
sbit T0   = 0xB4; 记时器0外部输入
sbit INT1 = 0xB3; 外部中断1
sbit INT0 = 0xB2; 外部中断0
sbit TXD  = 0xB1; 串行输出口
sbit RXD  = 0xB0; 串行输入口

/*  SCON  */   串口中断寄存器
sbit SM0  = 0x9F;串行口工作方式设置
sbit SM1  = 0x9E;串行口工作方式设置
sbit SM2  = 0x9D;多机通讯控制位
sbit REN  = 0x9C;允许串行接收位
sbit TB8  = 0x9B;发送的第9位数据
sbit RB8  = 0x9A;接收的第9位数据
sbit TI   = 0x99;串行口的发送中断请求标志位
sbit RI   = 0x98;串行口的接收中断请求标志位

#endif


KUI 20170519

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值