该体系框架优点在于:可方便地构建控制关系并行的多线程架构;任务线程的执行时间明确;同时对调整任务线程执行时序、维护功能模块提供了便利。
缺陷是:由于构成的是非抢占式控制方式,在线程调度处理上不能确保时间关键的异步事件优先执行,这也是其器件内核的固有缺陷。
2 确定时间片长度
在统筹考虑任务线程段的代码量、外设响应、系统响应性能以及线程切换的数据保护量后,确定以lOms作线程时间片的切换单位。主要考虑以下几方面因素:
(1)任务线程段代码量的大小
根据各功能模块大小,依据相关性以及时序等逻辑关系,在考虑各功能模块内聚性、线程切换运算量的基础上,进行模块分解、合并,组成线程执行代码段,以确保线程执行代码段(包括中断服务程序的执行时间)能在时间片内完成,从而简化了控制模型,降低了多线程中上下文之间切换的复杂度。
例如处理键盘输入,为实现键盘输入的消抖动干扰、冗余读取键值以及持续按键与点击按键功能。通过设置若干标识变量,细分键值处理线程的时序作业步骤,使每个作业执行时间片小于lOms,从而适应时钟片调度的时间约束条件,降低设计风险。
对按键的20~30ms防抖动延时,可通过设置标识量keydelay,在时间片中断服务程序中进行延时计数,而在主循环程序中就可进行如下处理。

(2)外设响应
在考虑MCU同各种外设交互的延时因素中,要综合平衡外设延时时间、线程切换、时间片周期等因素对系统整体综合性能的影响,最大限度地提升CPU利用率。
(3)A/D数据转换速率
对所读温度、功率值的采样频率,根据C8051F005的片上A/D转换速率以及数字滤波处理的信号冗余读数要求,兼顾时间片大小。
3 特别注意事项
①时间片中断T2应设最高优先级,以免其他中断程序干扰时间片调度程序的实时性处理。
②中断服务程序的调度算法应尽量简短,提高系统的响应能力。
③注意堆栈操作的溢出控制。
④分配在时间片中的线程代码段要有合理的组合与调度考虑,以均衡负担CPU的时间片,降低设计风险。
⑤在初始化系统状态时,确保线程状态标识的创建,以及时间片中断T2的使能。
⑥慎重处理中断服务程序执行时间,避免挤占线程时间片的正常处理,引起控制紊乱、系统崩溃。
结语
针对日益复杂、多样、高实时要求的应用项目,本文提供了一种易于设计、功能便于扩充的解决方案。由此也启示我们,采用正确、灵活的设计方法,综合运用现有技术,可有效提高单片机应用系统性能,扩大应用领域,增强实时控制能力,降低开发难度。
当前,随着IT业的硬件技术不断提升,探求高效软件方法同样是不容忽视的问题。虽然一些低效、存在速度瓶颈的程序问题.会随着时问推移因硬件技术的提升而化解,但编写高效软件是锻炼、提升编程人员技术水平的途径,有极强的技术性,需要有的放矢、长期的代码实践,才能磨砺出编写高效代码的技巧、方法和能力。在资源、设计成本、交货时间允许的日常设计中,应进行多重算法的优劣选择,而不要简单地使用头脑中首位闪现的方案。