📄 text5.lst
字号:
C51 COMPILER V7.50 TEXT5 06/04/2008 17:04:17 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE TEXT5
OBJECT MODULE PLACED IN Text5.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE Text5.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2
3 sfr ldata=0x90;
4 sbit rs=P2^6;
5 sbit rw=P2^5;
6 sbit en=P2^4;
7 sbit busy=P1^7;
8 void lcdready();
9 void lcddata(unsigned char value);
10 void lcdcmd(unsigned char value);
11 void countprint(void);
12 void doublekey(void);
13 void clear(void);
14 void MSDelay(unsigned int value);
15 unsigned char keypad[18]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','&',0x20};
16 unsigned char jishu[19]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
17 unsigned char store[18];
18 unsigned char colloc,rowloc;
19 unsigned char n;
20 unsigned char i=0;
21 unsigned char count;
22 unsigned char b;
23 unsigned char c;
24 unsigned char g,s;
25 unsigned char ge=0,shi=0,bai=0;
26
27 void KEYread(void);
28 void LCDprint(unsigned char row ,unsigned char col);
29
30 void main(void)
31 {
32 1 lcdcmd(0x38);
33 1 lcdcmd(0x0E);
34 1 lcdcmd(0x01);
35 1 lcdcmd(0x80);
36 1
37 1 while(1)
38 1 {
39 2 KEYread();
40 2 LCDprint(rowloc,colloc);
41 2
42 2 //doublekey();
43 2 count=10;
44 2 while(1)
45 2 {
46 3 if((P0==n)&&(count!=0))
47 3 {
48 4 MSDelay(18);
49 4 count--;
50 4 }
51 3 else
52 3 break;
53 3 }
54 2
55 2 }
C51 COMPILER V7.50 TEXT5 06/04/2008 17:04:17 PAGE 2
56 1
57 1 }
58
59 void lcdcmd(unsigned char value)
60 {
61 1 lcdready();
62 1 ldata=value;
63 1 rs=0;
64 1 rw=0;
65 1 en=1;
66 1 MSDelay(1);
67 1 en=0;
68 1 return;
69 1 }
70
71 void lcdready()
72 {
73 1 busy=1;
74 1 rs=0;
75 1 rw=1;
76 1 while(busy==1)
77 1 {
78 2 en=0;
79 2 MSDelay(1);
80 2 en=1;
81 2 }
82 1 return;
83 1 }
84
85
86
87 void KEYread(void)
88 {
89 1 P0=0xFF;
90 1 P0=0xF0;
91 1
92 1 do
93 1 {
94 2 do
95 2 {
96 3 MSDelay(1);
97 3 colloc=P0;
98 3 //colloc &=0xF0;
99 3 }while(colloc ==0xF0);
100 2
101 2 MSDelay(1);
102 2 colloc=P0;
103 2 //colloc &=0xF0;
104 2 }while(colloc ==0xF0);
105 1 n=P0;
106 1
107 1 while(1)
108 1 {
109 2 P0|=0x0E;
110 2 if(P0!=0xFE)
111 2 {
112 3 rowloc=0;
113 3 break;
114 3 }
115 2
116 2 P0&=0xF0;
117 2 P0|=0x0D;
C51 COMPILER V7.50 TEXT5 06/04/2008 17:04:17 PAGE 3
118 2 if(P0!=0xFD)
119 2 {
120 3 rowloc=1;
121 3 break;
122 3 }
123 2
124 2 P0&=0xF0;
125 2 P0|=0x0B;
126 2 if(P0 !=0xFB)
127 2 {
128 3 rowloc=2;
129 3 break;
130 3 }
131 2
132 2 P0&=0xF0;
133 2 P0|=0x07;
134 2 rowloc=3;
135 2 break;
136 2 }
137 1 P0&=0xF0;
138 1 //colloc=P0;
139 1
140 1 }
141
142 void LCDprint(unsigned char row,unsigned char col)
143 {
144 1 unsigned char value;
145 1 unsigned char no;
146 1
147 1 if(col==0xE0)
148 1 col=0;
149 1 else if(col==0xD0)
150 1 col=1;
151 1 else if(col==0xB0)
152 1 col=2;
153 1 else if(col==0x70)
154 1 col=3;
155 1 else if(col==0x60)
156 1 col=4;
157 1 else if(col==0xA0)
158 1 col=5;
159 1 else if(col==0xC0)
160 1 col=6;
161 1 no=col+ row*4;
162 1
163 1 value=keypad[no];
164 1 store[i%18]=value;
165 1 if(no==18)
166 1 {
167 2 clear();
168 2 lcdcmd(0x10);
169 2 i--;
170 2 i--;
171 2 i--;
172 2 }
173 1 /*if(no==16||no==17)
174 1 {
175 1 i++;
176 1 clear();
177 1 i--;
178 1 i--;
179 1 store[i%18]=keypad[no];
C51 COMPILER V7.50 TEXT5 06/04/2008 17:04:17 PAGE 4
180 1 }*/
181 1 i++;
182 1 if( i==17)
183 1 {
184 2 lcdcmd(0x80);
185 2 lcdcmd(0x01);
186 2 i=1;
187 2 }
188 1 lcddata(value);
189 1
190 1 lcdcmd(0x14);
191 1 lcdcmd(0xC0);
192 1 jishu[no]++;
193 1 g=jishu[no]%10;
194 1 s=jishu[no]/10;
195 1 lcddata(keypad[s]);
196 1 lcddata(keypad[g]);
197 1 //lcdcmd(0x14);
198 1
199 1
200 1
201 1 //lcdcmd(0xC0);
202 1
203 1 countprint();
204 1
205 1 lcdcmd(0x80);
206 1
207 1 for(b=0;b<i;b++)
208 1 {
209 2 lcdcmd(0x14);
210 2 }
211 1
212 1 //lcdcmd(0x8i);
213 1
214 1 }
215
216 void countprint(void)
217 {
218 1
219 1 ge++;
220 1 if(ge==10)
221 1 {
222 2 shi++;
223 2 ge=0;
224 2 if(shi==10)
225 2 {
226 3 bai++;
227 3 shi=0;
228 3 }
229 2 }
230 1 lcdcmd(0xC6);
231 1 lcddata(keypad[bai]);
232 1 lcddata(keypad[shi]);
233 1 lcddata(keypad[ge]);
234 1 }
235
236 void clear(void)
237 {
238 1 //i=i-2;
239 1 lcdcmd(0x80);
240 1 lcdcmd(0x01);
241 1 for(c=0;c<i-2;c++)
C51 COMPILER V7.50 TEXT5 06/04/2008 17:04:17 PAGE 5
242 1 lcddata(store[c]);
243 1 lcdcmd(0x14);
244 1
245 1 }
246
247
248
249 /*void doublekey(void)
250 {
251 if(rowloc==3&&colloc==1)
252 {
253 MSDelay(10);
254 if(P0!=0xE0)
255 switch(P0)
256 {
257 case 0xA0:
258 lcdcmd(0x80);
259 lcddata(0x20);
260 //lcdcmd(0xC0);
261 countprint();
262 break;
263
264 case 0x60:
265 P0|=0x0E;
266 if(P0==0x7E)
267 {
268 lcdcmd(0x80);
269 lcddata(0x26);
270 //lcdcmd(0xC0);
271 countprint();
272 break;
273 }
274
275 P0&=0xF0;
276 P0|=0x0D;
277
278 if(P0==0x7D)
279 {
280 lcdcmd(0x80);
281 lcddata(0x7C);
282 //lcdcmd(0xC0);
283 countprint();
284 break;
285 }
286
287 P0&=0xF0;
288 P0|=0x0B;
289 if(P0==0x7B)
290 {
291 lcdcmd(0x80);
292 lcddata(0x21);
293 //lcdcmd(0xC0);
294 countprint();
295 break;
296 }
297
298 lcdcmd(0x80);
299 lcddata(0x5E);
300 //lcdcmd(0xC0);
301 countprint();
302 break;
303 }
C51 COMPILER V7.50 TEXT5 06/04/2008 17:04:17 PAGE 6
304 MSDelay(10);
305 }
306 }*/
307 void lcddata(unsigned char value)
308 {
309 1 lcdready();
310 1 ldata=value;
311 1 rs=1;
312 1 rw=0;
313 1 en=1;
314 1 MSDelay(1);
315 1 en=0;
316 1 return;
317 1 }
318
319 void MSDelay(unsigned int value)
320 {
321 1 unsigned int x,y;
322 1 for(x=0; x < value; x++)
323 1 for(y=0; y< 1275; y++);
324 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 536 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 67 4
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 + -