微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > STC89C52刷子函数问题求助

STC89C52刷子函数问题求助

时间:10-02 整理:3721RD 点击:
    本小白最近被导师批得太惨决定加紧做项目,结果被几个需要一直刷的子函数难住了。
我需要个6位数码管,一个18B20,一个PWM波以及一个4相步进电机,但是现在问题是数码管和PWM波都需要靠中断或者delay来控制或生成,如果两个都用中断的话经常是数码管显示不正确,会断一会,都用delay的话数码管一直在闪烁,而且我上网查用delay是很不好的,浪费系统资源,所以想来请教论坛大神们这种话情况应该怎么办?

以T0为例。
BYTE Flags;
main()
{
     //初始化
     while(1)
     {
            //高优先级任务
            //……………
           //低优先级任务
           if(Flags & TASK_FLAG1)
           {
              Flags &=  ~TASK_FALG1;
              DS18B20ReadTemperature();
              // 处理数据
            }
            if(Flags &TASK_FLAG2)
             {
                  Flags &=  ~TASK_FLAG2;
                  //其他操作
            }
      }
}
void OnT0Interrupt (void) interrupt 1
{
    static BYTE Period = 200;
    if( --Period == 0)
    {
          Period = 200;
          Flags |= TASK_FLAG1;
    }

    //下面是PWM操作
}

差不多就是使用类似操作系统的调度机制,要合理选择T0中断周期。

什么是刷子函数?

我第一反应也是刷子 函数,其实小编的意思是刷  子函数,哈哈。
沙发正解。

delay可以用定时器来实现

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top