📄 lcd_calm.lst
字号:
C51 COMPILER V7.07 LCD_CALM 04/13/2009 20:45:12 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE LCD_CALM
OBJECT MODULE PLACED IN lcd_calm.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd_calm.c DEBUG OBJECTEXTEND
stmt level source
1 #include <AT89X51.H>
2 #include<stdio.h>
3 #include<math.h>
4 #include<absacc.h>
5
6
7 unsigned char code dispcode[]="0123456789";
8
9 unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
10 unsigned char a[8];
11 unsigned char i,j;
12 unsigned char temp,x,count;
13 unsigned char key,k;
14 unsigned long sun=0,chu=0,xian=0;
15 unsigned long bian=0;
16 sbit RS=P1^5;
17 sbit RW=P1^6;
18 sbit EN=P1^7;
19 void delay(unsigned char);
20 void init();
21 void wc51r(unsigned char j);
22 void wc51ddr(unsigned char j);
23
24
25
26
27
28
29
30 void main(void)
31
32 {
33 1
34 1 TMOD=0x01;
35 1
36 1 TH0=(65536-10000) / 256;
37 1
38 1 TL0=(65536-10000) % 256;
39 1
40 1 TR0=1;
41 1
42 1 ET0=1;
43 1
44 1 EA=1;
45 1
46 1
47 1 init();
48 1 wc51r(0x80);
49 1
50 1
51 1
52 1
53 1
54 1
55 1
C51 COMPILER V7.07 LCD_CALM 04/13/2009 20:45:12 PAGE 2
56 1 count=0;
57 1
58 1
59 1
60 1 for( k=4;;k++)
61 1
62 1 {
63 2
64 2 P3=dispbitcode[k];
65 2
66 2 temp=P3;
67 2
68 2 temp=temp & 0x0f;
69 2
70 2 if (temp!=0x0f)
71 2
72 2 {
73 3
74 3 for(i=50;i>0;i--)
75 3
76 3 for(j=200;j>0;j--);
77 3
78 3 temp=P3;
79 3
80 3 temp=temp & 0x0f;
81 3
82 3 if (temp!=0x0f)
83 3
84 3 {
85 4
86 4 temp=P3;
87 4
88 4 temp=temp & 0x0f;
89 4
90 4 switch(temp)
91 4
92 4 {
93 5
94 5 case 0x0e:
95 5
96 5 if (k==4)
97 5 key=7;
98 5
99 5 if (k==5)
100 5 key=4;
101 5
102 5 if (k==6)
103 5 key=1;
104 5
105 5 if (k==7)
106 5 key=15;
107 5
108 5 break;
109 5
110 5 case 0x0d:
111 5
112 5 if (k==4)
113 5 key=8;
114 5
115 5 if (k==5)
116 5 key=5;
117 5
C51 COMPILER V7.07 LCD_CALM 04/13/2009 20:45:12 PAGE 3
118 5 if (k==6)
119 5 key=2;
120 5
121 5 if (k==7)
122 5 key=0;
123 5
124 5 break;
125 5
126 5 case 0x0b:
127 5
128 5 if (k==4)
129 5 key=9;
130 5
131 5 if (k==5)
132 5 key=6;
133 5
134 5 if (k==6)
135 5 key=3;
136 5
137 5 if (k==7)
138 5 key=14;
139 5
140 5 break;
141 5
142 5 case 0x07:
143 5
144 5 if (k==4)
145 5 key=10;
146 5
147 5 if (k==5)
148 5 key=11;
149 5
150 5 if (k==6)
151 5 key=12;
152 5
153 5 if (k==7)
154 5 key=13;
155 5
156 5 break;
157 5
158 5
159 5
160 5
161 5
162 5 }
163 4
164 4 while(temp!=0x0f)
165 4
166 4 {
167 5
168 5 temp=P3;
169 5
170 5 temp=temp & 0x0f;
171 5
172 5 }
173 4
174 4 }
175 3 }
176 2 else
177 2 key=16;
178 2 if (k==7)
179 2 k=3;
C51 COMPILER V7.07 LCD_CALM 04/13/2009 20:45:12 PAGE 4
180 2 if ((key>=0) && (key<10))
181 2 {
182 3 sun=sun*10+key;
183 3 xian=sun;
184 3 }
185 2 if ((key>9) && (key<15))
186 2 {
187 3 switch(count)
188 3 {
189 4 case 0:
190 4 count=key;
191 4 chu=sun;
192 4 sun=0;
193 4
194 4 break;
195 4
196 4 case 10:
197 4
198 4 count=key;
199 4 xian=chu/sun;
200 4 chu=xian;
201 4 sun=0;
202 4 break;
203 4
204 4 case 11:
205 4
206 4 count=key;
207 4
208 4 xian=chu*sun;
209 4
210 4 chu=xian;
211 4
212 4 sun=0;
213 4
214 4 break;
215 4
216 4 case 12:
217 4
218 4 count=key;
219 4
220 4 xian=chu-sun;
221 4
222 4 chu=xian;
223 4
224 4 sun=0;
225 4 break;
226 4
227 4 case 13:
228 4
229 4 count=key;
230 4
231 4 xian=chu+sun;
232 4
233 4 chu=xian;
234 4
235 4 sun=0;
236 4 break;
237 4
238 4 case 14:
239 4
240 4
241 4 count=key;
C51 COMPILER V7.07 LCD_CALM 04/13/2009 20:45:12 PAGE 5
242 4
243 4 break;
244 4
245 4
246 4 }
247 3 }
248 2 if (key==15)
249 2 {
250 3 count=0;
251 3
252 3 sun=0;
253 3
254 3 chu=0;
255 3
256 3 xian=0;
257 3 }
258 2
259 2
260 2
261 2 }
262 1 }
263 void t0(void) interrupt 1 using 0
264
265 {
266 1 TR0=0;
267 1
268 1 TH0=(65536-4000) / 256;
269 1
270 1 TL0=(65536-4000) % 256;
271 1
272 1 if (bian!=xian)
273 1 {
274 2 a[7]=xian/10000000;
275 2 a[6]=xian%10000000/1000000;
276 2 a[5]=xian%1000000/100000;
277 2 a[4]=xian%100000/10000;
278 2 a[3]=xian%10000/1000;
279 2 a[2]=xian%1000/100;
280 2 a[1]=xian%100/10;
281 2 a[0]=xian%10;
282 2
283 2
284 2 x=0;
285 2
286 2 wc51r(0x01);
287 2 wc51r(0x80);
288 2
289 2
290 2
291 2 while(!(a[7-x]>0))
292 2 {
293 3
294 3 if (x>6)
295 3 break;
296 3 else
297 3 x++;
298 3 }
299 2
300 2 for(;x<8;x++)
301 2 {
302 3 wc51ddr(dispcode[a[7-x]]);
303 3 }
C51 COMPILER V7.07 LCD_CALM 04/13/2009 20:45:12 PAGE 6
304 2
305 2 bian=xian;
306 2
307 2 }
308 1
309 1 TR0=1;
310 1
311 1 }
312
313
314
315
316
317
318 void init()
319 {
320 1 wc51r(0x01);
321 1
322 1 wc51r(0x38);
323 1
324 1 wc51r(0x0f);
325 1
326 1 wc51r(0x06);
327 1
328 1 }
329
330
331 void wc51r(unsigned char i)
332 {
333 1 EN=0;RS=0;RW=0;
334 1 EN=1;
335 1 P2=i;
336 1 EN=0;
337 1 delay(5);
338 1
339 1 }
340 void wc51ddr(unsigned char i)
341 {
342 1 EN=0;RS=1;RW=0;
343 1 EN=1;
344 1 P2=i;
345 1 EN=0;
346 1 delay(5);
347 1
348 1 }
349 void delay(unsigned char p)
350 { unsigned char y=0;
351 1 for(;p>0;p--)
352 1 { for(y=0;y<125;y++)
353 2 {;}
354 2 }
355 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1099 ----
CONSTANT SIZE = 19 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 31 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
C51 COMPILER V7.07 LCD_CALM 04/13/2009 20:45:12 PAGE 7
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -