初学单片机,下面是一个外部中断程序,看中断程序,按照我的理解,led灯应该是一盏一盏亮起来,而不会熄灭
(接上面)但为什么会出现流水式的亮灭呢?/*学习内容:外部中断1的设置以及中断服务程序编写,外部中断0应用与此类似。程序效果:按一下INT1按键,会看到LED流水顺序亮灭...
(接上面)但为什么会出现流水式的亮灭呢?
/*
学习内容:外部中断1的设置以及中断服务程序编写,外部中断0应用与此类似。
程序效果:按一下INT1按键,会看到LED流水顺序亮灭。
*/
#include<reg51.h>
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;
sbit led_k=P1^4;
void delayms(unsigned int i);
void int1() interrupt 2 using 2//外部中断1服务程序
{
// delayms(10);
led1=1;
delayms(100);
led2=1;
delayms(100);
led3=1;
delayms(100);
led4=1;
delayms(100);
led5=1;
delayms(100);
led6=1;
delayms(100);
led7=1;
delayms(100);
led8=1;
delayms(100);
led1=0;
delayms(100);
led2=0;
delayms(100);
led3=0;
delayms(100);
led4=0;
delayms(100);
led5=0;
delayms(100);
led6=0;
delayms(100);
led7=0;
delayms(100);
led8=0;
delayms(100);
}
main()
{
EA=1;//中断总允许位
EX1=1;//开启外部中断1
IT1=1;//IT1指中断1类型控制位,通过软件置位/清零该位来选择外部中断1以下降沿/低电平方式触发。
led_k=0;/*打开8个led的总开关*/
while(1)
{
}
}
void delayms(unsigned int i)
{
unsigned int j;
for(;i>0;i--)
for(j=100;j>0;j--);
} 展开
/*
学习内容:外部中断1的设置以及中断服务程序编写,外部中断0应用与此类似。
程序效果:按一下INT1按键,会看到LED流水顺序亮灭。
*/
#include<reg51.h>
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;
sbit led_k=P1^4;
void delayms(unsigned int i);
void int1() interrupt 2 using 2//外部中断1服务程序
{
// delayms(10);
led1=1;
delayms(100);
led2=1;
delayms(100);
led3=1;
delayms(100);
led4=1;
delayms(100);
led5=1;
delayms(100);
led6=1;
delayms(100);
led7=1;
delayms(100);
led8=1;
delayms(100);
led1=0;
delayms(100);
led2=0;
delayms(100);
led3=0;
delayms(100);
led4=0;
delayms(100);
led5=0;
delayms(100);
led6=0;
delayms(100);
led7=0;
delayms(100);
led8=0;
delayms(100);
}
main()
{
EA=1;//中断总允许位
EX1=1;//开启外部中断1
IT1=1;//IT1指中断1类型控制位,通过软件置位/清零该位来选择外部中断1以下降沿/低电平方式触发。
led_k=0;/*打开8个led的总开关*/
while(1)
{
}
}
void delayms(unsigned int i)
{
unsigned int j;
for(;i>0;i--)
for(j=100;j>0;j--);
} 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |