基于AT89C51芯片的多任务驱动设计_第1页
基于AT89C51芯片的多任务驱动设计_第2页
基于AT89C51芯片的多任务驱动设计_第3页
基于AT89C51芯片的多任务驱动设计_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、    基于at89c51芯片的多任务驱动设计    文辉余丽萍【摘 要】文章以单片机芯片at89c51为依托,利用高级编程c语言设计出8位单片机的多任务处理的方法。介绍了其设计的原理,从单任务入手逐步分析多任务处理的具体过程,从而实现多任务并发执行的功能。【关键词】at89c51;c语言;多任务传统的单片机程序一般采用单任务机制。所谓"单任务机制"是指该系统不能支持多任务并发操作,宏观串行地执行一个任务。由于程序只能按顺序依次执行,缺乏灵活性。多任务机制则可以宏观并行(微观上是串行)地"同時"执行多个任务。笔者设

2、计的这种多任务机制,不需使用汇编,采用常用的c语言编写,按照所给出的参数,添加自己的任务代码,就可以实现多任务的并发执行。1、单片机多任务机制的工作流程本文采用美国 atmel 公司生产的 mcs51 系列兼容芯片,在通常的单片 at89c51应用情况下,程序被设计成一段无限循环的代码while(1),即构成一个连续执行的单任务系统。2、多任务并发设计假设要控制一个led灯的闪烁,其实现过程为:点亮led,延时,关闭led,延时,依次循环下去。但是,如果需要控制两个led灯的闪烁,一个是每一秒闪烁一次,另一个没0.5秒闪烁一次,这就需要考虑将处理器的时间进行分割,不同的任务获得一定时间片段来执

3、行程序,当这个时间片到期了,就中断转而由另外任务来获得处理器的资源。本文所设计的方法为:采用一个自定义的进程控制器(变量stp)将其分成四个部分。在ledlight()函数中实现的伪代码如下。void ledlight(vopid)switch(stp)case 0:亮灯;stp+;break;case 1:延时;stp+;break;case 2:灭灯;stp+;break;case 3:延时;stp=0;break;每次进入ledlight这个函数只执行了其中的一个小部分。接下来,对其中的每个小部分进行改进为某个小的任务,而每个小任务又分成多个小部分。这样,就形成了如下图1所示的多任务机制

4、。图1 多任务结构程序流程图由于每个任务的执行时间不尽相同,因此引入定时器来处理不同的延时。其工作原理是程序判定任务的记时器是否满足条件而决定任务是否继续执行。因此上面的程序就改为:void ledlight(void)static unsigned int stp=0;switch(stp)case 0:亮灯;stp+;定时器初始化;break;case 1:if(定时器未到)break;stp+;break;case 2:灭灯;stp+;定时器初始化;break;case 3: if(定时器未到)break;stp=0;break;定时器就是用变量做累加或者递减,当所设定的值自增或自减到了

5、一定数量后(即消耗掉一定的时间)则作为一种程序的判定,如果定时器未到,则转为下一个任务执行,如果定时器到了,就开始执行本地的任务。为了使软件定时器更精准,就可以对硬件定时器的溢出次数计数。那软件定时器的定时时间就是硬件定时器溢出时间的整数倍。因此程序改为:unsigned char timer2; /*两个软件定时器*/void timere0irq(void) interrupt 1timer0+;timer1+;void ledlight(void)static unsigned int stp=0;switch(stp)case 0:亮灯;stp+;timer i=0;break;case 1:if(timeri< p>case 2:灭灯;stp+;timeri=0;break;case 3: if(timeri< p>3、结束语实现多任务操作除了本文中所介绍的方法之外还有其他的方法,如arm开发常用的?c/os-ii、rtx-51tiny等。但是rtx-51tiny必须采用keil公司的c51编译器,?c/os-ii则对芯片的ram空间要求比较高,51

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论