基于时间片轮询的C51单片机程序设计
版权申诉
65 浏览量
更新于2024-08-21
收藏 24KB DOC 举报
C51程序的时间轮询执行机制
在单片机及嵌入式系统应用中,采用时间轮询执行的C51程序是一个非常重要的概念。该程序使用Philips公司的8位51扩展型单片机87LPC764,实现了多种功能,包括熄显示、负荷计算与控制、指示闪烁以及电表各种参数的查询等。为了实现这些功能,笔者使用ASM51语言编写了该程序,但后来发现该程序的结构非常松散,于是决定重新改写代码,使用C语言作为主要的开发语言,并采用时间片轮询方式对任务进行管理。
在该程序中,笔者定义了一个数据类型为typedef unsigned char uInt8,并将其应用于任务管理中。每个任务都被分配了一个时间间隔,到达该时间间隔时,即运行该任务的代码,以达到合理使用系统定时器资源的目的。该程序使用了一个结构体来定义任务,typedef struct { void (*proc)(void); s_count; } Op[cnt];其中,proc是不能带参数的,各任务之间的通信可以定义一个参数内存块,通过一种机制进行数据信息交互,如定义一个全局变量。
在该程序中,笔者考虑到了单片机系统的RAM限制,不能像一些实时OS那样将任务栈建立在RAM中。于是,笔者将任务栈建立在代码空间中,因而不能在程序运行时动态地分配任务栈。该程序的设计考虑到了实时系统中的任务具有时间属性的特点,即使是不需要定时的过程或任务,也不见得要时时进行查询与刷新。例如,IC卡介质检测,只需要每秒一次就足够了。这些任务也可以列入到该结构中来。
在该程序中,笔者还考虑到了任务之间的协调问题。由于小容量单片机系统的限制,需要这样做的任务并不多,总任务量也不会太多,因而这种协调并不太难处理。笔者使用时间片轮询方式对任务进行管理,以达到合理使用系统定时器资源的目的。
该C51程序的时间轮询执行机制是一个非常重要的概念,它能够合理地管理系统资源,提高系统的实时性和可靠性。该程序的设计考虑到了单片机系统的限制,使用了C语言作为主要的开发语言,并采用了时间片轮询方式对任务进行管理,从而提高了系统的性能和可靠性。
在该程序中,笔者还讨论了任务栈的建立问题。在单片机系统中,RAM的限制是一个非常重要的问题。为了解决这个问题,笔者将任务栈建立在代码空间中,而不是在RAM中。这使得系统的RAM使用率降低,提高了系统的性能和可靠性。
该C51程序的时间轮询执行机制是一个非常重要的概念,它能够合理地管理系统资源,提高系统的实时性和可靠性。该程序的设计考虑到了单片机系统的限制,使用了C语言作为主要的开发语言,并采用了时间片轮询方式对任务进行管理,从而提高了系统的性能和可靠性。
2021-10-07 上传
2021-10-05 上传
2010-03-31 上传
2021-10-02 上传
2021-10-02 上传
2021-10-02 上传
2023-07-07 上传
2022-11-30 上传
2022-09-22 上传
daoqqzhuan2
- 粉丝: 0
- 资源: 5万+
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍