51单片机寄存器详解
51单片机的特殊功能寄存器
定时器:
定时方式寄存器TMOD(地址89H);
TMOD被分成两部份,每部份4位。分别用于控制T1和T0。
GATE | C/T | M1 | M0 | GATE | C/T | M1 | M0 |
1. M1、M0:定时/计数器的工作方式
1. 工作方式0:13位定时/计数方式(8192)。
2. 工作方式1:16位定时/计数方式(65536)。
3. 工作方式2和工作方式3, 8位的定时/计数方式(256)。
2. 如果C/T为0就是用作定时器,如果C/T为1就是用作计数器。
3. 门控位GATE(GATE=0与INT0无关,GATE=1与INT0有关):
1. GATE=0,定时/计数是否工作,只取决于TR1。
2. GATE=1,不仅由TR1来控制,而且还要受到INT1引脚的控制,只有TR1为1,且INT1引脚也是高电平,计数脉冲才得以通过。
定时/计数器控制寄存器TCON(地址88H):
定时/计数器 | 外中断 | ||||||
TF1 | TR1 | TF0 | TRO | IE1 | IT1 | IE0 | IT0 |
TF1/TF0 -定时/计数器溢出标志位。
TR1/TR0 -定时/计数器运行控制位。置位时定时/计数器开始运行。
IE1/IE0 -外部中断(INTx)标志位。IE1/IE0=1是INTx上有中断;IE1/IE0=0硬件复位。
IT1/IT0 -外中断触发类型控制位。IT1/IT0=1时是下降沿触发中断;IT1/IT0=0时是低电平触发中断。
中断系统:
中断允许寄存器IE
EA | X | ET2 | ES | ET1 | EX1 | ET0 | EX0 |
EA -中断总开关,如果它等于0,则所有中断都不允许。
ES -串行口中断允许
ET1-定时器1中断允许
EX1-外中断1中断允许
ET2-定时器2中断允许
ET0-定时器0中断允许
EX0-外中断0中断允许
中断优先级控制寄存器IP
X | X | PT2 | PS | PT1 | PX1 | PT0 | PX0 |
PT2-T2中断优先控制
PS -串口中断优先控制
PT1-T1中断优先控制
PX1-INT1中断优先控制
PT0-T0中断优先控制
PX0-INT0中断优先控制
串行通信:
串行口控制寄存器SCON(地址为98H)
SM0 | SM1 | SM | REN | TB8 | RB8 | TI | RI |
SM0、SM1:串行口工作方式选择位,其定义如下:
SM0、SM1 | 工作方式 | 功能描述 | 波特率 | |
0 | 0 | 方式0 | 8位移位寄存器 | Fosc/12 |
0 | 1 | 方式1 | 10位UART | 可变 |
1 | 0 | 方式2 | 11位UART | Fosc/64或fosc/32 |
1 | 1 | 方式3 | 11位UART | 可变 |
其中fosc为晶振频率
SM2:多机通讯控制位。在方式0时,SM2一定要等于0。在方式1中,当(SM2)=1则只有接收到有效停止位时,RI才置1。在方式2或方式3当(SM2)=1且接收到的第九位数据RB8=0时,RI才置1。
REN:接收允许控制位。由软件置位以允许接收,又由软件清0来禁止接收。
TB8: 是要发送数据的第9位。在方式2或方式3中,要发送的第9位数据,根据需要由软件置1或清0。例如,可约定作为奇偶校验位,或在多机通讯中作为区别地址帧或数据帧的标志位。
RB8:接收到的数据的第9位。在方式0中不使用RB8。在方式1中,若(SM2)=0,RB8为接收到的停止位。在方式2或方式3中,RB8为接收到的第9位数据。
TI: 发送中断标志。在方式0中,第8位发送结束时,由硬件置位。在其它方式的发送停止位前,由硬件置位。TI置位既表示一帧信息发送结束,同时也是申请中断,可根据需要,用软件查询的方法获得数据已发送完毕的信息,或用中断的方式来发送下一个数据。TI必须用软件清0。
RI: 接收中断标志位。在方式0,当接收完第8位数据后,由硬件置位。在其它方式中,在接收到停止位的中间时刻由硬件置位(例外情况见于SM2的说明)。RI置位表示一帧数据接收完毕,可用查询的方法获知或者用中断的方法获知。RI也必须用软件清0
电源控制寄存器PCON
SMOD | X | X | X | GF1 | GF0 | PD | IDL |
SMOD -波特率选择位。SMOD=1时方式1、2和3的波特率加倍
GF1/GF0 -通用标志位
PD -掉电控制位。1:掉电方式 0:正常方式
IDL -空闲控制位。1:空闲方式 0:正常方式
- 关于RTX51 TINY的分析与探讨(05-30)
- 浅析8051模块化编程技巧(05-28)
- 基于DSP和单片机通信的液晶显示设计方案(07-20)
- 锁相环控制及初始化简析(08-27)
- 基于MSP430自动胀管控制器的研究(09-07)
- 嵌入式C实现延时程序的不同变量的区别(03-01)