#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编辑过]
|