📄 计算器.lst
字号:
163 3 temp=P3;
164 3 switch(temp)
165 3 {
166 4 case 0xeb:num=8; break;
167 4 case 0xdb:num=9; break;
168 4 case 0xbb:num=10; break;
169 4 case 0x7b:num=11; break;
170 4 }
171 3 }
172 2 while(P3!=0xfb);
173 2 if(num==8||num==9||num==10)
174 2 {
175 3 if(flag==0)
176 3 {a=a*10+table[num];}
177 3 else
178 3 {b=b*10+table[num];}
179 3 }
C51 COMPILER V7.06 计算器 02/21/2010 21:46:02 PAGE 4
180 2 if(num==11)//"-"
181 2 {
182 3 flag=1;
183 3 fuhao=2;
184 3 }
185 2 i=table1[num];
186 2 write_date(0x30+i);
187 2 }
188 1 P3=0xf7;
189 1 temp=P3;
190 1 temp=temp&0xf0;
191 1 if(temp!=0xf0)
192 1 { delay(5);
193 2 temp=P3;
194 2 temp=temp&0xf0;
195 2 if(temp!=0xf0)
196 2 {
197 3 temp=P3;
198 3 switch(temp)
199 3 {
200 4 case 0xe7:num=12; break;
201 4 case 0xd7:num=13; break;
202 4 case 0xb7:num=14; break;
203 4 case 0x77:num=15; break;
204 4
205 4 }
206 3 }
207 2 while(P3!=0xf7);//松手检测,没有松手则保持显示的状态
208 2 switch(num)
209 2 {
210 3 case 12:{
211 4 lcd_clean();
212 4 a=0;b=0;flag=0;
213 4 fuhao=0;
214 4 } break;
215 3 case 13:{
216 4 if(flag==0)
217 4 {
218 5 a=a*10;write_date(0x30);
219 5 }
220 4 else
221 4 {
222 5 b=b*10;
223 5 write_date(0x30);
224 5 }
225 4 } break;
226 3 case 14:{
227 4 if(fuhao==1)
228 4 {
229 5 write_com(0x80+0x0f);
230 5 lcd_clean();//重新定位后再清屏
231 5 write_com(0x04);
232 5 c=a+b;
233 5 while(c!=0)
234 5 {
235 6 write_date(0x30+c%10);
236 6 c=c/10;
237 6 }
238 5 write_date(0x3d);//写"="
239 5 a=0;b=0;flag=0;fuhao=0;//清0
240 5 }
241 4 else if(fuhao==2)
C51 COMPILER V7.06 计算器 02/21/2010 21:46:02 PAGE 5
242 4 {
243 5 write_com(0x80+0x0f);
244 5 lcd_clean();
245 5 write_com(0x04);
246 5 if(a-b>0)
247 5 c=a-b;
248 5 else
249 5 c=b-a;
250 5 while(c!=0)
251 5 {
252 6 write_date(0x30+c%10);
253 6 c=c/10;
254 6 }
255 5 if(a-b<0)
256 5 write_date(0x2d);//"-"
257 5 write_date(0x3d);
258 5 a=0;b=0;flag=0;fuhao=0;
259 5 }
260 4 else if(fuhao==3)
261 4 {
262 5 write_com(0x80+0x0f);
263 5 lcd_clean();
264 5 write_com(0x04);
265 5 c=a*b;
266 5 while(c!=0)
267 5 {
268 6 write_date(0x30+c%10);
269 6 c=c/10;
270 6 }
271 5 write_date(0x3d);
272 5 a=0;b=0;flag=0;fuhao=0;
273 5 }
274 4 else if(fuhao==4)
275 4 {
276 5 write_com(0x80+0x0f);
277 5 lcd_clean();
278 5 write_com(0x04);
279 5 i=0;
280 5 c=(long)(((float)a/b)*1000);//化整后再加小数点
281 5 while(c!=0)
282 5 {
283 6 write_date(0x30+c%10);
284 6 c=c/10; i++;
285 6 if(i==3)
286 6 write_date(0x2e);//加小数点"."
287 6 }
288 5 if(a/b<=0)
289 5 write_date(0x30);
290 5 write_date(0x3d);
291 5 a=0;b=0;flag=0;fuhao=0;
292 5 }
293 4
294 4 } break;
295 3 case 15:{
296 4 i=table1[num];
297 4 write_date(0x30+i);//"+"
298 4 flag=1;fuhao=1;
299 4 } break;
300 3
301 3 }
302 2 }
303 1 }
C51 COMPILER V7.06 计算器 02/21/2010 21:46:02 PAGE 6
304
305 void main()
306 {
307 1 init();
308 1 while(1)
309 1 {
310 2 keyscan();
311 2 }
312 1 }
313
314
315
316
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1620 ----
CONSTANT SIZE = 32 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 17 ----
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 + -