单片机程序必知的几个寄存器
1.串口寄存器SBUF
SBUF是指串行口中的两个缓冲寄存器,一个是发送寄存器,一个是接收寄存器,在物理结构上是完全独立的,但地址是重叠的。它们都是字节寻址的寄存器,字节地址均为99H。
串行发送数据时,CPU向SBUF写入数据 SBUF=date; //发送数据
串行接收数据时,CPU从SBUF读出数据 date=SBUF; //接收数据
2.TMOD:工作方式控制寄存器
位序
|
B7
|
B6
|
B5
|
B4
|
B3
|
B2
|
B1
|
B0
|
位符号
|
GATE
|
C/T
|
M1
|
M0
|
GATE
|
C/T
|
M1
|
M0
|
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
|
工作方式
|
功能
|
波特率
|
0
|
0
|
方式0
|
8位同步移位寄存器
|
晶振频率/12
|
0
|
1
|
方式1
|
10位UART
|
可变
|
1
|
0
|
方式2
|
11位UART
|
晶振频率/64或晶振频率/32
|
1
|
1
|
方式3
|
11位UART
|
可变
|
SM2
REN
TB8
RB8
TI
RI
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分频
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