微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 程序问题,外部中断触发不了,请大神指点

程序问题,外部中断触发不了,请大神指点

时间:10-02 整理:3721RD 点击:
#include<reg52.h>
sbit key_1 = P3^7;//按键对应这个口
sbit count = P3^3;//外部中断触发端口是这个
unsigned int i,z;
char code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//流水灯对应这个的位操作
void delay(uint);
void main()
{
        count = key_1;
        P2 = table[i];
        EA = 1;
        EX1 = 1;外部中断1
        IT1 = 0;低电平触发
        while(1);
}
void int1_int()interrupt 2
{
        i++;//按一次键,i加一次,数组对应的位数变化一次,
        if(i >= 8)i =0;       
}
void delay(z)
{
        unsigned int x,y;
        for(x = z;x>0;x--)
                for(y = 110;y>0;y--);
}

我觉得你错的地方太多了,不是一句两句就能说得清。不过你可以看看我回答坛友的有关中断的帖子,希望能帮到你。
http://bbs.elecfans.com/jishu_920471_1_1.html

你没有接外部中断的触发口,所以不能触发  要接P30

按键不需要另外定义口了!直接接到3-3就可以了

对应的程序对么,特别是中断号

明显的程序不对啊。

按键直接接中断口就可以的

修改好的程序如下,我语法不规范。明显,应用程序写到了初始化的前面,其实 i 在中断里面确实自加,但是, count = key_1; P2 = table[i];实际上就执行了一次,后面都是while(1);自己在玩。小结:这里修改之后,按一次按键,灯有时候跳了多次,而不是一个个的亮。所以还要加一个按键消抖才好。
#include<reg52.h>
sbit key_1 = P3^7;//按键对应这个口
sbit count = P3^3;//外部中断触发端口是这个
unsigned int i,z;
char code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//流水灯对应这个的位操作
void delay(uint);
void main()
{
      
        EA = 1;
        EX1 = 1;外部中断1
        IT1 = 0;低电平触发
        while(1)
           {
               count = key_1;
               P2 = table[i];
          }
}
void int1_int()interrupt 2
{
        i++;//按一次键,i加一次,数组对应的位数变化一次,
        if(i >= 8)i =0;        
}
void delay(z)
{
        unsigned int x,y;
        for(x = z;x>0;x--)
                for(y = 110;y>0;y--);
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top