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;
}
展开
 我来答
做而论道
高能答主

2011-03-28 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
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;};
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
意法半导体(中国)投资有限公司
2023-06-12 广告
STM32F4是一款非常优秀的微控制器,以下是它的一些特点:1. 高性能:STM32F4基于Cortex-M4内核,采用了DSP指令和浮点运算单元,可以实现高速的信号处理和计算。2. 多种接口:STM32F4集成了多种外设接口,包括USB、... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
happyming0809
2011-03-26 · TA获得超过757个赞
知道小有建树答主
回答量:624
采纳率:0%
帮助的人:325万
展开全部
void ISR_Key(void) interrupt 0 using 1
{
EX0=0;
if(a==0){P1=0x7f;a=1;} 这里有问题了
else if(a==1){P1=0xfe;a=0;}
EX0=1;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式