1. 什么是微控制器寄存器?
寄存器是一种特殊的存储器,主要用于存储和查看微机的状态。 CPU寄存器用于存储和检查CPU的状态,包括计算中间的数据、程序中断或子程序分支时的返回地址、计算结果为0时的负值、计算结果为0时的信息等。零、进位值等
由于CPU的通用寄存器在硬件上直接与CPU相连,因此它们的访问速度比RAM要快,RAM是通过内部总线访问数据的。
单片机的外设功能控制寄存器用于设置称为通用I/O GPIO的I/O端口、定时器、串行通信、AD转换器和DA转换器等外设功能。 通信功能中有显示外围功能状态的状态寄存器、存储AD转换器转换结果的结果寄存器以及存储发送/接收数据的发送/接收数据寄存器。
我们可以直接从程序中设置寄存器,但通常使用制造商提供的固件库(设备驱动程序),因此寄存器不是直接设置的,而是间接设置的。
2、单片机寄存器的分类
1.SCON控制寄存器
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=1时,允许接收; REN=0时,禁止接收;
RB8接收数据位8:在模式2和模式3下,RB8存储接收到的数据的第9位,用于标识接收到的数据的特征;
TB8 发送数据位 8:在模式 2 和模式 3 下,TB8 将发送 – 第 9 个数据位。 该位在多机通信中也需要传输,它代表传输的地址或数据。 当TB8=0时为数据,当TB8=1时为地址;
RI接收中断标志位:可寻址标志位。 接收到第8位数据后,该位由硬件置位。 在其他工作模式下,该位由硬件置位。 RI=1表示帧接收完成;
处理串口中断时,TI和RI需要用软件清“0”。 硬件置位后不可能自动清0。 另外,在进行缓冲操作时,需要ES=0,以防止发生中断。
2.AUXR辅助寄存器
AUXR.0:S1BRS,如果为1,则串口1的波特率发生器为独立波特率发生器,否则为定时器1
AUXR.1:EXTRAM,如果为1,则可以使用内部扩展RAM;
AUXR.2:BRTx12,如果为1,则独立波特率发生器不分频,否则进行12分频;
AUXR.3:S2SMOD,将串口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。
3.串口寄存器SBUF
SBUF是指串口中的两个缓冲寄存器,一个是发送寄存器,一个是接收寄存器。 它们在物理结构上完全独立,但地址重叠。 它们都是字节寻址寄存器,字节地址为99H;
串行发送数据时,CPU向SBUF写入数据 SBUF=date; //发送数据;
串行接收数据时,CPU从SBUF读取数据 date=SBUF; //接收数据。