寄存器数据接收
置位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标志来等待数据送入接收缓冲器。
更多推荐信息