#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit d2=P2; //定義P2口LED。
sbit n1=P1^3; //定義P1^3口的LED燈。
void delay(int);
uint num;
uint table[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x98,0x88,0x83,
0xc6,0xa1,0x86,0x8e
}; //控制數(shù)碼管段碼從0——F亮。
void main(void)
{
EA=1; //開(kāi)總中斷開(kāi)關(guān)
EX0=1; //開(kāi)外部中斷0
IT0=0; //設(shè)置中斷觸發(fā)方式
while(1)
{
for(num=0;num<16;num++)
{
d2=0; //點(diǎn)亮數(shù)碼管
P0=table[num];
delay(12450); //延時(shí)閃爍。
d2=1; //關(guān)閉數(shù)碼管。
}
}
}
void delay(int z) //延時(shí)程序。
{
uint i,j;
for(i=z;i>0;i--)
for(j=2;j>0;j--);
}
void exter0() interrupt 0 //中斷程序。
{
n1=0; //打開(kāi)P1^3口
delay(1); //延時(shí)。
}
我用的單片機(jī)是沒(méi)有鎖存器的,數(shù)碼管是共陽(yáng)極的。與外部中斷相關(guān)的是P3.2口。
我用線把P3.2接地。按理來(lái)說(shuō),如果不拔掉這個(gè)線,中斷就沒(méi)有停止,也就回不了主程序中去。但是沒(méi)有,單片機(jī)還會(huì)回到主程序中去執(zhí)行數(shù)碼管的閃爍,一頓飯時(shí)間,數(shù)碼管就從6變?yōu)镃,只是數(shù)碼管閃爍得慢了很多,但并沒(méi)有停止。
我不明白這個(gè)程序哪里出錯(cuò)了?