打印

请教关于外部中断的问题

[复制链接]
1339|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jd吕凯|  楼主 | 2011-3-21 11:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟在学单片机外部中断时写了这么个程序(见笑)。我设想的结果是单片机上电时数码管出现8051,按一次按键出现1,再按一次出现2,一直按5次,出现good。可是只有刚开始8051是出现了,按一次也出现1,再按一次没有出现2。我估计是程序出现了很大问题。诸位大哥可不可以帮我看看



#include<reg51.h>
#define uchar  unsigned char
#define uint unsigned int
uchar t=0;
uint seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delay(uint x);
void main()
{
IT0=1;
EX0=1;
EA=1;
while(t==0){
P0=0xf7;
P1=0xf9;
delay(3);
P0=0xfb;
P1=0x92;
delay(3);
P0=0xfd;
P1=0xc0;
delay(3);
P0=0xfe;
P1=0x80;
delay(3);}
while(t!=0)
{
P0=0x1f;
P1=seg[t];
}
}
void delay(uint x)
{uint i,j;
for(i=x;i>0;i--)
for(j=112;j>0;j--){;}
}
void X_INT(void) interrupt 0
{EX0=0;
P1=0xff;
t+=1;
delay(1000);
  if(t==5)
{P0=0xf7;
P1=0xa1;
delay(3);
P0=0xfb;
P1=0xc0;
delay(3);
P0=0xfd;
P1=0xc0;
delay(3);
P0=0xfe;
P1=0x90;
delay(3);}
while(P3&0x04==0);
EX0=1;
}

相关帖子

沙发
tcc8073| | 2011-3-21 20:39 | 只看该作者
本帖最后由 tcc8073 于 2011-3-21 20:51 编辑

#include<reg51.h>
#define uchar  unsigned char
#define uint unsigned int
uchar t=0;
uint seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delay(uint x);
void main()
{
   IT0=1;
   EX0=1;
   EA=1;
   while(1)
   {
     if(t==0)
      {
        P0=0xf7;
        P1=0xf9;
        delay(3);
        P0=0xfb;
        P1=0x92;
        delay(3);
        P0=0xfd;
        P1=0xc0;
        delay(3);
        P0=0xfe;
        P1=0x80;
        delay(3);
      }
   }
}
void delay(uint x)
{
   uint i,j;
   for(i=x;i>0;i--)
   for(j=112;j>0;j--){;}
}
void X_INT(void) interrupt 0
{
   EX0=0;
   P1=0xff;
   t+=1;
   if(t!=5)
        {
           P0=0x1f;
           P1=seg[t];
         }
    else
        {
            P0=0xf7;
            P1=0xa1;
            delay(3);
            P0=0xfb;
            P1=0xc0;
            delay(3);
             P0=0xfd;
             P1=0xc0;
             delay(3);
             P0=0xfe;
             P1=0x90;
             delay(3);
              t=0;
        }
       while(P3&0x04==0);
        EX0=1;
}

使用特权

评论回复
板凳
tcc8073| | 2011-3-21 20:43 | 只看该作者
本帖最后由 tcc8073 于 2011-3-21 21:02 编辑

如果可能的话,尽量把程序写规范点,最后加上注释,要不以后自己再看或是修改的时候都很困难,更不用说别人修改你的程序了,我给你大概修改了一下,你按照这个思路试试,还有你的延时是不是太短了.

使用特权

评论回复
地板
jd吕凯|  楼主 | 2011-3-22 18:44 | 只看该作者
谢谢你!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

169

帖子

1

粉丝