打印
[家电应用]

多任务程序的框架

[复制链接]
1125|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
w189708929|  楼主 | 2015-12-2 21:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面说的单片机也主要是51与台系芯片,也就是现在的工作。其它应用不在讨论范围。才识有限,也敬请前辈们勘误,指教。

一个真正意义的单片机系统肯定会是多任务的,怎样建立一个多任务程序的框架
1 前后台系统:   
  前台是中断程序,后台是执行主程序,当中断来了,就转到前台来执行时间性要求高的任务。不断的切换。
2 分时扫描(主程序中执行)
  分时扫描思想:
  分时扫描就是在中断中采用一些时间标志,在主程序里分时处理功能模块;
  时间精度要求很高的只能在中断中处理(比如单工通讯),但中断中尽量不要写过多的程序(计时程序是必须的);
  这种方法好想也叫时间片扫描;
  核心思想实现的几个步骤:
  第一,        用中断来计时,中断时间50或100us(这是我的习惯,数值根据自己程序设置);
  第二,        在中断程序中以50或100us为基准 放3个计时器(就是计数器)并有时间标志;100US 1MS 10MS  500MS 都可行 但时间要求精准  
  第三,        在主程序的循环里面放一个专门处理时间的子程序。
  第四,“程序是跑着来等,而不是站着来等”,(引用别人的话)
/**************************************************************************************************
程序名称:T2中断处理 功能描述:定时100US中断一次 中断10次=100x10=1Ms
输入变量:
输出变量:无
影响标志位:
***************************************************************************************************/
void Timer2_ISR() interrupt 5
{       
  TF2=0;                  //中断到来
        B_100USFlag=1;          //100us时间标志
        R_1MSCount++;           //1MS计数器++
        if(R_1MSCount==10)      //判断1MS时间是否到
        {
          R_1MSCount=0;         //清除数据
          B_1MSFlag=1;          //1MS时间标志
          R_10MSCount++;        //10MS计数器++
          if(R_10MSCount==10)   //判断10MS时间是否到
          {
            R_10MSCount=0;      //清除数据
            B_10MSFlag=1;       //10MS时间标志
          }
        }
}

接下来看看我的主程序       
while(1)
{
  这里清除看门狗
//===========================1OOUS处理的事件=============================
  
  if(B_100USFlag==1)
  {
     B_100USFlag=0;
     ADCScan_Por();   //ADC检测程序
  }
//===========================1ms处理的事件=============================
   if(B_1MSFlag==1)
   {
     B_1MSFlag=0;
     Key_Scan();    //按键程序
     ADC_ValPor();  //AD数据处理子程序(也可以在10MS处理)
   }
  
//===========================10ms处理的事件=============================
   if(B_10MSFlag==1)
   {
     B_10MSFlag=0;
     LCD_Por();         //LDC显示子程序
   }
}

很是简单明了吧!我一直是这样用的;觉得还好,当然,这里只是说一种可行的办法而已,不是说只有这种办法,如果大家有好的思想也分享一下哦,
编写程序是一门艺术,写出来很容易,但是写得好,写得精巧,那就很难了。
3)无特殊要求要将看门狗与低压复位打开(具体要求根据实际情况进行配置)

最后感谢大家能看完,在下还是菜鸟,希望能得到前辈们的指导,拜谢


2014/3/23
四非人
沙发
wlyjack| | 2015-12-4 16:39 | 只看该作者
感谢楼主的分享

使用特权

评论回复
板凳
松哥无敌| | 2015-12-6 11:42 | 只看该作者
good












































1

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

22

帖子

0

粉丝