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