📄 lcd_clock.lst
字号:
240 4 }
241 3 while(!down);
C51 COMPILER V7.20 LCD_CLOCK 02/27/2008 10:00:01 PAGE 5
242 3 }
243 2 write_second();
244 2 TR0=1;
245 2 }
246 1 if(flag==5)
247 1 {
248 2 if(up==0)
249 2 {
250 3 delay(20);
251 3 if(up==0)
252 3 {
253 4 now.minute++;
254 4 if(now.minute==60)
255 4 {
256 5 now.minute=0;
257 5 }
258 4 }
259 3 while(!up);
260 3 }
261 2 if(down==0)
262 2 {
263 3 delay(20);
264 3 if(down==0)
265 3 {
266 4 now.minute--;
267 4 if(now.minute==-1)
268 4 {
269 5 now.minute=59;
270 5 }
271 4 }
272 3 while(!down);
273 3 }
274 2 write_minute();
275 2 write_second_nocursor();
276 2 }
277 1
278 1 if(flag==4)
279 1 {
280 2 if(up==0)
281 2 {
282 3 delay(20);
283 3 if(up==0)
284 3 {
285 4 now.hour++;
286 4 if(now.hour==24)
287 4 {
288 5 now.hour=0;
289 5 }
290 4 }
291 3 while(!up);
292 3 }
293 2 if(down==0)
294 2 {
295 3 delay(20);
296 3 if(down==0)
297 3 {
298 4 now.hour--;
299 4 if(now.minute==-1)
300 4 {
301 5 now.minute=23;
302 5 }
303 4 }
C51 COMPILER V7.20 LCD_CLOCK 02/27/2008 10:00:01 PAGE 6
304 3 while(!down);
305 3 }
306 2 write_hour();
307 2 write_second_nocursor();
308 2 }
309 1
310 1 if(flag==3)
311 1 {
312 2 if(up==0)
313 2 {
314 3 delay(20);
315 3 if(up==0)
316 3 {
317 4 today.day++;
318 4 if(today.day==monthofday(today.month,today.year))
319 4 {
320 5 today.day=1;
321 5 }
322 4 }
323 3 while(!up);
324 3 }
325 2 if(down==0)
326 2 {
327 3 delay(20);
328 3 if(down==0)
329 3 {
330 4 today.day--;
331 4 if(today.day==0)
332 4 {
333 5 today.day=monthofday(today.month,today.year);
334 5 }
335 4 }
336 3 while(!down);
337 3 }
338 2 write_day();
339 2 write_second_nocursor();
340 2 }
341 1
342 1 if(flag==2)
343 1 {
344 2 if(up==0)
345 2 {
346 3 delay(20);
347 3 if(up==0)
348 3 {
349 4 today.month++;
350 4 if(today.month==13)
351 4 {
352 5 today.month=1;
353 5 }
354 4 }
355 3 while(!up);
356 3 }
357 2 if(down==0)
358 2 {
359 3 delay(20);
360 3 if(down==0)
361 3 {
362 4 today.month--;
363 4 if(today.month==0)
364 4 {
365 5 today.month=12;
C51 COMPILER V7.20 LCD_CLOCK 02/27/2008 10:00:01 PAGE 7
366 5 }
367 4 }
368 3 while(!down);
369 3 }
370 2 write_month();
371 2 write_second_nocursor();
372 2 }
373 1
374 1 if(flag==1)
375 1 {
376 2 if(up==0)
377 2 {
378 3 delay(20);
379 3 if(up==0)
380 3 {
381 4 today.year++;
382 4 if(today.year==9999)
383 4 {
384 5 today.year=0;
385 5 }
386 4 }
387 3 while(!up);
388 3 }
389 2 if(down==0)
390 2 {
391 3 delay(20);
392 3 if(down==0)
393 3 {
394 4 today.year--;
395 4 if(today.year==1899)
396 4 {
397 5 today.year=9999;
398 5 }
399 4 }
400 3 while(!down);
401 3 }
402 2 write_year();
403 2 write_second_nocursor();
404 2 }
405 1 }
406
407 void calculate()
408 {
409 1 secondlow=now.second%10;
410 1 secondhigh=now.second/10;
411 1 minutelow=now.minute%10;
412 1 minutehigh=now.minute/10;
413 1 hourlow=now.hour%10;
414 1 hourhigh=now.hour/10;
415 1 daylow=today.day%10;
416 1 dayhigh=today.day/10;
417 1 monthlow=today.month%10;
418 1 monthhigh=today.month/10;
419 1 yearlow=today.year%10;
420 1 yearsecondlow=today.year/10%10;
421 1 yearthirdlow=today.year/100%10;
422 1 yearhigh=today.year/1000;
423 1 }
424
425 void write_sfr()
426 {
427 1 write_lcd(lcdcommand,0x06);
C51 COMPILER V7.20 LCD_CLOCK 02/27/2008 10:00:01 PAGE 8
428 1 write_lcd(lcdcommand,0x0c);
429 1 write_lcd(lcdcommand,0x80+4);
430 1 write_lcd(lcddate,yearhigh+0x30);
431 1 write_lcd(lcddate,yearthirdlow+0x30);
432 1 write_lcd(lcddate,yearsecondlow+0x30);
433 1 write_lcd(lcddate,yearlow+0x30);
434 1 write_lcd(lcdcommand,0x80+9);
435 1 write_lcd(lcddate,monthhigh+0x30);
436 1 write_lcd(lcddate,monthlow+0x30);
437 1 write_lcd(lcdcommand,0x80+12);
438 1 write_lcd(lcddate,dayhigh+0x30);
439 1 write_lcd(lcddate,daylow+0x30);
440 1 write_lcd(lcdcommand,0x80+0x40+5);
441 1 write_lcd(lcddate,hourhigh+0x30);
442 1 write_lcd(lcddate,hourlow+0x30);
443 1 write_lcd(lcddate,0x30+10);//加上冒号
444 1 write_lcd(lcdcommand,0x80+0x40+8);
445 1 write_lcd(lcddate,minutehigh+0x30);
446 1 write_lcd(lcddate,minutelow+0x30);
447 1 write_lcd(lcddate,0x30+10);//加上冒号
448 1 write_lcd(lcdcommand,0x80+0x40+11);
449 1 write_lcd(lcddate,secondhigh+0x30);
450 1 write_lcd(lcddate,secondlow+0x30);
451 1 }
452 void main()
453 {
454 1 initialize();
455 1 timer0_initialize();
456 1 while(1)//不加这一句while()循环,光标会一直在闪。
457 1 {
458 2 calculate();
459 2 keyscan();
460 2 if(flag==0)
461 2 {
462 3 write_sfr();
463 3 }
464 2 }
465 1
466 1 }
467
468
469
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1440 ----
CONSTANT SIZE = 12 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 24 1
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -