📄 keyscan.lst
字号:
C51 COMPILER V8.02 KEYSCAN 02/26/2008 11:39:04 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE KEYSCAN
OBJECT MODULE PLACED IN keyscan.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE keyscan.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //#include <lcd.c>
2 #include <reg51.h>
3 #define uchar unsigned char
4 #define uint unsigned int
5 void lcd_wr(char a);
6 //sbit dc=P2^0;
7 //sbit rw=P2^1;
8 //sbit cs=P2^4;
9
10 void delay(uint i)
11 {while(i--);}
12
13 uchar keyscan(void)
14 {uchar rcode , lcode;
15 1 P0=0xf0;
16 1 if((P0&0xf0)!=0xf0)
17 1 {delay(500);
18 2 if((P0&0xf0)!=0xf0)
19 2 {rcode = 0xfe;
20 3 while((rcode&0x10)!=0)
21 3 {P0 = rcode;
22 4 if((P0&0xf0)!=0xf0)
23 4 {lcode = P0&0xf0;
24 5 rcode = rcode&0x0f;
25 5 return(rcode+lcode);
26 5 }
27 4 else
28 4 rcode = (rcode<<1)|0x01;
29 4 }
30 3 }
31 2 }
32 1 return(0);
33 1 }
34
35 /*void lcd_wr(uchar a)
36 {
37 P0 = a;
38 } */
39
40 void main(void)
41 {uchar key;
42 1 while(1)
43 1 {
44 2 key = keyscan();
45 2 switch(key)
46 2 {
47 3 case 0xee:lcd_wr('0');
48 3 case 0xde:lcd_wr('1');
49 3 case 0xbe:lcd_wr('2');
50 3 case 0x7e:lcd_wr('3');
51 3 case 0xed:lcd_wr('4');
52 3 case 0xdd:lcd_wr('5');
53 3 case 0xbd:lcd_wr('6');
54 3 case 0x7d:lcd_wr('7');
55 3 case 0xeb:lcd_wr('8');
C51 COMPILER V8.02 KEYSCAN 02/26/2008 11:39:04 PAGE 2
56 3 case 0xdb:lcd_wr('9');
57 3 case 0xbb:lcd_wr('+');
58 3 case 0x7b:lcd_wr('-');
59 3 case 0xe7:lcd_wr('*');
60 3 case 0xd7:lcd_wr('%');
61 3 case 0xb7:lcd_wr('=');
62 3 case 0x77:lcd_wr('0');
63 3 default :break;
64 3 }
65 2 delay(500);
66 2 }
67 1
68 1 }
69
70
71
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 223 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -