大侠们,恳请指点
按住INT0键不放,CPU应该在响应中断(低电平有效),数码管显示计数应该停止( IT0=0;//不写也可以,默认就是0,与 I/O口默认为1不同,,这是电平触发方式。保持电平则,永远在中断程序内部,不会出来。),我下面的程序为什么按住INT0键数码管还会有数字显示变化?只是变化得慢了些。 为什么中断程序变大(在中断程序中增加延时或语句)就没有上述现象了?
/************************************************************************** *Project : 数码管显示 * *File name:digtalled.c * * Author : * Version : V1.0 * Date : 2009-6-30 * Description : ****************************************************************************/ #include <reg52.h> #define uchar unsigned char #define uint unsigned int sbit led=P1^0; sbit du=P1^1; sbit we=P1^2; sbit BUZZ=P1^4; code uchar table[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; void delay(uint i) { uint j; for(;i>0;i--) for(j=114;j>0;j--); } void main() { uchar i; led=0; EA=1;//开总中断 EX0=1;//开外部中断0 //IT0=1; TCON=0x00; we=1; P0=0xaa; we=0; while(1) { for(i=0;i<10;i++) { du=1; P0=table; du=0; BUZZ=1; delay(500); } } } void exter0() interrupt 0 {
BUZZ=0; // delay(500);//增加这些语句才会真正响应中断,显示才停止在某个数字。 // led=1; // P0=0xfe; // led=0; // delay(500);
}
|