1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| #include <reg52.h> unsigned char code led[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//共阳数码管断码 //unsigned char code TRY[8]={0xfe,0xfd,0Xfb,0xf7,0xef,0xdf,0xbf,0x7f}; bit flag; sbit K1=P3^2; void delay(unsigned int j) { unsigned int x; for(x=0;x<j;x++); } void key\_scan() { if(flag ==0) return ; if(P1!=0xff) { delay(100); if(P1!=0xff) { flag=0; switch(P1) { case 0xfe: P0=led[1]; break; case 0xfd: P0=led[2]; break; case 0Xfb: P0=led[3]; break; case 0xf7: P0=led[4]; break; case 0xef: P0=led[5]; break; case 0xdf: P0=led[6]; break; case 0xbf: P0=led[7]; break; case 0x7f: P0=led[8]; break; } } } } void main() { IT0=1;//跳变沿出发方式(下降沿) EX0=1;//打开INT0的中断允许。 EA=1;//打开总中断 P0=led[0]; flag=1; while(1) { key\_scan(); } }
void Int0() interrupt 0 //外部中断0的中断函数 { delay(1000); //延时消抖 if(K1==0) { flag=1; P0=led[0]; } }
|