标题: 写了个简单的中断程序,目的是按下第一个按键数码管加1,第二个按键启用中断清零 [打印本页]

作者: 飞鸿之梦    时间: 2016-12-25 23:10
标题: 写了个简单的中断程序,目的是按下第一个按键数码管加1,第二个按键启用中断清零
大神帮帮忙看哪里出错了

#include<reg51.h>


sbit button1=P2^5;
sbit button2=P2^7;




char j=0;
unsigned char duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};


void delay()
{
int i=200;
while(i--);
}


void res() interrupt 0
{
        while(1)
        {
          if(button2==0)
        {
         delay();
        if(button2==0)
        j=0;
        while(!button2);
        }
        }
}


void main()
{         
   EA=1;
   EX0=1;
   IT0=1;       
  while(1)
{
        if(button1==0)
        {
         delay();
        if(button1==0)
        j++;
        if(j==10)
        j=0;
        while(!button1);
        }
        P0=duan[j];
}


}


360截图20161225230424387.jpg (118.71 KB, 下载次数: 65)

360截图20161225230424387.jpg

作者: 飞鸿之梦    时间: 2016-12-25 23:17
按键1的功能实现了,但按键2中断的功能没实现
作者: 不倒翁.WZT    时间: 2016-12-26 09:05
标题: RE: 写了个简单的中断程序,目的是按下第一个按键数码管加1,第二个按键启用中断清零
不难看出button2键是用外部中断进行控制,既然利用外部中断,那么IO口是不能随便的,外部中断INT0口是P3.2,所以button2键不能用P2.7口。大循环中的button1键用P2.5口是可以的。
作者: a0931727149    时间: 2016-12-26 10:34
飞鸿之梦 发表于 2016-12-25 23:17
按键1的功能实现了,但按键2中断的功能没实现

p2.7 並不是外部中斷的輸入  ....at8c51 P3.2 才對
作者: love105827    时间: 2016-12-26 16:57
本帖最后由 love105827 于 2016-12-26 16:58 编辑

看错了。。
作者: love105827    时间: 2016-12-26 17:00
本帖最后由 love105827 于 2016-12-26 17:04 编辑

外部中断int0 按键需要接在P3.2口上才有效 int1P3.3,后边中断里面的语句你也没写
作者: 飞鸿之梦    时间: 2016-12-27 18:51
谢谢各位大神的帮助问题已解决了





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1