求懂AT89S51单片机的大神 解释一下这段程序是什么意思

2024-11-15 10:07:44
推荐回答(1个)
回答1:

#include
#define uchar unsigned char
#define uint unsigned int
sbit beep=P2^1;
sbit LED1=P0^0;
sbit LED2=P0^1;
uint a=0,b=0,c=0;
void delay(uint a);
void delay(uint a) //延时
{
uint i,j;
for(i=0;ifor(j=0;j<100;j++);
}
void main()
{
beep=0;
IT0=1; //外部中断0后沿触发
IT1=1; //外部中断1后沿触发
EX0=1; //开外部中断0
EX1=1; //开外部中断1
LED1=1;
LED2=1;
delay(800);
EA=1;
while(1)
{ if(a==1)
{
beep=~beep; //如果外部中断0触发以180*2毫秒周期报警
delay(180);
LED1=~LED1;
}
if(b==1)
{
beep=~beep; //如果外部中断1触发以90*2毫秒周期报警
delay(90);
LED2=~LED2;
}
if((a==1 && b==1) || c==1) //如果两个中断同时触发或者人为置位
{
a=0;
b=0;
c=1;
beep=~beep; //以300*2毫秒周期报警
LED2=~LED2;
delay(300);
LED1=~LED1;
EA=0;
} } }
void baojing1() interrupt 0
{
beep=~beep;
LED1=~LED1;
delay(100);
a=1;
}
void baojing2() interrupt 2
{
beep=~beep;
LED2=~LED2;
delay(100);
b=1;
}