C51 COMPILER V6.12 _黖__觳_ 12/02/2006 20:21:57 PAGE 1 C51 COMPILER V6.12, COMPILATION OF MODULE _黖__觳_ OBJECT MODULE PLACED IN C:\DOCUME~1\LD9149~1.XC-\桌面\51\手册程序\四AEA3~1.矩\键盘检测.OBJ COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE C:\DOCUME~1\LD9149~1.XC-\桌面\51\手册程序\四AEA3~1.矩\键盘检测.C DB SB OE stmt level source 1 //4*4键盘检测程序,按下键后相应的代码显示在数码管上 2 #include 3 sbit beep=P2^3; 4 sbit dula=P2^6; 5 sbit wela=P2^7; 6 unsigned char i=100; 7 unsigned char j,k,temp,key; 8 void delay(unsigned char i) 9 { 10 1 for(j=i;j>0;j--) 11 1 for(k=125;k>0;k--); 12 1 } 13 unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 14 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; 15 display(unsigned char num) 16 { 17 1 P0=table[num]; 18 1 // P0=0xff; 19 1 dula=1; 20 1 dula=0; 21 1 P0=0xc0; 22 1 wela=1; 23 1 wela=0; 24 1 } 25 void main() 26 { 27 1 dula=0; 28 1 wela=0; 29 1 while(1) 30 1 { 31 2 P3=0xfe; 32 2 temp=P3; 33 2 temp=temp&0xf0; 34 2 if(temp!=0xf0) 35 2 { 36 3 delay(10); 37 3 if(temp!=0xf0) 38 3 { 39 4 temp=P3; 40 4 switch(temp) 41 4 { 42 5 case 0xee: 43 5 key=0; 44 5 break; 45 5 46 5 case 0xde: 47 5 key=1; 48 5 break; 49 5 50 5 case 0xbe: 51 5 key=2; 52 5 break; 53 5 54 5 case 0x7e: 55 5 key=3; C51 COMPILER V6.12 _黖__觳_ 12/02/2006 20:21:57 PAGE 2 56 5 break; 57 5 } 58 4 while(temp!=0xf0) 59 4 { 60 5 temp=P3; 61 5 temp=temp&0xf0; 62 5 beep=0; 63 5 } 64 4 beep=1; 65 4 display(key); 66 4 // P0=table[key]; 67 4 /* P0=0xff; 68 4 dula=1; 69 4 70 4 while(i--); 71 4 dula=0; 72 4 P0=0xc0; 73 4 wela=1; 74 4 wela=0; 75 4 dula=0; 76 4 wela=0; 77 4 P0=0xff; 78 4 dula=1; 79 4 dula=0; 80 4 P0=0xc5; 81 4 wela=1; 82 4 wela=0; */ 83 4 P1=0xfe; 84 4 } 85 3 } 86 2 P3=0xfd; 87 2 temp=P3; 88 2 temp=temp&0xf0; 89 2 if(temp!=0xf0) 90 2 { 91 3 delay(10); 92 3 if(temp!=0xf0) 93 3 { 94 4 temp=P3; 95 4 switch(temp) 96 4 { 97 5 case 0xed: 98 5 key=4; 99 5 break; 100 5 101 5 case 0xdd: 102 5 key=5; 103 5 break; 104 5 105 5 case 0xbd: 106 5 key=6; 107 5 break; 108 5 109 5 case 0x7d: 110 5 key=7; 111 5 break; 112 5 } 113 4 while(temp!=0xf0) 114 4 { 115 5 temp=P3; 116 5 temp=temp&0xf0; 117 5 beep=0; C51 COMPILER V6.12 _黖__觳_ 12/02/2006 20:21:57 PAGE 3 118 5 } 119 4 beep=1; 120 4 display(key); 121 4 /* P0=table[key]; 122 4 dula=1; 123 4 // while(100--); 124 4 dula=0; 125 4 P0=0xc0; 126 4 wela=1; 127 4 wela=0; 128 4 */ P1=0xfc; 129 4 } 130 3 } 131 2 P3=0xfb; 132 2 temp=P3; 133 2 temp=temp&0xf0; 134 2 if(temp!=0xf0) 135 2 { 136 3 delay(10); 137 3 if(temp!=0xf0) 138 3 { 139 4 temp=P3; 140 4 switch(temp) 141 4 { 142 5 case 0xeb: 143 5 key=8; 144 5 break; 145 5 146 5 case 0xdb: 147 5 key=9; 148 5 break; 149 5 150 5 case 0xbb: 151 5 key=10; 152 5 break; 153 5 154 5 case 0x7b: 155 5 key=11; 156 5 break; 157 5 } 158 4 while(temp!=0xf0) 159 4 { 160 5 temp=P3; 161 5 temp=temp&0xf0; 162 5 beep=0; 163 5 } 164 4 beep=1; 165 4 display(key); 166 4 /* P0=table[key]; 167 4 dula=1; 168 4 // while(100--); 169 4 dula=0; 170 4 P0=0xc0; 171 4 wela=1; 172 4 wela=0; 173 4 */ P1=0xf8; 174 4 } 175 3 } 176 2 P3=0xf7; 177 2 temp=P3; 178 2 temp=temp&0xf0; 179 2 if(temp!=0xf0) C51 COMPILER V6.12 _黖__觳_ 12/02/2006 20:21:57 PAGE 4 180 2 { 181 3 delay(10); 182 3 if(temp!=0xf0) 183 3 { 184 4 temp=P3; 185 4 switch(temp) 186 4 { 187 5 case 0xe7: 188 5 key=12; 189 5 break; 190 5 191 5 case 0xd7: 192 5 key=13; 193 5 break; 194 5 195 5 case 0xb7: 196 5 key=14; 197 5 break; 198 5 199 5 case 0x77: 200 5 key=15; 201 5 break; 202 5 } 203 4 while(temp!=0xf0) 204 4 { 205 5 temp=P3; 206 5 temp=temp&0xf0; 207 5 beep=0; 208 5 } 209 4 beep=1; 210 4 display(key); 211 4 /* P0=table[key]; 212 4 dula=1; 213 4 // while(100--); 214 4 dula=0; 215 4 P0=0xc0; 216 4 wela=1; 217 4 wela=0; 218 4 */ P1=0xf0; 219 4 } 220 3 } 221 2 } 222 1 } C51 COMPILER V6.12 _黖__觳_ 12/02/2006 20:21:57 PAGE 5 NAME CLASS MSPACE TYPE OFFSET SIZE ==== ===== ====== ==== ====== ==== P0 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0080H 1 P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1 P2 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A0H 1 P3 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1 T0 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B4H 1 AC . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D6H 1 T1 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B5H 1 EA . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AFH 1 table. . . . . . . . . . . . . . . . . PUBLIC CODE ARRAY 0000H 16 RD . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B7H 1 ES . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ACH 1 RI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0098H 1 INT0 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B2H 1 CY . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D7H 1 TI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0099H 1 INT1 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B3H 1 beep . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A3H 1 PS . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BCH 1 OV . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D2H 1 main . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H ----- dula . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A6H 1 WR . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B6H 1 wela . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A7H 1 temp . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0000H 1 IE0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0089H 1 IE1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008BH 1 ET0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A9H 1 key. . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0001H 1 ET1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ABH 1 TF0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008DH 1 TF1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008FH 1 RB8. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009AH 1 EX0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A8H 1 IT0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0088H 1 TB8. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009BH 1 EX1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AAH 1 IT1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008AH 1 P. . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D0H 1 SM0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009FH 1 SM1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009EH 1 SM2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009DH 1 PT0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B9H 1 PT1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BBH 1 RS0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D3H 1 TR0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008CH 1 RS1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D4H 1 TR1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008EH 1 PX0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B8H 1 PX1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BAH 1 _display . . . . . . . . . . . . . . . PUBLIC CODE PROC 0004H ----- num. . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1 REN. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009CH 1 i. . . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0002H 1 j. . . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0003H 1 k. . . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0004H 1 RXD. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B0H 1 TXD. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B1H 1 C51 COMPILER V6.12 _黖__觳_ 12/02/2006 20:21:57 PAGE 6 NAME CLASS MSPACE TYPE OFFSET SIZE ==== ===== ====== ==== ====== ==== _delay . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H ----- i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1 F0 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D5H 1 MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 404 ---- CONSTANT SIZE = 16 ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- DATA SIZE = 5 ---- IDATA SIZE = ---- ---- BIT SIZE = ---- ---- END OF MODULE INFORMATION. C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)