寄存器数据接收
发表:2023-08-29 12:05:41 阅读:74

寄存器数据接收

置位UCSRB寄存器的接收允许位(RXEN)即可启动USART接收器。接收器使能后RxD的普通引脚功能被USART功能所取代,成为接收器的串行输入口。进行数据接收之前,首先要设置好波特率、操作模式及帧格式。如果使用同步操作,XCK引脚上的时钟被用为传输时钟。

 

1.以5~8个数据位的方式接收帧

一旦接收器检测到一个有效的起始位,便开始接收数据。起始位后的每一位数据都将以所设定的波特率或XCK时钟进行接收,直到收到一帧数据的第1个停止位。接收到的数据被送入接收移位寄存器。第2个停止位会被接收器忽略。接收到第l个停止位后,接收移位寄存器就包含了一个完整的数据帧,这时移位寄存器中的内容将被转移到接收缓冲器中,通过读取UDR就可以获得接收缓冲器的内容的。

以下程序是一个对RXC标志采用轮询方式接收数据的实例。当数据帧少于8位时.从UDR读取的相应的高几位为0。当然,执行本段代码之前首先要初始化USART。

汇编代码例程(1):

USART Receive:

;等待接收数据

sbis UCSRA,RXC

rj mp USART_Receive

;从缓冲器中获取并返回数据

in rl6,UDR

ret

C代码例程(1):

unsigned char USART_Receive(void)

{

/*等待接收数据*/

while(!(UCSRA&(1<

;

/*从缓冲器中获取并返回数据*/

return UDR”

}

在读缓冲器并返回之前,函数通过检查RXC标志来等待数据送入接收缓冲器。

 

更多推荐信息

片内时钟产生——波特率发生器

数据帧格式数据帧的结构

与SPl接口相关的寄存器

SPl数据传输模式