?? key4x4.lst
字號:
C51 COMPILER V8.02 KEY4X4 12/30/2008 12:02:56 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE KEY4X4
OBJECT MODULE PLACED IN H:\MYPROJ~1\矩陣鍵盤\KEY4X4.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE H:\MYPROJ~1\矩陣鍵盤\KEY4X4.C DB SB OE
line level source
1 #include "reg51.h"
2 #include"intrins.h"
3 #define uchar unsigned char
4 #define uint unsigned int
5 #define nop _nop_() /*定義空操作指令*/
6 sbit lcdrs=P3^2;
7 sbit lcdrw=P3^3;
8 sbit lcden=P3^4;
9 unsigned char temp,num1;
10 unsigned char key;
11 unsigned char i,j;
12 uint count,num;
13 uchar code table[]={"I LOVE ME!"};
14 sbit K1=P2^7;
15 sbit K2=P2^6;
16 sbit K3=P2^5;
17 sbit K4=P2^4;
18 sbit K5=P2^3;
19 sbit K6=P2^2;
20 sbit K7=P2^1;
21 sbit K8=P2^0;
22 uchar keyscan();
23 void delay1s(void)
24 {
25 1
26 1 unsigned char i,j,k;
27 1
28 1 for(k=100;k>0;k--)
29 1
30 1 for(i=20;i>0;i--)
31 1
32 1 for(j=248;j>0;j--);
33 1
34 1 }
35
36
37
38 void delay(uint z)
39 {uchar x,y;
40 1 for(x=z;x>0;x--)
41 1 for(y=110;y>0;y--);
42 1 }
43
44 void lcdwrite_com(uchar com)
45 { lcdrw=0;
46 1 lcdrs=0;
47 1 P0=com;
48 1 delay(5);
49 1 lcden=1;
50 1 delay(5);
51 1 lcden=0;
52 1 }
53 void lcdwrite_data(uchar date)
54 {
55 1 lcdrs=1;
C51 COMPILER V8.02 KEY4X4 12/30/2008 12:02:56 PAGE 2
56 1 lcdrw=0;
57 1 P0=date;
58 1 delay(5);
59 1 lcden=1;
60 1 delay(5);
61 1 lcden=0;
62 1 }
63 void lcdinit()
64 {
65 1 lcden=0;
66 1 lcdwrite_com(0x38);
67 1
68 1 lcdwrite_com(0x01);
69 1 lcdwrite_com(0x0C);
70 1 lcdwrite_com(0x06);
71 1 lcdwrite_com(0x80);
72 1
73 1 }
74 void delaykey()
75 {
76 1 for(i=50;i>0;i--)
77 1 for(j=200;j>0;j--);
78 1 }
79
80 void main(void)
81 { lcdinit();
82 1 while(1)
83 1 {
84 2 keyscan();
85 2
86 2
87 2 } //while
88 1 }
89 uchar keyscan()
90 {
91 1 P2=0x7f;
92 1 //K1=0;
93 1 temp=P2;
94 1 temp=temp & 0x0f;
95 1 if (temp!=0x0f)
96 1 {
97 2 delaykey();
98 2 temp=P2;
99 2 temp=temp & 0x0f;
100 2 if (temp!=0x0f)
101 2 {
102 3 temp=P2;
103 3 temp=temp & 0x0f;
104 3 switch(temp)
105 3 {
106 4 case 0x0e:
107 4 key='F';
108 4 lcdwrite_com(0x01);
109 4
110 4 break;
111 4 case 0x0d:
112 4 key='B';
113 4 lcdwrite_com(0x01);
114 4 break;
115 4 case 0x0b:
116 4 key=0X38;
117 4 lcdwrite_com(0x01);
C51 COMPILER V8.02 KEY4X4 12/30/2008 12:02:56 PAGE 3
118 4 break;
119 4 case 0x07:
120 4 key=0x34;
121 4 lcdwrite_com(0x01);
122 4 break;
123 4 }
124 3 // temp=P2;
125 3
126 3 lcdwrite_data(key);
127 3
128 3
129 3 // temp=temp & 0x0f;
130 3 while(temp!=0x0f) //釋放鍵消抖
131 3 {
132 4 temp=P2;
133 4 temp=temp & 0x0f;
134 4 }
135 3 }
136 2 }
137 1
138 1 P2=0xbf;
139 1 // K2=0;
140 1 temp=P2;
141 1 temp=temp & 0x0f;
142 1 if (temp!=0x0f)
143 1 {
144 2 delaykey();
145 2 temp=P2;
146 2 temp=temp & 0x0f;
147 2 if (temp!=0x0f)
148 2 {
149 3 temp=P2;
150 3 temp=temp & 0x0f;
151 3 switch(temp)
152 3 {
153 4 case 0x0e:
154 4 key='E';
155 4 lcdwrite_com(0x01);
156 4 break;
157 4 case 0x0d:
158 4 key='A';
159 4 lcdwrite_com(0x01);
160 4 break;
161 4 case 0x0b:
162 4 key=0X37;
163 4 lcdwrite_com(0x01);
164 4 break;
165 4 case 0x07:
166 4 key=0X33;
167 4 lcdwrite_com(0x01);
168 4 break;
169 4 }
170 3 // temp=P2;
171 3 //P1^0=~P1^0;
172 3 lcdwrite_data(key);
173 3 //temp=temp & 0x0f;
174 3 while(temp!=0x0f)
175 3 {
176 4 temp=P2;
177 4 temp=temp & 0x0f;
178 4 }
179 3 }
C51 COMPILER V8.02 KEY4X4 12/30/2008 12:02:56 PAGE 4
180 2 }
181 1
182 1 P2=0xdf;
183 1 // K3=0;
184 1 temp=P2;
185 1 temp=temp & 0x0f;
186 1 if (temp!=0x0f)
187 1 {
188 2 delaykey();
189 2 temp=P2;
190 2 temp=temp & 0x0f;
191 2 if (temp!=0x0f)
192 2 {
193 3 temp=P2;
194 3 temp=temp & 0x0f;
195 3 switch(temp)
196 3 {
197 4 case 0x0e:
198 4 key='D';
199 4 lcdwrite_com(0x01);
200 4 break;
201 4 case 0x0d:
202 4 key=0X30;
203 4 lcdwrite_com(0x01);
204 4 break;
205 4 case 0x0b:
206 4 key=0X36;
207 4 lcdwrite_com(0x01);
208 4 break;
209 4 case 0x07:
210 4 key=0X32;
211 4 lcdwrite_com(0x01);
212 4 break;
213 4 }
214 3 // temp=P2;
215 3 //P1^0=~P1^0;
216 3 lcdwrite_data(key);
217 3 // temp=temp & 0x0f;
218 3 while(temp!=0x0f)
219 3 {
220 4 temp=P2;
221 4 temp=temp & 0x0f;
222 4 }
223 3 }
224 2 }
225 1
226 1 P2=0xef;
227 1 // K4=0;
228 1 temp=P2;
229 1 temp=temp & 0x0f;
230 1 if (temp!=0x0f)
231 1 {
232 2 delaykey();
233 2 temp=P2;
234 2 temp=temp & 0x0f;
235 2 if (temp!=0x0f)
236 2 {
237 3 temp=P2;
238 3 temp=temp & 0x0f;
239 3 switch(temp)
240 3 {
241 4 case 0x0e:
C51 COMPILER V8.02 KEY4X4 12/30/2008 12:02:56 PAGE 5
242 4 key='C';
243 4 lcdwrite_com(0x01);
244 4 break;
245 4 case 0x0d:
246 4 key=0X39;
247 4 lcdwrite_com(0x01);
248 4 break;
249 4 case 0x0b:
250 4 key=0X35;
251 4 lcdwrite_com(0x01);
252 4 break;
253 4 case 0x07:
254 4 key=0X31;
255 4 lcdwrite_com(0x01);
256 4 break;
257 4 }
258 3 // temp=P2;
259 3 //P1^0=~P1^0;
260 3 lcdwrite_data(key);
261 3 // temp=temp & 0x0f;
262 3 while(temp!=0x0f)
263 3 {
264 4 temp=P2;
265 4 temp=temp & 0x0f;
266 4 }
267 3 }
268 2 }
269 1
270 1 }
*** WARNING C173 IN LINE 270 OF H:\MYPROJ~1\矩陣鍵盤\KEY4X4.C: missing return-expression
C51 COMPILER V8.02 KEY4X4 12/30/2008 12:02:56 PAGE 6
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
P0 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0080H 1
P2 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A0H 1
num1 . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0000H 1
P3 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
lcden. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B4H 1
table. . . . . . . . . . . . . . . . . PUBLIC CODE ARRAY 0000H 11
lcdrs. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B2H 1
lcdrw. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B3H 1
main . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
count. . . . . . . . . . . . . . . . . PUBLIC DATA U_INT 0001H 2
delay1s. . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
j. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
k. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
temp . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0003H 1
_lcdwrite_data . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
date . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
key. . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0004H 1
num. . . . . . . . . . . . . . . . . . PUBLIC DATA U_INT 0005H 2
delaykey . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
_lcdwrite_com. . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
com. . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
i. . . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0007H 1
j. . . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0008H 1
lcdinit. . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
_delay . . . . . . . . . . . . . . . . PUBLIC CODE PROC 000FH -----
z. . . . . . . . . . . . . . . . . . * REG * DATA U_INT 0006H 2
x. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
y. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
keyscan. . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 491 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 9 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -