圖片1.png (20.47 KB, 下載次數(shù): 60)
下載附件
2018-11-19 18:21 上傳
- #include <REGX51.H>
- #include<intrins.h>
- unsigned code LedChar[16]={
- 0xc0,0xf9,0xa4,0xb0,
- 0x99,0x92,0x82,0xf8,
- 0x80,0x90,0x88,0x83,
- 0xc6,0xa1,0x86,0x8e
- };
- void KeyScan_First_Row();
- void delay(unsigned int);
- void KeyScan();
- unsigned char Key_val=1;
- void main()
- {
- EA = 1;
- EX0 = 1;
- EX1 = 1;
- IT0 = 1;
- IT1 = 1;
- PX0 = 0;
- PX1 = 1;
- while(1)
- {
- P0 = 0xff;
- KeyScan();
- P2 = LedChar[Key_val-1];
- }
- }
- void InterruptInt0() interrupt 0
- {
- unsigned char temp = 0xfe;
- unsigned char i;
- for(i=0;i<10;i++)
- {
- P0 = temp;
- delay(200);
- temp = _crol_(temp,1);
- }
- }
- void InterruptInt1() interrupt 2
- {
- unsigned char i;
- for(i=0;i<4;i++)
- {
- P0 = 0xff;
- delay(200);
- P0 = 0x00;
- delay(200);
- }
- }
- void KeyScan_First_Row()
- {
- unsigned char temp;
- P1 = 0xef;
- if(P1!=0xef)
- {
- delay(10);
- if(P1!=0xef)
- {
- temp = P1&0x0f;
- switch(temp)
- {
- case 0x0e:Key_val=1;break;
- case 0x0d:Key_val=2;break;
- case 0x0b:Key_val=3;break;
- case 0x07:Key_val=4;break;
- default:break;
- }
- }
- }
- }
- void KeyScan()
- {
- unsigned char temp,i;
- unsigned char code Key_rows_char[]={
- 0xef,0xdf,0xbf,0x7f
- };
- for(i=0;i<4;i++)
- {
- P1 = Key_rows_char;
- if(P1!=Key_rows_char);
- {
- delay(10);
- if(P1!=Key_rows_char)
- {
- temp = P1&0x0f;
- while(P1!=Key_rows_char);
- switch(temp)
- {
- case 0x0e:Key_val=4*i+1;break;
- case 0x0d:Key_val=4*i+2;break;
- case 0x0b:Key_val=4*i+3;break;
- case 0x07:Key_val=4*i+4;break;
- default:break;
- }
- }
- }
- }
- }
- void delay(unsigned int z)
- {
- unsigned x, y;
- for(x=z;x>0;x--)
- for(y=114;y>0;y--);
- }
復制代碼
|