📄 1302-162.lst
字号:
0254 F409 BNE 0x0256
0255 C042 RJMP 0x0298
0256 3064 CPI R22,4
0257 E0E0 LDI R30,0
0258 077E CPC R23,R30
0259 F409 BNE 0x025B
025A C045 RJMP 0x02A0
025B 3065 CPI R22,5
025C E0E0 LDI R30,0
025D 077E CPC R23,R30
025E F409 BNE 0x0260
025F C04B RJMP 0x02AB
0260 3066 CPI R22,6
0261 E0E0 LDI R30,0
0262 077E CPC R23,R30
0263 F409 BNE 0x0265
0264 C04E RJMP 0x02B3
0265 3067 CPI R22,7
0266 E0E0 LDI R30,0
0267 077E CPC R23,R30
0268 F409 BNE 0x026A
0269 C054 RJMP 0x02BE
026A 3068 CPI R22,0x8
026B E0E0 LDI R30,0
026C 077E CPC R23,R30
026D F409 BNE 0x026F
026E C057 RJMP 0x02C6
026F 3069 CPI R22,0x9
0270 E0E0 LDI R30,0
0271 077E CPC R23,R30
0272 F409 BNE 0x0274
0273 C05D RJMP 0x02D1
0274 306A CPI R22,0xA
0275 E0E0 LDI R30,0
0276 077E CPC R23,R30
0277 F409 BNE 0x0279
0278 C060 RJMP 0x02D9
0279 C062 RJMP 0x02DC
(0133) {
(0134) case 0 :write_data(0x88,((read_data(0x89))&0x0f)|(t<<4));;break;//0
027A E809 LDI R16,0x89
027B DE0F RCALL _read_data
027C 2F84 MOV R24,R20
027D 708F ANDI R24,0xF
027E 9582 SWAP R24
027F 2F20 MOV R18,R16
0280 702F ANDI R18,0xF
0281 2B28 OR R18,R24
0282 E808 LDI R16,0x88
0283 DDD1 RCALL _write_data
0284 C057 RJMP 0x02DC
(0135) case 1 :write_data(0x88,((read_data(0x89))&0xf0)|t);;break;
0285 E809 LDI R16,0x89
0286 DE04 RCALL _read_data
0287 2F20 MOV R18,R16
0288 7F20 ANDI R18,0xF0
0289 2B24 OR R18,R20
028A E808 LDI R16,0x88
028B DDC9 RCALL _write_data
028C C04F RJMP 0x02DC
(0136) case 2 :write_data(0x86,((read_data(0x87))&0x0f)|(t<<4));;break;
028D E807 LDI R16,0x87
028E DDFC RCALL _read_data
028F 2F84 MOV R24,R20
0290 708F ANDI R24,0xF
0291 9582 SWAP R24
0292 2F20 MOV R18,R16
0293 702F ANDI R18,0xF
0294 2B28 OR R18,R24
0295 E806 LDI R16,0x86
0296 DDBE RCALL _write_data
0297 C044 RJMP 0x02DC
(0137) case 3 :write_data(0x86,((read_data(0x87))&0xf0)|t);;break;
0298 E807 LDI R16,0x87
0299 DDF1 RCALL _read_data
029A 2F20 MOV R18,R16
029B 7F20 ANDI R18,0xF0
029C 2B24 OR R18,R20
029D E806 LDI R16,0x86
029E DDB6 RCALL _write_data
029F C03C RJMP 0x02DC
(0138) case 4 :write_data(0x84,((read_data(0x85))&0x0f)|(t<<4));;break;
02A0 E805 LDI R16,0x85
02A1 DDE9 RCALL _read_data
02A2 2F84 MOV R24,R20
02A3 708F ANDI R24,0xF
02A4 9582 SWAP R24
02A5 2F20 MOV R18,R16
02A6 702F ANDI R18,0xF
02A7 2B28 OR R18,R24
02A8 E804 LDI R16,0x84
02A9 DDAB RCALL _write_data
02AA C031 RJMP 0x02DC
(0139) case 5 :write_data(0x84,((read_data(0x85))&0xf0)|t);;break;
02AB E805 LDI R16,0x85
02AC DDDE RCALL _read_data
02AD 2F20 MOV R18,R16
02AE 7F20 ANDI R18,0xF0
02AF 2B24 OR R18,R20
02B0 E804 LDI R16,0x84
02B1 DDA3 RCALL _write_data
02B2 C029 RJMP 0x02DC
(0140) case 6 :write_data(0x82,((read_data(0x83))&0x0f)|(t<<4));;break;
02B3 E803 LDI R16,0x83
02B4 DDD6 RCALL _read_data
02B5 2F84 MOV R24,R20
02B6 708F ANDI R24,0xF
02B7 9582 SWAP R24
02B8 2F20 MOV R18,R16
02B9 702F ANDI R18,0xF
02BA 2B28 OR R18,R24
02BB E802 LDI R16,0x82
02BC DD98 RCALL _write_data
02BD C01E RJMP 0x02DC
(0141) case 7 :write_data(0x82,((read_data(0x83))&0xf0)|t);;break;
02BE E803 LDI R16,0x83
02BF DDCB RCALL _read_data
02C0 2F20 MOV R18,R16
02C1 7F20 ANDI R18,0xF0
02C2 2B24 OR R18,R20
02C3 E802 LDI R16,0x82
02C4 DD90 RCALL _write_data
02C5 C016 RJMP 0x02DC
(0142) case 8 :write_data(0x80,((read_data(0x81))&0x0f)|(t<<4));;break;
02C6 E801 LDI R16,0x81
02C7 DDC3 RCALL _read_data
02C8 2F84 MOV R24,R20
02C9 708F ANDI R24,0xF
02CA 9582 SWAP R24
02CB 2F20 MOV R18,R16
02CC 702F ANDI R18,0xF
02CD 2B28 OR R18,R24
02CE E800 LDI R16,0x80
02CF DD85 RCALL _write_data
02D0 C00B RJMP 0x02DC
(0143) case 9 :write_data(0x80,((read_data(0x81))&0xf0)|t);;break;
02D1 E801 LDI R16,0x81
02D2 DDB8 RCALL _read_data
02D3 2F20 MOV R18,R16
02D4 7F20 ANDI R18,0xF0
02D5 2B24 OR R18,R20
02D6 E800 LDI R16,0x80
02D7 DD7D RCALL _write_data
02D8 C003 RJMP 0x02DC
(0144) case 10 :write_data(0x8a,t);;break;
02D9 2F24 MOV R18,R20
02DA E80A LDI R16,0x8A
02DB DD79 RCALL _write_data
(0145) }
(0146) LCD_set_xy(9,1); //这一位抗干拢
02DC E021 LDI R18,1
02DD E009 LDI R16,0x9
02DE D176 RCALL _LCD_set_xy
(0147) LCD_write_char(n+48);
02DF 91000061 LDS R16,n
02E1 5D00 SUBI R16,0xD0
02E2 D182 RCALL _LCD_write_char
(0148) }
02E3 C005 RJMP 0x02E9
(0149) else
(0150) {
(0151) LCD_DATA_PORT=0x01; //清屏
02E4 E081 LDI R24,1
02E5 BB8B OUT 0x1B,R24
(0152) command_enable();
02E6 D161 RCALL _command_enable
(0153) delay_ms(10); //等待1.53ms以上
02E7 E00A LDI R16,0xA
02E8 D133 RCALL _delay_ms
(0154) }
(0155) ret:SEI();
02E9 9478 BSET 7
02EA 9622 ADIW R28,2
02EB D26B RCALL pop_gset4
02EC D2A2 RCALL pop_lset
02ED 9518 RETI
_main:
a --> Y,+10
temm --> R10
count --> R12
temh --> R14
teml --> R20
th --> Y,+9
tl --> Y,+8
s --> Y,+7
i --> R22
02EE 972D SBIW R28,0xD
(0156) }
(0157) /******************************************************
(0158) 主程序
(0159) ******************************************************/
(0160) void main(void)
(0161) {
(0162)
(0163) uchar s,i,th,tl;
(0164) uchar temh,teml,a,count,temm;
(0165) init_devices();
02EF DE06 RCALL _init_devices
(0166) init_1302();
02F0 DDD9 RCALL _init_1302
(0167) init_1302();
02F1 DDD8 RCALL _init_1302
(0168) init_lcd() ;
02F2 D190 RCALL _init_lcd
(0169) init_lcd() ;
02F3 D18F RCALL _init_lcd
(0170) init_time(0x00,0x01,0x02,0x03,0x04,0x05);
02F4 E085 LDI R24,5
02F5 838E STD Y+6,R24
02F6 E084 LDI R24,4
02F7 838C STD Y+4,R24
02F8 E083 LDI R24,3
02F9 838A STD Y+2,R24
02FA E082 LDI R24,2
02FB 8388 STD Y+0,R24
02FC E021 LDI R18,1
02FD 2700 CLR R16
02FE DDD5 RCALL _init_time
02FF C119 RJMP 0x0419
(0171) while(1)
(0172) {
(0173) //1302
(0174) LCD_set_xy(0,0);
0300 2722 CLR R18
0301 2700 CLR R16
0302 D152 RCALL _LCD_set_xy
(0175) //month
(0176) s=read_data(0x89);
0303 E809 LDI R16,0x89
0304 DD86 RCALL _read_data
0305 830F STD Y+7,R16
(0177) tl=s&0x0f;
0306 2F80 MOV R24,R16
0307 708F ANDI R24,0xF
0308 8788 STD Y+8,R24
(0178) th=(s>>4);
0309 818F LDD R24,Y+7
030A 9582 SWAP R24
030B 708F ANDI R24,0xF
030C 8789 STD Y+9,R24
(0179) LCD_write_char(th+48);
030D 2F08 MOV R16,R24
030E 5D00 SUBI R16,0xD0
030F D155 RCALL _LCD_write_char
(0180) LCD_write_char(tl+48);
0310 8508 LDD R16,Y+8
0311 5D00 SUBI R16,0xD0
0312 D152 RCALL _LCD_write_char
(0181) LCD_write_char(':');
0313 E30A LDI R16,0x3A
0314 D150 RCALL _LCD_write_char
(0182) //day
(0183) s=read_data(0x87);
0315 E807 LDI R16,0x87
0316 DD74 RCALL _read_data
0317 830F STD Y+7,R16
(0184) tl=s&0x0f;
0318 2F80 MOV R24,R16
0319 708F ANDI R24,0xF
031A 8788 STD Y+8,R24
(0185) th=(s>>4);
031B 818F LDD R24,Y+7
031C 9582 SWAP R24
031D 708F ANDI R24,0xF
031E 8789 STD Y+9,R24
(0186) LCD_write_char(th+48);
031F 2F08 MOV R16,R24
0320 5D00 SUBI R16,0xD0
0321 D143 RCALL _LCD_write_char
(0187) LCD_write_char(tl+48);
0322 8508 LDD R16,Y+8
0323 5D00 SUBI R16,0xD0
0324 D140 RCALL _LCD_write_char
(0188) LCD_write_char(' ');
0325 E200 LDI R16,0x20
0326 D13E RCALL _LCD_write_char
(0189) LCD_write_char(' ');
0327 E200 LDI R16,0x20
0328 D13C RCALL _LCD_write_char
(0190) //hour
(0191) s=read_data(0x85);
0329 E805 LDI R16,0x85
032A DD60 RCALL _read_data
032B 830F STD Y+7,R16
(0192) tl=s&0x0f;
032C 2F80 MOV R24,R16
032D 708F ANDI R24,0xF
032E 8788 STD Y+8,R24
(0193) th=(s>>4);
032F 818F LDD R24,Y+7
0330 9582 SWAP R24
0331 708F ANDI R24,0xF
0332 8789 STD Y+9,R24
(0194) LCD_write_char(th+48);
0333 2F08 MOV R16,R24
0334 5D00 SUBI R16,0xD0
0335 D12F RCALL _LCD_write_char
(0195) LCD_write_char(tl+48);
0336 8508 LDD R16,Y+8
0337 5D00 SUBI R16,0xD0
0338 D12C RCALL _LCD_write_char
(0196) LCD_write_char(':');
0339 E30A LDI R16,0x3A
033A D12A RCALL _LCD_write_char
(0197) //min
(0198) s=read_data(0x83);
033B E803 LDI R16,0x83
033C DD4E RCALL _read_data
033D 830F STD Y+7,R16
(0199) tl=s&0x0f;
033E 2F80 MOV R24,R16
033F 708F ANDI R24,0xF
0340 8788 STD Y+8,R24
(0200) th=(s>>4);
0341 818F LDD R24,Y+7
0342 9582 SWAP R24
0343 708F ANDI R24,0xF
0344 8789 STD Y+9,R24
(0201) LCD_write_char(th+48);
0345 2F08 MOV R16,R24
0346 5D00 SUBI R16,0xD0
0347 D11D RCALL _LCD_write_char
(0202) LCD_write_char(tl+48);
0348 8508 LDD R16,Y+8
0349 5D00 SUBI R16,0xD0
034A D11A RCALL _LCD_write_char
(0203) LCD_write_char(':');
034B E30A LDI R16,0x3A
034C D118 RCALL _LCD_write_char
(0204) //sec
(0205) s=read_data(0x81);
034D E801 LDI R16,0x81
034E DD3C RCALL _read_data
034F 830F STD Y+7,R16
(0206) tl=s&0x0f;
0350 2F80 MOV R24,R16
0351 708F ANDI R24,0xF
0352 8788 STD Y+8,R24
(0207) th=(s>>4);
0353 818F LDD R24,Y+7
0354 9582 SWAP R24
0355 708F ANDI R24,0xF
0356 8789 STD Y+9,R24
(0208) LCD_write_char(th+48);
0357 2F08 MOV R16,R24
0358 5D00 SUBI R16,0xD0
0359 D10B RCALL _LCD_write_char
(0209) LCD_write_char(tl+48);
035A 8508 LDD R16,Y+8
035B 5D00 SUBI R16,0xD0
035C D108 RCALL _LCD_write_char
(0210) //date
(0211) s=read_data(0x8b);
035D E80B LDI R16,0x8B
035E DD2C RCALL _read_data
035F 830F STD Y+7,R16
(0212) tl=s&0x0f;
0360 2F80 MOV R24,R16
0361 708F ANDI R24,0xF
0362 8788 STD Y+8,R24
(0213) switch(tl)
0363 2E28 MOV R2,R24
0364 2433 CLR R3
0365 863C STD Y+12,R3
0366 862B STD Y+11,R2
0367 2D82 MOV R24,R2
0368 2D93 MOV R25,R3
0369 3081 CPI R24,1
036A E0E0 LDI R30,0
036B 079E CPC R25,R30
036C F0C9 BEQ 0x0386
036D 3082 CPI R24,2
036E E0E0 LDI R30,0
036F 079E CPC R25,R30
0370 F0E9 BEQ 0x038E
0371 3083 CPI R24,3
0372 E0E0 LDI R30,0
0373 079E CPC R25,R30
0374 F109 BEQ 0x0396
0375 3084 CPI R24,4
0376 E0E0 LDI R30,0
0377 079E CPC R25,R30
0378 F129 BEQ 0x039E
0379 3085 CPI R24,5
037A E0E0 LDI R30,0
037B 079E CPC R25,R30
037C F149 BEQ 0x03A6
037D 3086 CPI R24,6
037E E0E0 LDI R30,0
037F 079E CPC R25,R30
0380 F169 BEQ 0x03AE
0381 3087 CPI R24,7
0382 E0E0 LDI R30,0
0383 079E CPC R25,R30
0384 F189 BEQ 0x03B6
0385 C037 RJMP 0x03BD
(0214) {
(0215) case 1:LCD_write_string(0,1,"monday");break;
0386 E987 LDI R24,0x97
0387 E090 LDI R25,0
0388 8399 STD Y+1,R25
0389 8388 STD Y+0,R24
038A E021 LDI R18,1
038B 2700 CLR R16
038C D0E0 RCALL _LCD_write_string
038D C02F RJMP 0x03BD
(0216) case 2:LCD_write_string(0,1,"tuesday");break;
038E E88F LDI R24,0x8F
038F E090 LDI R25,0
0390 8399 STD Y+1,R25
0391 8388 STD Y+0,R24
0392 E021 LDI R18,1
0393 2700 CLR R16
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -