天天看点

单片机串口通信程序的流程方案

在我们设计的早年色选机系统中,单片机程序结构采用固定周期循环的程序结构。固定循环周期是200us。

在这固定的200us时间内处理单片机外围的各种任务,这些任务可以处理按键输入、LED显示、输入/输出、AD采样、脉冲计数、异步通信UART、EEPROM读写等;

在这200us的循环中,实现各种中断任务处理,这个比硬件中断的方式对实时性有更好的管控。例如PIC系列单片机利用UART接口和PC机的232接口通信,就有时间限制。对于57600的通信波特率,就要求200us内中断取数一次,否则就要丢数了!丢数了就出错了!理论上,串口通信的收发数据缓冲区如果大于2字节,那么就可以间隔更长时间去取数或发数。但是,如果一个任务的处理时间超过最大时间还是会丢数!

对于最基本的PIC系列单片机,最大时钟是20MHz,指令周期是200ns,对于200us的固定周期,一个周期内最多执行1000条指令。1000条指令可做很多事情了。进一步,当单片机的程序存储器的空间大于1k时,可以编写大于1k的程序,在不同的周期执行不同的程序。

循环周期的200us定时由单片机的硬件定时器来控制,每次循环的最后等待200us周期的结束,等待的过程就是查询硬件定时器,结束后再返回程序最上部。

可以在200us的循环周期里查询各种中断,查询是否有中断标志是“1”,是就处理相应的事件。或者在一段固定空操作代码中开通中断使能,让程序进入中断子程序执行一些中断处理。

(待续)

继续阅读