【单片机期末】串行口循环缓冲区发送
如果往串行口内发送了数据,那么会导致中断再次产生,如果没有往串行口里发送数据,则主程序中就不会再次产生中断。回环的目的是让头和尾相接,因为能实现回环,所以可以实现缓冲区不停地被重复利用,相当于是一个无穷大的缓冲区。单片机的程序可以分为两种:主程序和中断服务程序,其中主程序可以被中断服务程序打断。串行口循环缓冲区的方式非常难理解,这是一个主程序和中断服务程序相互交织的过程。如果要送出7个数字,就将U
串行口分为正在发送数据和空闲状态

单片机的程序可以分为两种:主程序和中断服务程序,其中主程序可以被中断服务程序打断。


一个字节 = 8位,单片机方式1是10位的UART。
10位:起始位+发送的8位数据+结束位
对于51单片机,先发送低位D0再发送高位。
串行口的空闲状态是高电平,起始位是低电平,结束位是高电平。
起始位持续的时间是T=1/9600 bit/s,结束位的持续时间也是T=1/9600 bit/s。发送一个位花费的时间就是一个T,发送一个字节是10位,所以花费时间为T=10/9600 bit/s≈1ms。




如果往串行口内发送了数据,那么会导致中断再次产生,如果没有往串行口里发送数据,则主程序中就不会再次产生中断。

如果要送出7个数字,就将UARTSave_Index从5变成7。
主程序什么时候知道有数据要往外发送?

触发串行口中断就会进入到中断服务程序中。
主程序中将UARTSend_State置为1
当
相等时,
将UARTSend_State置为0
串行口循环缓冲区的方式非常难理解,这是一个主程序和中断服务程序相互交织的过程。

每次触发中断服务程序后,UARTSend_Index会加1
缓冲区
的大小已知是16个

回环的目的是让头和尾相接,因为能实现回环,所以可以实现缓冲区不停地被重复利用,相当于是一个无穷大的缓冲区。

更多推荐



所有评论(0)