#include #define COL P2 #define ROW P1 void MSDelay(unsigned int value); void SerTX(unsigned char); unsigned char keypad[4][4] = {'0','1','2','3', '4','5','6','7', '8','9','A','B', 'C','D','E','F'}; void main() { unsigned char colloc, rowloc; TMOD = 0x20; TH1 = -3; SCON = 0x50; TR1 = 1; COL = 0xFF; while(1) { do { ROW = 0x00; colloc = COL; colloc &= 0x0F; } while(colloc != 0x0F); do { do { MSDelay(20); colloc = COL; colloc &= 0x0F; } while(colloc == 0x0F); MSDelay(20); colloc = COL; colloc &= 0x0F; } while(colloc == 0x0F); while(1) { ROW = 0xFE; colloc = COL; colloc &= 0x0F; if(colloc != 0x0F) { rowloc = 0; break; } ROW = 0xFD; colloc = COL; colloc &= 0x0F; if(colloc != 0x0F) { rowloc = 1; break; } ROW = 0xFB; colloc = COL; colloc &= 0x0F; if(colloc != 0x0F) { rowloc = 2; break; } ROW = 0xF7; colloc = COL; colloc &= 0x0F; rowloc = 3; break; } if(colloc == 0x0E) SerTX(keypad[rowloc][0]); else if(colloc == 0x0D) SerTX(keypad[rowloc][1]); else if(colloc == 0x0B) SerTX(keypad[rowloc][2]); else SerTX(keypad[rowloc][3]); } } void SerTX(unsigned char x) { SBUF = x; while(TI==0); TI = 0; } void MSDelay(unsigned int value) { unsigned int x, y; for(x=0;x<1275;x++) for(y=0;y