单片机程序必知的几个寄存器
1.串口寄存器SBUF
SBUF是指串行口中的两个缓冲寄存器,一个是发送寄存器,一个是接收寄存器,在物理结构上是完全独立的,但地址是重叠的。它们都是字节寻址的寄存器,字节地址均为99H。
串行发送数据时,CPU向SBUF写入数据 SBUF=date; //发送数据
串行接收数据时,CPU从SBUF读出数据 date=SBUF; //接收数据
2.TMOD:工作方式控制寄存器
寄存器地址89H,不可位寻址。
位序
|
B7
|
B6
|
B5
|
B4
|
B3
|
B2
|
B1
|
B0
|
位符号
|
GATE
|
C/T
|
M1
|
M0
|
GATE
|
C/T
|
M1
|
M0
|
GATE——门控位
当=0时,以TR0(或TR1)状态决定定时器/计数器的启动或禁止
当=1时,以TR0与INT0(或TR1与INT1)状态决定定时器/计数器的启动或禁止
C/T=0 定时/计数工作方式选择位 0为定时器 1为计数器。
M1M0——工作方式选择位
M1M0=00
方式0:是13位计数结构的工作方式,其计数器由TH全部8位和TL的低5位构成。
M1M0=01 方式1:是16位计数结构的工作方式,计数器由TH全部8位和TL全部8位构成。
M1M0=10 方式2:自动装入8位计数器。
M1M0=11 方式3:定时器/计数器0被拆成两个独立的8位计数器TL0和TH0。其中TL0既可以计数使用,又可以定时使用,定时器/计数器0的各控制位和引脚信号全归它使用。
3.SCON控制寄存器
.
SCON寄存器各位定义
D7
|
D6
|
D5
|
D4
|
D3
|
D2
|
D1
|
D0
|
SM0
|
SM1
|
SM2
|
REN
|
TB8
|
RB8
|
TI
|
RI
|
9FH
|
9EH
|
9DH
|
9CH
|
9BH
|
9AH
|
99H
|
98H
|
SM0、SM1
——串行口工作方式控制位
SM0
|
SM1
|
工作方式
|
功能
|
波特率
|
0
|
0
|
方式0
|
8位同步移位寄存器
|
晶振频率/12
|
0
|
1
|
方式1
|
10位UART
|
可变
|
1
|
0
|
方式2
|
11位UART
|
晶振频率/64或晶振频率/32
|
1
|
1
|
方式3
|
11位UART
|
可变
|
SM2
——多机通信控制位
多机通信是工作于方式2和方式3,SM2位主要用于方式2和方式3。接收状态,当串行口工作于方式2或3,以及SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入SBUF,且置位RI发出中断申请,否则会将接收到的数据放弃。当SM2=0时,就不管第9位数据是0还是1,都会将数据送入SBUF,并发出中断申请。工作于方式0时,SM2必须为0。
REN
——允许接收位
REN用于控制数据接收的允许和禁止,REN=1时,允许接收,REN=0时,禁止接收。
TB8
——发送数据位8
在方式2和方式3中,TB8是要发送的——即第9位数据位。在多机通信中同样亦要传输这一位,并且它代表传输的地址还是数据,TB8=0为数据,TB8=1时为地址。
RB8
——接收数据位8
在方式2和方式3中,RB8存放接收到的第9位数据,用以识别接收到的数据特征。
TI
——发送中断标志位
可寻址标志位。方式0时,发送完第8位数据后,由硬件置位,其它方式下,在发送或停止位之前由硬件置位,因此,TI=1表示帧发送结束,TI可由软件清“0”。
RI
——接收中断标志位
可寻址标志位。接收完第8位数据后,该位由硬件置位,在其他工作方式下,该位由硬件置位,RI=1表示帧接收完成。
在串口中断处理时,TI,RI都需要软件清"0",硬件置位后不可能自动清0,此外,在进行缓冲区操作时,需要ES=0,以防止中断出现。
4.AUXR辅助寄存器
AUXR.0:S1BRS,如果为1那么串口1的波特率发生器为独立波特率发生器,否则为定时器1
AUXR.1:EXTRAM,为1则可以使用内部扩展RAM
AUXR.2:BRTx12,为1则独立波特率发生器不分频,否则12分频。
AUXR.3:S2SMOD,为1串口2波特率加倍,否则不加倍
AUXR.4:BRTR,为1则允许独立波特率允许,否则不允许。
AUXR.5:UART_M0x6,为1则串口模式0为2分频,否则为12分频
扫描二维码关注公众号,回复:
2004119 查看本文章
AUXR.6:T1x12,为1则定时器1不分频,否则12分频
AUXR.7:T0x12,为1则定时器0不分频,否则12分频
注意:12分频相当于传统的51单片机的速度
注:
AUXR是Auxiliary Register(辅助寄存器)的缩写。
AUXR寄存器不可位寻址。
AUXR的第7位和第6位用得很多,分别用于设置定时器0和1是否12分频。因为是1T的单片机,为了兼容传统的8051,
若不设置则默认为0,即定时器12分频。
例如:AUXR &= 0xBF; //定时器1时钟为Fosc/12,即12T 1011 1111