STC89C52单片机在流水灯程序中使用外部中断0
单片机P1口接8盏发光二级管,要求没有中断时8盏等由低位到高位一次点亮,当按下外部中断0(设为边沿触发)时,灯由高位到低位一次亮。以下是我编的程序,为什么当有外部中断0时...
单片机P1口接8盏发光二级管,要求没有中断时8盏等由低位到高位一次点亮,当按下外部中断0(设为边沿触发)时,灯由高位到低位一次亮。
以下是我编的程序,为什么当有外部中断0时,8盏灯没有反向点亮呢?#include<reg52.h>
int a;
void delay(unsigned i)
{
while(--i);
}
int main()
{
a=0;
EA=1;
EX0=1;
IT0=1;
P1=0xfe;
while(1)
{
if(a==0)
{delay(30000);
P1<<=1;
P1|=0x01;
if(P1==0x7f)
{
delay(30000);
P1=0xfe;
}
}
if(a==1)
{delay(30000);
P1>>=1;
P1|=0x80;
if(P1==0xfe)
{
delay(30000);
P1=0x7f;
}
}
}
}
void ISR_Key(void) interrupt 0 using 1
{
EX0=0;
if(a==0){P1=0x7f;a=1;};
if(a==1){P1=0xfe;a=0;};
EX0=1;
} 展开
以下是我编的程序,为什么当有外部中断0时,8盏灯没有反向点亮呢?#include<reg52.h>
int a;
void delay(unsigned i)
{
while(--i);
}
int main()
{
a=0;
EA=1;
EX0=1;
IT0=1;
P1=0xfe;
while(1)
{
if(a==0)
{delay(30000);
P1<<=1;
P1|=0x01;
if(P1==0x7f)
{
delay(30000);
P1=0xfe;
}
}
if(a==1)
{delay(30000);
P1>>=1;
P1|=0x80;
if(P1==0xfe)
{
delay(30000);
P1=0x7f;
}
}
}
}
void ISR_Key(void) interrupt 0 using 1
{
EX0=0;
if(a==0){P1=0x7f;a=1;};
if(a==1){P1=0xfe;a=0;};
EX0=1;
} 展开
展开全部
void ISR_Key(void) interrupt 0 using 1
{
EX0=0;
if(a==0){P1=0x7f;a=1;}; //在这一行,令a=1,马上就符合下面的条件了
if(a==1){P1=0xfe;a=0;}; //在这一行,又把a改成了0
EX0=1; //经过上面的两行,a永远是0
}
如下改动比较简单:
if(a==0){P1=0x7f;a=1;}; //这一行,不变
else{P1=0xfe;a=0;};
{
EX0=0;
if(a==0){P1=0x7f;a=1;}; //在这一行,令a=1,马上就符合下面的条件了
if(a==1){P1=0xfe;a=0;}; //在这一行,又把a改成了0
EX0=1; //经过上面的两行,a永远是0
}
如下改动比较简单:
if(a==0){P1=0x7f;a=1;}; //这一行,不变
else{P1=0xfe;a=0;};
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
STM32F4是一款非常优秀的微控制器,以下是它的一些特点:1. 高性能:STM32F4基于Cortex-M4内核,采用了DSP指令和浮点运算单元,可以实现高速的信号处理和计算。2. 多种接口:STM32F4集成了多种外设接口,包括USB、...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询