本帖最后由 蓝天之歌 于 2022-7-19 09:19 编辑
图片PIC单片机1508定时器0配置1ms。函数 SL_DRL_scan在定时0运行
void SL_DRL_scan(void)
static uint8_t cycle=125,ratio=0,low_tim=0;//周期,比率
if(cycle==0)
{
if(ratio>=100)
{
}
else if(ratio<50 && ratio>=8)
{
D_LED=1;//灯亮起
}
else if(ratio<4)
{
}
ratio=0;
cycle=125;
}
else
{
if(D_PORT)//输入高电平
{
ratio++; //比率加1
}
else
{
low_tim++;
if(low_tim>=50)
{
ratio=0;
cycle=125;
}
}
}
cycle--;
}
这个函数是对(80hz) 12.5ms输入波形进行判断(配置和代码实验过可以正确判断运行)
个人不太理解的是定时器0是1MS 中断,想要12.5ms输入波形进行判断,cycle=125不应该是12.5或者定时器0配置0.1ms中断,所以不此求教想问一下这个函数原理是怎么样的
|