标题: 51单片机外部中断1返回后不继续执行程序 [打印本页]

作者: pjking1214    时间: 2011-11-2 14:29
标题: 51单片机外部中断1返回后不继续执行程序

#include <reg52.h>
char code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
sbit P14=P1^4;

void delay(unsigned int z)
{
 unsigned int x,y;
 for(x=z;x>0;x--)
  for(y=110;y>0;y--);
  
}
void main()
{
  unsigned int j;
  P14=0;
  EA=1;
  EX0=1;
  EX1=1;
  P0=0xfe;
  while(1)
  {
   for(j=0;j<8;j++)
   {
    P0=table[j];
    delay(500);
   }
  }
 
}
void KEY1() interrupt 0
{
 char j;
 for(j=7;j>-1;j--)
  {
   P0=table[j];
   delay(500);
  }
 
 
}

void KEY2() interrupt 1
{
 char t;
 for(t=3;t>-1;t--)
  {
   P0=table[t];
   delay(500);
  }
}
按P3。2的键,中断正常执行,返回后从断点处继续执行,正常,但按P3.3的键后中断不正常,本意是从第四个灯亮,但却从最后一个灯往回亮,执行后,返回主程序也不是从中断处执行的,而是从第一个灯亮。真奇怪。各位帮我一下


[此贴子已经被作者于2011-11-2 14:33:29编辑过]

作者: pjking1214    时间: 2011-11-3 17:36
没人研究中断吗?我自己找出问题了,原来是void key2()interrupt 1 这里写错了,要用interrupt 2来实现,interrupt指的是定时器中断。外部中断用的是interrupt 0 和interrupt 2.




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