单片机延时控制程序

2025-04-07 09:34:50
推荐回答(2个)
回答1:

#include
#define uchar unsigned char
uchar cnt=0,sec=0;
sbit Asgn=P1^0;
sbit Bsng=P1^1;
sbit Out=P1^4;
bit flag=0;
void t0isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
cnt++;
if(cnt>=20)
    {
    cnt=0;
    sec++;
    }
}
main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EA=1;
sec1=0;
sec2=0;
while(1)
    {
    sec=0;
    cnt=0;
    TR0=0;
    while(Bsng==1);//死等B信号
        TR0=1;
        cnt=0;
        sec=0;
    while(sec1<1)   //1秒内等待A信号
        {
        if(Asng==0)
            {
            sec=0;
            cnt=0;
            flag=1;
            }
        }
        
    if(flag)   //如果出现有效信号
        {
        while(sec<3);  //等待3秒
        out=0;
        flag=0;
        }    
    }
}

回答2:

自己慢慢做吧