事件驱动机制在单片机软件中的应用
来源:互联网 发布:最终幻想15剧情 知乎 编辑:程序博客网 时间:2024/05/21 05:07
一、Windows的事件驱动机制
在Windows系统中,程序的设计围绕事件驱动来进行。当对象有相关的事件发生时(如按下鼠标键),对象产生一条特定的标识事件发生的消息,消息被送入 消息队列,或不进入队列而直接发送给处理对象,主程序负责组织消息队列,将消息发送给相应的处理程序,使相应的处理程序执行相应的动作,做完相应的处理后 将控制权交还给主程序。
在这种机制中,对象的请求仅仅是向队列中添加相应的消息,耗时的处理则被分离给处理函数。这种结构的程序中各功能模块界限分明,便于扩充,能充分利用CPU的处理能力,使系统对外界响应准确而及时。
如果在编写单片机程序时,引入Windows程序中的事件驱动机制,把中断响应与事件处理程序分离,中断服务程序的任务只是产生一个中断发生的标志,而事 件处理则由处理程序来完成,主程序则负责判断标志和调度处理程序。这样,可大幅缩短中断服务程序的长度,减少断服务程序的耗时,提高系统对多中断的响应能力。
二、事件驱动的单片机程序设计
与Windows系统相比,单片机的资源非常有限,因此,单片机程序中的事件驱动机制只能采取一种简化的方式。当某个中断发生时,中断服务程序设置相应的 标志,不同的标导代表不同的中断发生的消息,而主程序不断地判别这些标志,以决定启动哪一个处理函数。相应的处理函数被启动处理完相关的任务后,清除此标 志,然后把控制权交还给主程序。采用这种机制,可合理地利用有限资源,使程序调试的工作量大幅下降。对于延时、定时处理(如LED显示、键盘扫描等),更 可方便地使用一定时器来完成延时、定时的任务,从而把CPU从这种耗时的任务中解放出来,确保系统对多中断有足够的响应能力。
三、总结
事件驱动的单片机程序设计是通过在中断服务程序中置位相位标志,把耗时的中断服务中的处理部分分离出来,中断返回后,再由主程序根据标志启动相应的处理模块。在任务处理完成后,清除相应的标志。由于中断服务程序短小,所以一般能实时地响应各种中断;而处理程序之间不会被相互调用,所以不会产生代码重入;各模块界限分明,给程序中各模块的统调带来很大的方便。
实践证明,运用事件驱动机制来纺织单片机程序,即使对于要求定时准,耗时多的多中断、多模块系统,也可轻松地完成。
- 事件驱动机制在单片机软件中的应用
- 事件驱动机制-在SCADA报警系统中的应用
- 事件机制在nagios中的应用
- 单片机程序设计中运用事件驱动机制
- Spring中的事件监听机制在项目中的应用
- 单片机在计算器中的应用
- 联合体在单片机中的应用
- 联合体在单片机中的应用
- spring事件驱动模型--观察者模式在spring中的应用
- AAAspring事件驱动模型--观察者模式在spring中的应用
- linux底半部机制在视频采集驱动中的应用
- CEGUI中的事件驱动机制1
- C#中的事件驱动机制如何理解!
- F0位在单片机编程中的应用
- 状态机思路在单片机程序设计中的应用
- 单片机在工业应用中的前景
- 时分多线程在单片机系统中的应用
- 状态机思路在单片机程序设计中的应用
- unity3d移动平台性能优化(14):渲染路径设置
- macvim 配置
- 第三题
- leetcode--Search in Rotated Sorted Array
- java中常用的工具类
- 事件驱动机制在单片机软件中的应用
- poj_Feel Good_单调栈
- Nginx系列(十一.nginx正向代理)
- 【Java-IO】Java文件操作
- Python判断当前操作系统类型以及os/sys/platform模块简介
- Selenium RC工作原理和测试案例
- 内存重叠之strcpy&memmove
- BZOJ 3307 雨天的尾巴 线段树
- 利用SecureCRT上传、下载文件(使用sz与rz命令)