📄 ds12887.lst
字号:
032E E528 LDI R18,0x58
032F E031 LDI R19,1
0330 E500 LDI R16,0x50
0331 E011 LDI R17,1
0332 940E01DB CALL _display_char
0334 C023 RJMP 0x0358
(0093) case 0x06:display_char(n61,n62,y,x);break;
0335 836A STD Y+2,R22
0336 8348 STD Y+0,R20
0337 E628 LDI R18,0x68
0338 E031 LDI R19,1
0339 E600 LDI R16,0x60
033A E011 LDI R17,1
033B 940E01DB CALL _display_char
033D C01A RJMP 0x0358
(0094) case 0x07:display_char(n71,n72,y,x);break;
033E 836A STD Y+2,R22
033F 8348 STD Y+0,R20
0340 E728 LDI R18,0x78
0341 E031 LDI R19,1
0342 E700 LDI R16,0x70
0343 E011 LDI R17,1
0344 940E01DB CALL _display_char
0346 C011 RJMP 0x0358
(0095) case 0x08:display_char(n81,n82,y,x);break;
0347 836A STD Y+2,R22
0348 8348 STD Y+0,R20
0349 E828 LDI R18,0x88
034A E031 LDI R19,1
034B E800 LDI R16,0x80
034C E011 LDI R17,1
034D 940E01DB CALL _display_char
034F C008 RJMP 0x0358
(0096) case 0x09:display_char(n91,n92,y,x);break;
0350 836A STD Y+2,R22
0351 8348 STD Y+0,R20
0352 E928 LDI R18,0x98
0353 E031 LDI R19,1
0354 E900 LDI R16,0x90
0355 E011 LDI R17,1
0356 940E01DB CALL _display_char
0358 9623 ADIW R28,3
0359 940E0481 CALL pop_gset3
035B 9508 RET
(0097) }
(0098) }
(0099)
(0100) /*********************************读取时间值************************************/
(0101)
(0102) void readtime(void)
(0103) {
(0104) second=Read_RegSec();
_readtime:
035C DF4B RCALL _Read_RegSec
035D 93000284 STS second,R16
(0105) second10=(second&0xf0)>>4; //取得秒的十位数字
035F 2F80 MOV R24,R16
0360 7F80 ANDI R24,0xF0
0361 9582 SWAP R24
0362 708F ANDI R24,0xF
0363 93800283 STS second10,R24
(0106) second01=second&0x0f; //取得秒的个位数字
0365 2F80 MOV R24,R16
0366 708F ANDI R24,0xF
0367 93800282 STS second01,R24
(0107)
(0108) minute=Read_RegMin();
0369 DF42 RCALL _Read_RegMin
036A 93000281 STS minute,R16
(0109) minute10=(minute&0xf0)>>4; //取得分的十位数字
036C 2F80 MOV R24,R16
036D 7F80 ANDI R24,0xF0
036E 9582 SWAP R24
036F 708F ANDI R24,0xF
0370 93800280 STS minute10,R24
(0110) minute01=minute&0x0f; //取得分的个位数字
0372 2F80 MOV R24,R16
0373 708F ANDI R24,0xF
0374 9380027F STS minute01,R24
(0111)
(0112) hour=Read_RegHour();
0376 DF39 RCALL _Read_RegHour
0377 9300027E STS hour,R16
(0113) hour10=(hour&0xf0)>>4; //取得时的十位数字
0379 2F80 MOV R24,R16
037A 7F80 ANDI R24,0xF0
037B 9582 SWAP R24
037C 708F ANDI R24,0xF
037D 9380027D STS hour10,R24
(0114) hour01=hour&0x0f; //取得时的个位数字
037F 2F80 MOV R24,R16
0380 708F ANDI R24,0xF
0381 9380027C STS hour01,R24
(0115)
(0116) weekday=Read_RegWeekday();
0383 DF30 RCALL _Read_RegWeekday
0384 9300027B STS weekday,R16
(0117) weekday10=(weekday&0xf0)>>4; //取得星期的十位数字
0386 2F80 MOV R24,R16
0387 7F80 ANDI R24,0xF0
0388 9582 SWAP R24
0389 708F ANDI R24,0xF
038A 9380027A STS weekday10,R24
(0118) weekday01=weekday&0x0f;
038C 2F80 MOV R24,R16
038D 708F ANDI R24,0xF
038E 93800279 STS weekday01,R24
(0119)
(0120) monthday=Read_RegMonthday();
0390 DF27 RCALL _Read_RegMonthday
0391 93000278 STS monthday,R16
(0121) monthday10=(monthday&0xf0)>>4;
0393 2F80 MOV R24,R16
0394 7F80 ANDI R24,0xF0
0395 9582 SWAP R24
0396 708F ANDI R24,0xF
0397 93800277 STS monthday10,R24
(0122) monthday01=monthday&0x0f;
0399 2F80 MOV R24,R16
039A 708F ANDI R24,0xF
039B 93800276 STS monthday01,R24
(0123)
(0124) month=Read_RegMonth();
039D DF1E RCALL _Read_RegMonth
039E 93000275 STS month,R16
(0125) month10=(month&0xf0)>>4;
03A0 2F80 MOV R24,R16
03A1 7F80 ANDI R24,0xF0
03A2 9582 SWAP R24
03A3 708F ANDI R24,0xF
03A4 93800274 STS month10,R24
(0126) month01=month&0x0f;
03A6 2F80 MOV R24,R16
03A7 708F ANDI R24,0xF
03A8 93800273 STS month01,R24
(0127)
(0128) year=Read_RegYear();
03AA DF15 RCALL _Read_RegYear
03AB 93000272 STS year,R16
(0129) year10=(year&0xf0)>>4;
03AD 2F80 MOV R24,R16
03AE 7F80 ANDI R24,0xF0
03AF 9582 SWAP R24
03B0 708F ANDI R24,0xF
03B1 93800271 STS year10,R24
(0130) year01=year&0x0f;
03B3 2F80 MOV R24,R16
03B4 708F ANDI R24,0xF
03B5 93800270 STS year01,R24
03B7 9508 RET
_displaytime:
03B8 9721 SBIW R28,1
(0131) }
(0132)
(0133) /*********************************时间显示函数************************************/
(0134)
(0135) void displaytime(void)
(0136) {
(0137) juddisplay(year10,0,0);
03B9 2422 CLR R2
03BA 8228 STD Y+0,R2
03BB 2722 CLR R18
03BC 91000271 LDS R16,year10
03BE DF05 RCALL _juddisplay
(0138) juddisplay(year01,0,1);
03BF E081 LDI R24,1
03C0 8388 STD Y+0,R24
03C1 2722 CLR R18
03C2 91000270 LDS R16,year01
03C4 DEFF RCALL _juddisplay
(0139)
(0140) juddisplay(month10,0,4);
03C5 E084 LDI R24,4
03C6 8388 STD Y+0,R24
03C7 2722 CLR R18
03C8 91000274 LDS R16,month10
03CA DEF9 RCALL _juddisplay
(0141) juddisplay(month01,0,5);
03CB E085 LDI R24,5
03CC 8388 STD Y+0,R24
03CD 2722 CLR R18
03CE 91000273 LDS R16,month01
03D0 DEF3 RCALL _juddisplay
(0142)
(0143) juddisplay(monthday10,0,8);
03D1 E088 LDI R24,0x8
03D2 8388 STD Y+0,R24
03D3 2722 CLR R18
03D4 91000277 LDS R16,monthday10
03D6 DEED RCALL _juddisplay
(0144) juddisplay(monthday01,0,9);
03D7 E089 LDI R24,0x9
03D8 8388 STD Y+0,R24
03D9 2722 CLR R18
03DA 91000276 LDS R16,monthday01
03DC DEE7 RCALL _juddisplay
(0145)
(0146) juddisplay(weekday10,2,5);
03DD E085 LDI R24,5
03DE 8388 STD Y+0,R24
03DF E022 LDI R18,2
03E0 9100027A LDS R16,weekday10
03E2 DEE1 RCALL _juddisplay
(0147) juddisplay(weekday01,2,6);
03E3 E086 LDI R24,6
03E4 8388 STD Y+0,R24
03E5 E022 LDI R18,2
03E6 91000279 LDS R16,weekday01
03E8 DEDB RCALL _juddisplay
(0148)
(0149) juddisplay(hour10,4,3);
03E9 E083 LDI R24,3
03EA 8388 STD Y+0,R24
03EB E024 LDI R18,4
03EC 9100027D LDS R16,hour10
03EE DED5 RCALL _juddisplay
(0150) juddisplay(hour01,4,4);
03EF E084 LDI R24,4
03F0 8388 STD Y+0,R24
03F1 E024 LDI R18,4
03F2 9100027C LDS R16,hour01
03F4 DECF RCALL _juddisplay
(0151)
(0152) juddisplay(minute10,4,6);
03F5 E086 LDI R24,6
03F6 8388 STD Y+0,R24
03F7 E024 LDI R18,4
03F8 91000280 LDS R16,minute10
03FA DEC9 RCALL _juddisplay
(0153) juddisplay(minute01,4,7);
03FB E087 LDI R24,7
03FC 8388 STD Y+0,R24
03FD E024 LDI R18,4
03FE 9100027F LDS R16,minute01
0400 DEC3 RCALL _juddisplay
(0154)
(0155) juddisplay(second10,4,9);
0401 E089 LDI R24,0x9
0402 8388 STD Y+0,R24
0403 E024 LDI R18,4
0404 91000283 LDS R16,second10
0406 DEBD RCALL _juddisplay
(0156) juddisplay(second01,4,10);
0407 E08A LDI R24,0xA
0408 8388 STD Y+0,R24
0409 E024 LDI R18,4
040A 91000282 LDS R16,second01
040C DEB7 RCALL _juddisplay
040D 9621 ADIW R28,1
040E 9508 RET
_main:
040F 9729 SBIW R28,0x9
(0157) }
(0158)
(0159)
(0160) void main(void)
(0161) {
(0162)
(0163) init_devices();
0410 940E019C CALL _init_devices
(0164) LCD_Clean();
0412 940E015B CALL _LCD_Clean
(0165) LCD_Init();
0414 940E017D CALL _LCD_Init
(0166) delayds12887(20000);
0416 E200 LDI R16,0x20
0417 DE6B RCALL _delayds12887
(0167) Write_Regtime(0x00,0x41,0x21,0x06,0x07,0x07,0x07);
0418 E087 LDI R24,7
0419 8788 STD Y+8,R24
041A 838E STD Y+6,R24
041B 838C STD Y+4,R24
041C E086 LDI R24,6
041D 838A STD Y+2,R24
041E E281 LDI R24,0x21
041F 8388 STD Y+0,R24
0420 E421 LDI R18,0x41
0421 2700 CLR R16
0422 DE66 RCALL _Write_Regtime
(0168) Write_Regspecial(0x20,0x00,0x00,0x00); //寄存器A写入0X20
0423 2422 CLR R2
0424 822A STD Y+2,R2
0425 8228 STD Y+0,R2
0426 2722 CLR R18
0427 E200 LDI R16,0x20
0428 DE74 RCALL _Write_Regspecial
(0169) display_char(maohao1,maohao2,4,8); //显示冒号
0429 E088 LDI R24,0x8
042A 838A STD Y+2,R24
042B E084 LDI R24,4
042C 8388 STD Y+0,R24
042D EC28 LDI R18,0xC8
042E E031 LDI R19,1
042F EC00 LDI R16,0xC0
0430 E011 LDI R17,1
0431 940E01DB CALL _display_char
(0170) display_char(maohao1,maohao2,4,5); //显示冒号
0433 E085 LDI R24,5
0434 838A STD Y+2,R24
0435 E084 LDI R24,4
0436 8388 STD Y+0,R24
0437 EC28 LDI R18,0xC8
0438 E031 LDI R19,1
0439 EC00 LDI R16,0xC0
043A E011 LDI R17,1
043B 940E01DB CALL _display_char
(0171) display_chinese(nian1,nian2,0,1);
043D E081 LDI R24,1
043E 838A STD Y+2,R24
043F 2422 CLR R2
0440 8228 STD Y+0,R2
0441 EE20 LDI R18,0xE0
0442 E031 LDI R19,1
0443 ED00 LDI R16,0xD0
0444 E011 LDI R17,1
0445 940E0246 CALL _display_chinese
(0172) display_chinese(yue1,yue2,0,3);
0447 E083 LDI R24,3
0448 838A STD Y+2,R24
0449 2422 CLR R2
044A 8228 STD Y+0,R2
044B E020 LDI R18,0
044C E032 LDI R19,2
044D EF00 LDI R16,0xF0
044E E011 LDI R17,1
044F 940E0246 CALL _display_chinese
(0173) display_chinese(ri1,ri2,0,5);
0451 E085 LDI R24,5
0452 838A STD Y+2,R24
0453 2422 CLR R2
0454 8228 STD Y+0,R2
0455 E220 LDI R18,0x20
0456 E032 LDI R19,2
0457 E100 LDI R16,0x10
0458 E012 LDI R17,2
0459 940E0246 CALL _display_chinese
(0174) display_chinese(xing1,xing2,1,0);
045B 2422 CLR R2
045C 822A STD Y+2,R2
045D E081 LDI R24,1
045E 8388 STD Y+0,R24
045F E420 LDI R18,0x40
0460 E032 LDI R19,2
0461 E300 LDI R16,0x30
0462 E012 LDI R17,2
0463 940E0246 CALL _display_chinese
(0175) display_chinese(qi1,qi2,1,1);
0465 E081 LDI R24,1
0466 838A STD Y+2,R24
0467 8388 STD Y+0,R24
0468 E620 LDI R18,0x60
0469 E032 LDI R19,2
046A E500 LDI R16,0x50
046B E012 LDI R17,2
046C 940E0246 CALL _display_chinese
(0176) display_char(maohao1,maohao2,2,4);
046E E084 LDI R24,4
046F 838A STD Y+2,R24
0470 E082 LDI R24,2
0471 8388 STD Y+0,R24
0472 EC28 LDI R18,0xC8
0473 E031 LDI R19,1
0474 EC00 LDI R16,0xC0
0475 E011 LDI R17,1
0476 940E01DB CALL _display_char
0478 C002 RJMP 0x047B
(0177)
(0178) while(1)
(0179) {
(0180) readtime();
0479 DEE2 RCALL _readtime
(0181) displaytime();
FILE: <library>
047A DF3D RCALL _displaytime
047B CFFD RJMP 0x0479
047C 9629 ADIW R28,0x9
047D 9508 RET
pop_gset2:
047E E0E2 LDI R30,2
047F 940C0493 JMP pop
pop_gset3:
0481 E0E4 LDI R30,4
0482 940C0493 JMP pop
pop_gset4:
0484 E0E8 LDI R30,0x8
0485 940C0493 JMP pop
push_gset5:
0487 92FA ST R15,-Y
0488 92EA ST R14,-Y
push_gset4:
0489 92DA ST R13,-Y
048A 92CA ST R12,-Y
push_gset3:
048B 92BA ST R11,-Y
048C 92AA ST R10,-Y
push_gset2:
048D 937A ST R23,-Y
048E 936A ST R22,-Y
push_gset1:
048F 935A ST R21,-Y
0490 934A ST R20,-Y
0491 9508 RET
pop_gset1:
0492 E0E1 LDI R30,1
pop:
0493 9149 LD R20,Y+
0494 9159 LD R21,Y+
0495 FDE0 SBRC R30,0
0496 9508 RET
0497 9169 LD R22,Y+
0498 9179 LD R23,Y+
0499 FDE1 SBRC R30,1
049A 9508 RET
049B 90A9 LD R10,Y+
049C 90B9 LD R11,Y+
049D FDE2 SBRC R30,2
049E 9508 RET
049F 90C9 LD R12,Y+
04A0 90D9 LD R13,Y+
04A1 FDE3 SBRC R30,3
04A2 9508 RET
04A3 90E9 LD R14,Y+
04A4 90F9 LD R15,Y+
04A5 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -