文章发表于:2007-10-04 00:03
[日期:2006-11-3] | 来源:电子设计应用 作者:厦门大学 王辉堂 颜自勇 陈文芗 |
如果采用单任务机制, 主板的程序流程如图2所示。在主函数中循环检测传感器状态,如有异常则调用报警函数,灾难报警和功能设置在串口中断中完成。这种单任务结构有两个缺点。首先,在各种非平时状态中,程序需要不停地检测是否收到撤除信号,这个要求在程序代码量大、执行工作较多的情况下很难实现。其次,各状态之间的切换十分困难,用C语言写的程序为求模块化,一般函数数量较多,函数调用的嵌套层数也多,要从一个较深的嵌套立刻跳出到主函数,是非常困难的。一般的解决方法或是使用C51的库函数setjmp()和longjmp()实现长跳转,但是这两个函数在中断函数内部是无能为力的;再或是在C函数中嵌入汇编指令。虽然用汇编指令可以实现程序的长距离跳转,但是这种方法的调试过程十分烦琐,而且程序的可移植性差。对于习惯用C51编程而不想用汇编的设计者,该部分程序是一个难题。
文章评论(0条评论)
登录后参与讨论