一個很簡單的中斷程序,就是數碼管0-7循環動態顯示,利用外部中斷0使小燈點亮,但是接線之后小燈不亮是什么原因(已經排除接線原因),不知道程序哪里出了問題..
#include<reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit LED=P1^0;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
u16 k;
u8 table[]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,
0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};
void delay(u16 i)
{
while(i--);
}
void main()
{
EA=1;
EX0=1;
IT0=0;
for(k=0;k<8;k++)
{
switch(k)
{
case 0:LSA=0;LSB=0;LSC=0;break;
case 1:LSA=1;LSB=0;LSC=0;break;
case 2:LSA=0;LSB=1;LSC=0;break;
case 3:LSA=1;LSB=1;LSC=0;break;
case 4:LSA=0;LSB=0;LSC=1;break;
case 5:LSA=1;LSB=0;LSC=1;break;
case 6:LSA=0;LSB=1;LSC=1;break;
case 7:LSA=1;LSB=1;LSC=1;break;
}
P0=table[k]; //動態數碼管是共陰的
delay(1000000);
P0=0x00; //對P0進行清零,否則第二個數碼管會有第一個數碼管的重影
}
}
void Init0() interrupt 0
{
LED=0;
}
|