B.C115 2022-07-21 22:50 采纳率: 0%
浏览 41

检查信号的持续性(51单片机)

问题遇到的现象和发生背景

检查信号持续性
检测P2^1上面信号 2s时间内一直为1(中断50ms,20次100ms,再20次2s),则led亮,中途有0则led 不亮

img

问题相关代码,请勿粘贴截图
#include <reg52.h>
sbit alarm=P2^1;
sbit led=P2^2;
unsigned char alarm_num=0;

main()
{

while(1)
{
if(alarm_num>=20)
{led=1;}
else {led=0;}

}

}

void init_time0(void)
{
TMOD|=0X01;
EA=1;
ET0=1;
TR0=1;

}
void timer0(void) interrupt 1
{
static unsigned int num;
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;

num++;
if(num==50)
  {
   if(alarm==1) 
    {alarm_num++;}
   else
    {alarm_num=0;} 

   }

}
 

运行结果及报错内容

结果LED 一直不亮

我的解答思路和尝试过的方法

中断写的,不知道问题出在哪里??

我想要达到的结果
  • 写回答

3条回答 默认 最新

  • ℘诗ོꦿ࿐ 2022-07-21 23:20
    关注

    alarm_num初始值是0,main函数里执行while无限循环中,一直在执行else下的内容:LED不亮

    评论

报告相同问题?

问题事件

  • 创建了问题 7月21日