基于时间片轮询的C51单片机程序设计

版权申诉
0 下载量 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语言作为主要的开发语言,并采用了时间片轮询方式对任务进行管理,从而提高了系统的性能和可靠性。