我们第一次编写51单片机的程序代码时候,往往第一句永远是“#include <reg52.h>”。
对于一些中职学生来讲,有些没有接触过C语言的学习,那么这篇文章就是讲一下reg52.h文件里的内容
点击<reg52.h>,右键选择Open document<reg52.h>
这样就进入到我们的头文件的里了
1、文件说明
这部分是文件头部注释,说明该头文件是为80C52和80C32微控制器设计的,版权归Keil公司所有。
2、防止重复包含
这是一个头文件防护机制,防止 reg52.h
文件被多次包含。通过使用 #ifndef
和 #define
预处理器指令,可以确保文件内容只会被编译一次。
3、BYTE寄存器的定义
这些是80C52/80C32中的字节寄存器定义。”sfr“是“特殊功能寄存器(special function register)”的缩写,用于定义51单片机的特殊功能寄存器。每个寄存器都通过其地址定义。以下是其中一些寄存器的作用:
- P0, P1, P2, P3:是51单片机的4个并行I/O口寄存器,用于控制输入输出操作。
- PSW:程序状态字寄存器,保存运算状态信息,如进位标志和溢出标志。
- ACC:累加器寄存器,主要用于算术运算。
- B:乘除法寄存器,用于乘法和除法运算。
- SP:堆栈指针寄存器,指向当前堆栈顶的位置。
- DPL 和 DPH:数据指针低位和高位,用于数据传输中的地址指针。
- TCON:定时器控制寄存器,用于控制定时器和外部中断。
- TMOD:定时器模式寄存器,用于设置定时器的工作模式。
- TL0, TL1, TH0, TH1:定时器0和定时器1的低位和高位寄存器。
- IE:中断使能寄存器,用于控制各种中断的使能状态。
- IP:中断优先级寄存器,用于设置中断的优先级。
- SCON:串行口控制寄存器,用于控制串行通信的操作模式。
- SBUF:串行口数据寄存器,用于发送和接收数据。
4、8052扩展寄存器
这些是8052单片机的扩展寄存器,它们在标准的8051系列中不可用,主要用于定时器2。
- T2CON:定时器2的控制寄存器。
- RCAP2L 和 RCAP2H:定时器2的重载寄存器,低位和高位。
- TL2 和 TH2:定时器2的低位和高位寄存器。
5、位寄存器定义及PSW(程序状态字寄存器)的位定义
第一行表达的是位寄存器用于直接访问寄存器中的某个位,方便控制特定位的功能。
第二行代表表达的是PSW(程序状态字寄存器)的位定义:
- CY:进位标志位,用于算术运算的进位。
- AC:辅助进位标志位,用于BCD运算。
- OV:溢出标志位,表示运算溢出。
- RS0 和 RS1:寄存器组选择位。
- P:奇偶校验位(仅在8052中使用)。
5.1、TCON(定时器控制寄存器)的位定义
- TF1, TF0:定时器1和定时器0的溢出标志。
- TR1, TR0:定时器1和定时器0的启动位。
- IE1, IE0:外部中断1和外部中断0的标志位。
- IT1, IT0:外部中断1和外部中断0的触发模式选择。
5.2 IE(中断使能寄存器)的位定义
- EA:全局中断使能位,启用或禁用所有中断。
- ET2, ET1, ET0:定时器2、定时器1和定时器0的中断使能位。
- ES:串行中断使能位。
- EX1, EX0:外部中断1和外部中断0的使能位。
5.3 IP(中断优先级寄存器)的位定义
- PT2, PT1, PT0:定时器2、定时器1和定时器0的中断优先级设置位。
- PS:串行中断优先级设置位。
- PX1, PX0:外部中断1和外部中断0的优先级设置位。
5.4 P3(P3口)的位定义
这些位定义了P3口的每个位,常用于外部接口和特殊功能:
- RD, WR:外部数据存储器的读/写控制。
- T1, T0:定时器1和定时器0的输入引脚。
- INT1, INT0:外部中断1和外部中断0。
- TXD, RXD:串行通信的发送和接收引脚。
5.5 SCON(串行控制寄存器)的位定义
些位控制串行通信的操作:
- SM0, SM1:串行通信模式选择位。
- SM2:多机通信控制位。
- REN:接收使能位。
- TB8, RB8:第9位数据发送/接收标志。
- TI:发送中断标志位。
- RI:接收中断标志位。
6、P1口的位定义(仅适用于8052)
T2 (P1^0):定时器2的输入引脚,当定时器2配置为计数器模式时,T2用于计数外部脉冲。
T2EX (P1^1):定时器2的扩展控制输入引脚,用于定时器2的捕捉或重载功能。如果开启了外部使能,T2EX可以用于控制定时器的启动和停止。
注意:这两个引脚仅在8052单片机中有效,8051单片机没有定时器2,因此没有这两个位。
7、T2CON(定时器2控制寄存器)的位定义
T2CON寄存器控制定时器2的工作模式和状态。每个位的功能如下:
- TF2 (T2CON^7):定时器2溢出标志位。该位在定时器2计数溢出时置1,当CPU处理定时器2的中断时会清零。
- EXF2 (T2CON^6):定时器2的外部中断标志位。若定时器2启用了外部控制(通过T2EX引脚),当T2EX引脚触发时该位会被置1。EXF2常用于捕捉和重载操作。
- RCLK (T2CON^5):串行端口接收时钟控制位。若该位置1,串行端口的接收时钟将由定时器2提供,而不是定时器1。
- TCLK (T2CON^4):串行端口发送时钟控制位。若该位置1,串行端口的发送时钟将由定时器2提供,而不是定时器1。
- EXEN2 (T2CON^3):定时器2的外部使能位。若该位置1,则定时器2可以通过T2EX引脚控制是否启动或停止。通常用于捕捉功能。
- TR2 (T2CON^2):定时器2启动位。该位置1时,定时器2开始工作;置0时,定时器2停止。
- C_T2 (T2CON^1):定时器/计数器选择位。该位用于选择定时器2的工作模式:
- 置1时,定时器2作为计数器使用,计数外部脉冲(从T2引脚输入)。
- 置0时,定时器2作为定时器使用,基于系统时钟进行计数。
- CP_RL2 (T2CON^0):捕捉/重载选择位。该位控制定时器2的工作模式:
- 置1时,定时器2工作在捕捉模式。
- 置0时,定时器2工作在自动重载模式。
8、文件结束
这行标志着文件的结束,它对应于文件开头的 #ifndef
指令,防止文件重复包含。
以上就是<reg52.h>里的内容了,头文件为我们提供了51单片机常用的特殊功能寄存器、I/O口和控制位的定义。通过这些定义,我们就可以轻松地使用这些硬件资源,而不需要直接操作底层的寄存器地址,大大简化了单片机程序的开发和调试过程。