C51单片机程序。利用外部中断INT0,INT1,当INT0产生中断时,使LED8亮8灭闪烁4次;

2024-11-08 11:14:10
推荐回答(2个)
回答(1):

#include
#include
#define uint unsigned int
#define uchar unsigned char

sbit LED1=P0^0;
sbit LED2=P0^1;
sbit LED3=P0^2;
sbit LED4=P0^3;
sbit LED5=P0^4;
sbit LED6=P0^5;
sbit LED7=P0^6;
sbit LED8=P0^7;

void Delay(uint ms)
{
uint i,j;
for(i=0;i for(j=0;j<1141;j++)
}

void main()
{
EX0=1;//开中断0
IT0=1;//下降沿触发
EX1=1;//开中断1
IT1=1;//下降沿触发
EA=1;//开总中断

LED1=1;
LED2=1;
LED3=1;
LED4=1;
LED5=1;
LED6=1;
LED7=1;
LED8=1;//LED初始状态为全灭
}

void INT0() interrupt 0
{
uint i;
for(i=0;i<4;i++)
{
LED8=0;
Delay(500);
LED8=1;
}
}

void INT1() interrupt 1
{
uint i;
for(i=0;i<4;i++)
{
LED1=0;
LED2=0;
Delay(500);
LED1=1;
LED2=1;
LED3=0;
LED4=0;
Delay(500);
LED3=1;
LED4=1;
LED5=0;
LED6=0;
Delay(500);
LED5=1;
LED6=1;
LED7=0;
LED8=0;
Delay(500);
LED7=0;
LED8=0;
}
}

备注:1、led对应引脚可以修改,程序中默认单片机引脚低电平点亮led,如果是高电平点亮
led,反过来设置引脚电平就可以了;
2、延时时间可以按自己需要修改;
3、#include这一句中的52根据实际需要修改,是51系列则改为51,52则改为
52,一定不能错,否则会出错。

回答(2):

你可以再主函数里面写一个条件语句,在这个条件语句里写LED8亮8灭闪烁4次。然后在外部中断中写入达成这个条件的表达式