📄 scankey.lst
字号:
C51 COMPILER V7.50 SCANKEY 04/07/2006 12:47:44 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE SCANKEY
OBJECT MODULE PLACED IN ScanKey.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE ScanKey.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "includekey.h"
2
3 /*
4 row val
5 */
6 sbit row0=P0^0;
7 sbit row1=P0^1;
8 sbit row2=P0^2;
9 sbit row3=P0^3;
10 sbit row4=P0^4;
11 sbit row5=P0^4;
12 sbit row6=P0^5;
13 sbit row7=P0^6;
14
15 /*
16 col val
17 */
18 sbit col0=P2^7;
19 sbit col1=P2^6;
20 sbit col2=P2^5;
21 sbit col3=P2^4;
22 sbit col4=P2^3;
23 sbit col5=P2^2;
24 sbit col6=P2^1;
25 sbit col7=P2^0;
26
27 sbit col9=P1^4;
28 sbit col10=P1^3;
29 sbit col11=P1^2;
30 sbit col12=P1^1;
31
32
33 sfr rowline = 0x80;
34 sfr port1 = 0x90;
35 sfr colline = 0xA0;
36 sfr port3 = 0xB0;
37
38 #define BIT0 0x01
39 #define BIT1 0x02
40 #define BIT2 0x04
41 #define BIT3 0x08
42 #define BIT4 0x10
43 #define BIT5 0x20
44 #define BIT6 0x40
45 #define BIT7 0x80
46
47 unsigned char code UnShifted[59][2] = {
48 0x1C, 'a',
49 0x32, 'b',
50 0x21, 'c',
51 0x23, 'd',
52 0x24, 'e',
53 0x2B, 'f',
54 0x34, 'g',
55 0x33, 'h',
C51 COMPILER V7.50 SCANKEY 04/07/2006 12:47:44 PAGE 2
56 0x43, 'i',
57 0x3B, 'j',
58 0x42, 'k',
59 0x4B, 'l',
60 0x3A, 'm',
61 0x31, 'n',
62 0x44, 'o',
63 0x4D, 'p',
64 0x15, 'q',
65 0x2D, 'r',
66 0x1B, 's',
67 0x2C, 't',
68 0x3C, 'u',
69 0x2A, 'v',
70 0x1D, 'w',
71 0x22, 'x',
72 0x35, 'y',
73 0x1A, 'z',
74 0x45, '0',
75 0x16, '1',
76 0x1E, '2',
77 0x26, '3',
78 0x25, '4',
79 0x2E, '5',
80 0x36, '6',
81 0x3D, '7',
82 0x3E, '8',
83 0x46, '9',
84 0x0E, '`',
85 0x4E, '-',
86 0x55, '=',
87 0x5D, '\\',
88 0x29, ' ',
89 0x54, '[',
90 0x5B, ']',
91 0x4C, ';',
92 0x52, '\'',
93 0x41, ',',
94 0x49, '.',
95 0x4A, '/',
96 0x71, '.',
97 0x70, '0',
98 0x69, '1',
99 0x72, '2',
100 0x7A, '3',
101 0x6B, '4',
102 0x73, '5',
103 0x74, '6',
104 0x6C, '7',
105 0x75, '8',
106 0x7D, '9',
107 };
108 /*
109 key vakue
110 */
111 unsigned char code wh_keyvalue[5][8]={0x1c,0x32,0x21,0x23,0x24,0x2b,0x34,0x33,\
112 0x43,0x3b,0x42,0x4b,0x3a,0x31,0x44,0x4d,\
113 0x15,0x2d,0x1b,0x2c,0x3c,0x2a,0x1d,0x22,\
114 0x35,0x1a,0x45,0x16,0x1e,0x26,0x25,0x5a,\
115 0x2e,0x36,0x3d,0x5a,0x46,0x29,0x66,0x5a};
116
117
C51 COMPILER V7.50 SCANKEY 04/07/2006 12:47:44 PAGE 3
118 //////////////////////////////////////////////////////
119 /*
120 get key value
121 row out
122 col in
123 */
124 unsigned char getkey(void)
125 {
126 1 unsigned char keyvalue=0,temp=0,row=0,col=0,count=0,i;
127 1 rowline = 0xFF;
128 1 colline = 0x00;
129 1 while(rowline == 0xff)
130 1 {
131 2 //wait for key down;
132 2 }
133 1 dmsec(50);
134 1 if (rowline != 0xff) // if a key is still down
135 1 {
136 2 //row check
137 2 rowline = 0xff;
138 2 for(i=0; i < 8; i++)
139 2 {
140 3 temp = rowline & (BIT0 << i);
141 3 if (temp == 0)
142 3 {
143 4 row = i;
144 4 break;
145 4 }
146 3 }
147 2 //col check
148 2 rowline = 0xff;
149 2 for(i=0; i < 8; i++)
150 2 {
151 3 colline = ~(BIT0 << i);
152 3 if (rowline != 0xff)
153 3 {
154 4 col = 7 - i;
155 4 break;
156 4 }
157 3 }
158 2
159 2 keyvalue = wh_keyvalue[row][col];
160 2 }
161 1 else
162 1 {
163 2 keyvalue = NOKEY;
164 2 }
165 1 // while(rowline != 0xff)
166 1 // {
167 1 // //wait for key up;
168 1 // }
169 1 return keyvalue;
170 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 137 ----
CONSTANT SIZE = 158 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 5
IDATA SIZE = ---- ----
C51 COMPILER V7.50 SCANKEY 04/07/2006 12:47:44 PAGE 4
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 + -