实验:要求是开机的时候led1灯点亮闪烁,用杜邦线给P32(外部中断0)接低电平时,led2灯点亮,led1灯熄灭。去除杜邦线P32回到高电平时,led1点亮闪烁,led2灯熄灭。
问题:现在问题是当给P32低电平的时候led2点亮了,但led1没有熄灭,而是闪烁的速度变慢了?P32回到高电平时,led2还是一直亮着?
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint);
sbit led2=P2^7; //中断时点亮这LED灯
sbit led1=P2^0;
void main()
{
EA=1;
EX0=1;
led1=0; //点亮LED灯
delay(1000); //延时
led1=1; //熄灭LED灯
delay(1000); ////延时
}
void exter0() interrupt 0
{
led2=0;
}
void delay(uint z)
{
uint x;
uchar y;
for(x=z;x>0;x--)
for(y=1000;y>0;y--);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
第二点,不管写任何程序都需要写大循环while(1);这里的led1=0; delay,led1=1;delay(1000); 应该写在while(1)里面循环。
第三点,你在外部中断里面只写了点亮led2。并没有写熄灭led1. 暂时只看出这三点,慢慢改吧。
一周热门 更多>