找回密码
 立即注册

QQ登录

只需一步,快速开始

帖子
查看: 5497|回复: 1
收起左侧

51单片机外部中断1返回后不继续执行程序

[复制链接]
ID:31196 发表于 2011-11-2 14:29 | 显示全部楼层 |阅读模式

#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的键后中断不正常,本意是从第四个灯亮,但却从最后一个灯往回亮,执行后,返回主程序也不是从中断处执行的,而是从第一个灯亮。真奇怪。各位帮我一下

中断_副本.jpg
[此贴子已经被作者于2011-11-2 14:33:29编辑过]
回复

举报

ID:31196 发表于 2011-11-3 17:36 | 显示全部楼层
没人研究中断吗?我自己找出问题了,原来是void key2()interrupt 1 这里写错了,要用interrupt 2来实现,interrupt指的是定时器中断。外部中断用的是interrupt 0 和interrupt 2.
回复

举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表