如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
电脑纵横汇编语言多任务调度编程技术江苏石油化工学院计算机系(常州213016)张小鸣毕美华摘要文章通过实例介绍在单任务汇编语言开发环境中,加入多任务调度设计思想,使复杂多分支汇编程序编写和维护性变得非常方便,实现方法简单易行。关键词汇编语言单片机任务调度中断事件触发事件驱动机制应用于汇编程序与面向对象程序1汇编语言单任务机制编程特点设计有所不同,汇编程序中事件指中断,不论内中断8086汇编语言、MCS51/96汇编语言、DSP汇或外中断,CPU均要响应,但是在中断服务程序中,编语言等程序设计方法是建立在单任务机制基础上立即触发另一个中断或处理时间很长,就可能丢失的,具有易掌握、易模拟化、易I/O控制、代码短等对低优先级中断的响应,或与另一个即将发生的同优点,特别适合编写I/O中断处理程序、较简单数级中断产生矛盾。为避免这种情况发生,作为触发据处理算法、低速异步串行通信程序等,但是当中断事件的中断服务程序不再触发另一个中断(比如发源超过3个以上时,就暴露出一些问题。第一,当多送中断,A/D转换中断等),只进行事件标志登录和个中断源同时申请中断或在CPU响应一个中断期消息(待处理数据)指针排队,使事件触发型中断的间发生另外几个中断请求,可能造成有些中断请求处理时间较短,将消息的进一步处理交给任务调度不响应;第二,用户很难确定中断源的轻重缓急,当程序按优先级排队依次处理。优先级设置不当或高优先级中断服务程序时间太任务调度程序把各中断模块看成子任务,周期长,造成优先级较低中断得不到进一步服务;第三,性(定时器定时)检查队列是否空,不空,用队列头指既使CPU均能响应各中断源要求,可扩充性和可稳针(任务指针)取出消息块首址给任务程序进行处定性也较脆弱,一旦增加中断模块,原各模块之间的理。对于按FIFO结构排队的消息队列,每处理完平衡被打破,需要重新调试,确定各模块之间的优先一个消息块,立即处理下一个消息块,使每个任务都级和相互协调关系。由此可见,只有从机制上进行能按执行频率要求得到及时处理。改制,引入多任务机制编程原理,才能克服上述问3多任务机制设计技术题,编写经济实用的复杂程序。首先,设计一个队列RAM缓冲器,每个元素占2多任务机制的核心思想用2个字节,存放消息块首址,通常用DW伪指令创正如VisualBasic等面向对象的程序设计一样,建。这个队列元素按任务优先级排队,值得注意的在结构化程序设计的基础上,增加事件驱动机制和是,对同级多中断源(即公用一个中断向量)创建一消息排队技术,使不同级中断模拟按照优先级排队,个子队列,具有FIFO属性。同级多中断源按事件触发次序排队,CPU按中断优其次,设计一个任务指针,初始化指向队列首先级处理中断响应,对于同级多中断源,按FIFO方址,再设计一个头指针和尾指针初始化均指向FIFO式依次处理,并赋予每个排队的中断源被处理/时间子队列首址。任务指针和头指针用于读取消息块首片0,保证CPU均能响应任何中断请求,不丢失服务址,尾指针用于存放事件触发产生的待处理消息块事件。首址。事件触发标志寄存器用来记录每个中断是否发接着,设计一个事件标志寄存器,初始化清零。生,1标志位表示发生,CPU尚未处理消息,只有处再设计一个同级多中断源事件计数器,初始化清零。理完毕,才清除。每当发生一次中断,事件计数器加1,尾指针存放待40(744)上海欣方智能系统公司(021)36054510@63005电子技术62001年第12期处理消息块首址后加2;CPU处理完一个消息,头指针加2,事件计数器减1,当减为0,头指针和尾指针重新初始化。4设计实例锅炉仿真仪是模拟锅炉操作过程的训练装置,主要有单片机控制器,操作面板,模拟显示屏,PC等组成。PC运行锅炉仿真数学模型,通过RS232C传送锅炉运行信息给单片机控制器,后者控制操作面板按钮指示灯,模拟电压表以及报警指示灯的刷新显示,并且定时扫描操作面板的设备开停按键,阀门开度按键,调节阀调节按键,接收训练者模拟锅炉操图1程序框图作的按键序列,发送给PC评判,若操作违反规程,PC传送信息携带有效报警开关量,通过单片机控制器点亮模拟显示屏上对应的报警灯,指示操作有误;刷新因错误操作引发的按钮指示灯和模拟电压表状态,指示错在哪里。根据设计要求,每10ms定时中断扫描8279传感器矩阵构成28个设备开停按键,8255并口构成的36个阀门开度按键和10个阀门开度按键。每当图2队列结构按下一个按键,产生3字节的键盘消息块发送给主第一级任务调度设计一个发送/接收标志寄存机:02H(字节长度),键号,键值。器TXRXF,D0=1表示发送消息正在处理;D1=1通信