1 #include <reg52.h> 2 #define uint unsigned int 3 #define uchar unsigned char 4 uchar keynum=0; 5 uchar duan[]={0xc0,~0x06,~0x5b,~0x4f,~0x66,~0x6d,~0x7d,~0x07,~0x7f,~0x6f,~0x77,~0x7c,~0x39,~0x5e,~0x79,~0x71}; 6 /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ 7 void delay() 8 { 9 int i=200; 10 while(i--); 11 } 12 void key44scan(void) 13 { 14 uchar t; 15 P2=0xfe; 16 t=P2; 17 t=t&0xf0; 18 if(t!=0xf0) 19 { 20 delay(); 21 t=P2; 22 t=t&0xf0; 23 if(t!=0xf0) 24 { 25 t=P2; 26 switch(t) 27 { 28 case 0xee:keynum=0;break; 29 case 0xde:keynum=4;break; 30 case 0xbe:keynum=7;break; 31 case 0x7e:keynum=12;break; 32 } 33 P3=duan[keynum]; 34 while(t!=0xf0) 35 { 36 t=P2; 37 t=t&0xf0; 38 } 39 } 40 } 41 /* *************************************************************************************** */ 42 P2=0xfd; 43 t=P2; 44 t=t&0xf0; 45 if(t!=0xf0) 46 { 47 delay(); 48 t=P2; 49 t=t&0xf0; 50 if(t!=0xf0) 51 { 52 t=P2; 53 switch(t) 54 { 55 case 0xed:keynum=1;break; 56 case 0xdd:keynum=5;break; 57 case 0xbd:keynum=9;break; 58 case 0x7d:keynum=13;break; 59 } 60 P3=duan[keynum]; 61 while(t!=0xf0) 62 { 63 t=P2; 64 t=t&0xf0; 65 } 66 } 67 } 68 /* *************************************************************************************** */ 69 P2=0xfb; 70 t=P2; 71 t=t&0xf0; 72 if(t!=0xf0) 73 { 74 delay(); 75 t=P2; 76 t=t&0xf0; 77 if(t!=0xf0) 78 { 79 t=P2; 80 switch(t) 81 { 82 case 0xeb:keynum=2;break; 83 case 0xdb:keynum=6;break; 84 case 0xbb:keynum=10;break; 85 case 0x7b:keynum=14;break;
86 }
87 P3=duan[keynum]; 88 while(t!=0xf0) 89 { 90 t=P2; 91 t=t&0xf0; 92 } 93 } 94 } 95 /* *************************************************************************************** */ 96 97 P2=0xf7; 98 t=P2; 99 t=t&0xf0; 100 if(t!=0xf0) 101 { 102 delay(); 103 t=P2; 104 t=t&0xf0; 105 if(t!=0xf0) 106 { 107 t=P2; 108 switch(t) 109 { 110 case 0xe7:keynum=3;break; 111 case 0xd7:keynum=7;break; 112 case 0xb7:keynum=11;break; 113 case 0x77:keynum=15;break; 114 } 115 P3=duan[keynum]; 116 while(t!=0xf0) 117 { 118 t=P2; 119 t=t&0xf0; 120 } 121 } 122 } 123 } 124 /* *************************************************************************************** */ 125 126 main() 127 { 128 129 while(1) 130 { 131 key44scan(); 132 } 133 } 134 135
136 137 138 139 140 141 142 143 144 145 146
归去来兮