汇编语言多任务调度编程技术_张小鸣.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《汇编语言多任务调度编程技术_张小鸣.pdf》由会员分享,可在线阅读,更多相关《汇编语言多任务调度编程技术_张小鸣.pdf(3页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、电脑纵横汇编语言多任务调度编程技术江苏石油化工学院计算机系(常州 213016)张小鸣 毕美华 摘 要 文章通过实例介绍在单任务汇编语言开发环境中,加入多任务调度设计思想,使复杂多分支汇编程序编写和维护性变得非常方便,实现方法简单易行。关键词 汇编语言 单片机 任务调度 中断 事件触发1 汇编语言单任务机制编程特点8086 汇编语言、MCS51/96 汇编语言、DSP 汇编语言等程序设计方法是建立在单任务机制基础上的,具有易掌握、易模拟化、易 I/O 控制、代码短等优点,特别适合编写 I/O 中断处理程序、较简单数据处理算法、低速异步串行通信程序等,但是当中断源超过 3 个以上时,就暴露出一些
2、问题。第一,当多个中断源同时申请中断或在 CPU 响应一个中断期间发生另外几个中断请求,可能造成有些中断请求不响应;第二,用户很难确定中断源的轻重缓急,当优先级设置不当或高优先级中断服务程序时间太长,造成优先级较低中断得不到进一步服务;第三,既使 CPU 均能响应各中断源要求,可扩充性和可稳定性也较脆弱,一旦增加中断模块,原各模块之间的平衡被打破,需要重新调试,确定各模块之间的优先级和相互协调关系。由此可见,只有从机制上进行改制,引入多任务机制编程原理,才能克服上述问题,编写经济实用的复杂程序。2 多任务机制的核心思想正如 Visual Basic 等面向对象的程序设计一样,在结构化程序设计的
3、基础上,增加事件驱动机制和消息排队技术,使不同级中断模拟按照优先级排队,同级多中断源按事件触发次序排队,CPU 按中断优先级处理中断响应,对于同级多中断源,按 FIFO 方式依次处理,并赋予每个排队的中断源被处理/时间片0,保证 CPU 均能响应任何中断请求,不丢失服务事件。事件触发标志寄存器用来记录每个中断是否发生,1 标志位表示发生,CPU 尚未处理消息,只有处理完毕,才清除。事件驱动机制应用于汇编程序与面向对象程序设计有所不同,汇编程序中事件指中断,不论内中断或外中断,CPU 均要响应,但是在中断服务程序中,立即触发另一个中断或处理时间很长,就可能丢失对低优先级中断的响应,或与另一个即将
4、发生的同级中断产生矛盾。为避免这种情况发生,作为触发事件的中断服务程序不再触发另一个中断(比如发送中断,A/D 转换中断等),只进行事件标志登录和消息(待处理数据)指针排队,使事件触发型中断的处理时间较短,将消息的进一步处理交给任务调度程序按优先级排队依次处理。任务调度程序把各中断模块看成子任务,周期性(定时器定时)检查队列是否空,不空,用队列头指针(任务指针)取出消息块首址给任务程序进行处理。对于按 FIFO 结构排队的消息队列,每处理完一个消息块,立即处理下一个消息块,使每个任务都能按执行频率要求得到及时处理。3 多任务机制设计技术首先,设计一个队列 RAM 缓冲器,每个元素占用 2个字节
5、,存放消息块首址,通常用DW 伪指令创建。这个队列元素按任务优先级排队,值得注意的是,对同级多中断源(即公用一个中断向量)创建一个子队列,具有 FIFO 属性。其次,设计一个任务指针,初始化指向队列首址,再设计一个头指针和尾指针初始化均指向 FIFO子队列首址。任务指针和头指针用于读取消息块首址,尾指针用于存放事件触发产生的待处理消息块首址。接着,设计一个事件标志寄存器,初始化清零。再设计一个同级多中断源事件计数器,初始化清零。每当发生一次中断,事件计数器加 1,尾指针存放待40(744)上海欣方智能系统公司(021)3605 4510 6300 5电子技术62001 年第 12 期处理消息块
6、首址后加 2;CPU 处理完一个消息,头指针加 2,事件计数器减 1,当减为 0,头指针和尾指针重新初始化。4 设计实例锅炉仿真仪是模拟锅炉操作过程的训练装置,主要有单片机控制器,操作面板,模拟显示屏,PC 等组成。PC 运行锅炉仿真数学模型,通过 RS232C 传送锅炉运行信息给单片机控制器,后者控制操作面板按钮指示灯,模拟电压表以及报警指示灯的刷新显示,并且定时扫描操作面板的设备开停按键,阀门开度按键,调节阀调节按键,接收训练者模拟锅炉操作的按键序列,发送给 PC 评判,若操作违反规程,PC 传送信息携带有效报警开关量,通过单片机控制器点亮模拟显示屏上对应的报警灯,指示操作有误;刷新因错误
7、操作引发的按钮指示灯和模拟电压表状态,指示错在哪里。根据设计要求,每 10ms 定时中断扫描 8279 传感器矩阵构成 28 个设备开停按键,8255 并口构成的 36 个阀门开度按键和 10 个阀门开度按键。每当按下一个按键,产生 3 字节的键盘消息块发送给主机:02H(字节长度),键号,键值。通信协议要求,单片机控制器每隔 500ms 发送2字节刷新请求命令给主机 01H,0FEH。主机收不到刷新请求命令,不会传送锅炉运行信息。开始,用单任务机制编程,500ms 定时发送与仅按一个键的发送的程序容易实现,只要设置一个按键标志位,在 500ms定时发送期间或随后限定最长超时机构定时 400m
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 任务 调度 编程 技术 张小鸣
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内