|
1.樓主程序沒(méi)有約束在主循環(huán)中運(yùn)行,加while(1)。
2.外部中斷要采用IT0=1;//下降沿觸發(fā)。
3.錯(cuò)誤使用延時(shí)函數(shù):delay(1000000);
修改如下:
- #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;
- u8 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=1;//下降沿觸發(fā)
- while(1)
- {
- P0=0x00; //消隱
- 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];//動(dòng)態(tài)數(shù)碼管是共陰的
- k++;
- k%=8;
- delay(110);//延時(shí)1ms
- }
- }
- void Init0() interrupt 0
- {
- LED=~LED;//取反
- }
復(fù)制代碼 |
|