4 控制器软件设计
在单片机软件开发过程中, 编制的程序要合理使用各种中断机制。本系统就控制算法来说,有实时性要求, 任务复杂:有中断、定时任务、循环执行任务等, 并且人机交互操作还通常会动态地改变程序的运行模式, 尤其是人机界面——液晶的显示输出需要占用大量CPU 时间, 与此同时又不允许丢失重要的数据。还要随时准备向上位机发送数据。因此,需要综合采用消息机制与状态转移法来统一地处理好CPU 的任务安排。
在中断服务程序中, 向主程序的消息队列添加相应的消息, 来达到将中断服务程序中的数据处理部分分离出来的目的。本系统主要有两个中断:上位机中断和键盘中断。中断服务程序返回主程序后, 主控程序只处理消息循环, 判断并为消息处理对象发送所需处理的消息, 而接受消息的对象则以消息响应函数的方式出现, 当接收到主程序发来的消息后, 消息响应函数获得控制权, 做完相应的处理后将控制权交还给主程序继续消息循环的处理。用户的输入及对象的请求仅是向消息队列中添加相应的消息。
主控程序还需要查询消息队列也就是时间,根据时间的不同, 调用相应的消息处理函数, 在本系统中, 时间表现为一个变量, 通过给该变量置不同值来反映不同的消息。对于由中断触发的消息, 由于消息处理函数已经脱离了中断处理过程, 所以系统对消息处理不再象中断服务程序那样, 在时间上有十分苛刻的要求; 同时, 在消息处理过程中, 用户仍可通过键盘中断来与系统进行交互。
5 结束语
本项目是一个自动化技术与农业结合的课题, 以89c52 单片机为核心的嵌入式控制器,通过8251扩展一个串口后和单片机原有的串口一起分别和上位机和下位机通讯,从下位机收集到的数据先存入数据存储器,在接收到上位机的命令后再把数据传到上位机进行管理。并在控制器上加入键盘和显示的功能,能控制器能直接控制下位机。该控制器结构合理, 经济实用, 具有较高的推广价值。