📄 bi2.lst
字号:
(0570) if(q==1)
0352 8588 LDD R24,Y+8
0353 3081 CPI R24,1
0354 F4D1 BNE 0x036F
(0571) {LCD_write_string(0,1,"alarm clock: ");
0355 E188 LDI R24,0x18
0356 E091 LDI R25,1
0357 8399 STD Y+1,R25
0358 8388 STD Y+0,R24
0359 E021 LDI R18,1
035A 2700 CLR R16
035B DF35 RCALL _LCD_write_string
(0572) if(alarmfalg==1)
035C 91800060 LDS R24,alarmfalg
035E 3081 CPI R24,1
035F F441 BNE 0x0368
(0573) {LCD_write_string(13,1,"on ");}
0360 E184 LDI R24,0x14
0361 E091 LDI R25,1
0362 8399 STD Y+1,R25
0363 8388 STD Y+0,R24
0364 E021 LDI R18,1
0365 E00D LDI R16,0xD
0366 DF2A RCALL _LCD_write_string
0367 C007 RJMP 0x036F
(0574) else
(0575) {LCD_write_string(13,1,"off");}
0368 E180 LDI R24,0x10
0369 E091 LDI R25,1
036A 8399 STD Y+1,R25
036B 8388 STD Y+0,R24
036C E021 LDI R18,1
036D E00D LDI R16,0xD
036E DF22 RCALL _LCD_write_string
(0576) }
(0577) LCD_write_string(0,y,"time:");
036F E08A LDI R24,0xA
0370 E091 LDI R25,1
0371 8399 STD Y+1,R25
0372 8388 STD Y+0,R24
0373 2F24 MOV R18,R20
0374 2700 CLR R16
0375 DF1B RCALL _LCD_write_string
(0578)
(0579) LCD_write_ch(6,y,2,time[change/10][2]);
0376 E01A LDI R17,0xA
0377 91000080 LDS R16,change
0379 940E0705 CALL div8u
037B E083 LDI R24,3
037C 9F80 MUL R24,R16
037D 01F0 MOVW R30,R0
037E E684 LDI R24,0x64
037F E090 LDI R25,0
0380 0FE8 ADD R30,R24
0381 1FF9 ADC R31,R25
0382 8020 LDD R2,Z+0
0383 2433 CLR R3
0384 823B STD Y+3,R3
0385 822A STD Y+2,R2
0386 E082 LDI R24,2
0387 8388 STD Y+0,R24
0388 2F24 MOV R18,R20
0389 E006 LDI R16,6
038A DEB2 RCALL _LCD_write_ch
(0580) LCD_write_string(8,y,":");
038B E088 LDI R24,0x8
038C E091 LDI R25,1
038D 8399 STD Y+1,R25
038E 8388 STD Y+0,R24
038F 2F24 MOV R18,R20
0390 E008 LDI R16,0x8
0391 DEFF RCALL _LCD_write_string
(0581) LCD_write_ch(9,y,2,time[change/10][1]);
0392 E01A LDI R17,0xA
0393 91000080 LDS R16,change
0395 940E0705 CALL div8u
0397 E083 LDI R24,3
0398 9F80 MUL R24,R16
0399 01F0 MOVW R30,R0
039A E683 LDI R24,0x63
039B E090 LDI R25,0
039C 0FE8 ADD R30,R24
039D 1FF9 ADC R31,R25
039E 8020 LDD R2,Z+0
039F 2433 CLR R3
03A0 823B STD Y+3,R3
03A1 822A STD Y+2,R2
03A2 E082 LDI R24,2
03A3 8388 STD Y+0,R24
03A4 2F24 MOV R18,R20
03A5 E009 LDI R16,0x9
03A6 DE96 RCALL _LCD_write_ch
(0582) LCD_write_string(11,y,":");
03A7 E088 LDI R24,0x8
03A8 E091 LDI R25,1
03A9 8399 STD Y+1,R25
03AA 8388 STD Y+0,R24
03AB 2F24 MOV R18,R20
03AC E00B LDI R16,0xB
03AD DEE3 RCALL _LCD_write_string
(0583) LCD_write_ch(12,y,2,time[change/10][0]);
03AE E01A LDI R17,0xA
03AF 91000080 LDS R16,change
03B1 940E0705 CALL div8u
03B3 E083 LDI R24,3
03B4 9F80 MUL R24,R16
03B5 01F0 MOVW R30,R0
03B6 E682 LDI R24,0x62
03B7 E090 LDI R25,0
03B8 0FE8 ADD R30,R24
03B9 1FF9 ADC R31,R25
03BA 8020 LDD R2,Z+0
03BB 2433 CLR R3
03BC 823B STD Y+3,R3
03BD 822A STD Y+2,R2
03BE E082 LDI R24,2
03BF 8388 STD Y+0,R24
03C0 2F24 MOV R18,R20
03C1 E00C LDI R16,0xC
03C2 DE7A RCALL _LCD_write_ch
03C3 9624 ADIW R28,4
03C4 940E071B CALL pop_gset2
03C6 9508 RET
(0584)
(0585) }
(0586)
(0587)
(0588) char get_key()
(0589) {
(0590) unsigned char temp,tempn0;
(0591) temp=PINA&0XF0;
_get_key:
tempn0 --> R16
temp --> R16
03C7 B309 IN R16,0x19
03C8 7F00 ANDI R16,0xF0
(0592) switch (temp)
03C9 2711 CLR R17
03CA 3B00 CPI R16,0xB0
03CB E0E0 LDI R30,0
03CC 071E CPC R17,R30
03CD F0D9 BEQ 0x03E9
03CE EB80 LDI R24,0xB0
03CF E090 LDI R25,0
03D0 1780 CP R24,R16
03D1 0791 CPC R25,R17
03D2 F02C BLT 0x03D8
03D3 3700 CPI R16,0x70
03D4 E0E0 LDI R30,0
03D5 071E CPC R17,R30
03D6 F0A1 BEQ 0x03EB
03D7 C014 RJMP 0x03EC
03D8 3D00 CPI R16,0xD0
03D9 E0E0 LDI R30,0
03DA 071E CPC R17,R30
03DB F059 BEQ 0x03E7
03DC 3D00 CPI R16,0xD0
03DD E0E0 LDI R30,0
03DE 071E CPC R17,R30
03DF F064 BLT 0x03EC
03E0 3E00 CPI R16,0xE0
03E1 E0E0 LDI R30,0
03E2 071E CPC R17,R30
03E3 F009 BEQ 0x03E5
03E4 C007 RJMP 0x03EC
(0593) {
(0594) case 0xe0:tempn0=1;break;
03E5 E001 LDI R16,1
03E6 C005 RJMP 0x03EC
(0595) case 0xd0:tempn0=2;break;
03E7 E002 LDI R16,2
03E8 C003 RJMP 0x03EC
(0596) case 0xb0:tempn0=3;break;
03E9 E003 LDI R16,3
03EA C001 RJMP 0x03EC
(0597) case 0x70:tempn0=4;break;
03EB E004 LDI R16,4
(0598)
(0599) }
(0600) return tempn0;
03EC 9508 RET
(0601) }
(0602)
(0603) void sys_init()
(0604) {
(0605) DDRA=0X0F;
_sys_init:
03ED E08F LDI R24,0xF
03EE BB8A OUT 0x1A,R24
(0606) PORTA=0XFF;
03EF EF8F LDI R24,0xFF
03F0 BB8B OUT 0x1B,R24
(0607) DDRC=0XFF;
03F1 BB84 OUT 0x14,R24
(0608) PORTC=0XFF;
03F2 BB85 OUT 0x15,R24
(0609) LCD_DATA_DDR=0XFF;
03F3 BB81 OUT 0x11,R24
(0610) DDRB=0B10110000;
03F4 EB80 LDI R24,0xB0
03F5 BB87 OUT 0x17,R24
(0611) SEI();
03F6 9478 BSET 7
03F7 9508 RET
_disp_change:
03F8 940E072F CALL push_gset1
03FA 9724 SBIW R28,4
(0612) }
(0613)
(0614) void disp_change()
(0615) {
(0616) if((change/10)!=0)
03FB E01A LDI R17,0xA
03FC 91000080 LDS R16,change
03FE 940E0705 CALL div8u
0400 2300 TST R16
0401 F0B1 BEQ 0x0418
(0617) {
(0618) LCD_write_string(0,0,"alarm ");
0402 E080 LDI R24,0
0403 E091 LDI R25,1
0404 8399 STD Y+1,R25
0405 8388 STD Y+0,R24
0406 2722 CLR R18
0407 2700 CLR R16
0408 DE88 RCALL _LCD_write_string
(0619) LCD_write_ch(7,0,1,change/10);
0409 E02A LDI R18,0xA
040A E030 LDI R19,0
040B 91000080 LDS R16,change
040D 2711 CLR R17
040E 940E06CD CALL div16s
0410 831B STD Y+3,R17
0411 830A STD Y+2,R16
0412 E081 LDI R24,1
0413 8388 STD Y+0,R24
0414 2722 CLR R18
0415 E007 LDI R16,7
0416 DE26 RCALL _LCD_write_ch
(0620) }
0417 C007 RJMP 0x041F
(0621) else
(0622) { LCD_write_string(0,0,"set time");
0418 EF87 LDI R24,0xF7
0419 E090 LDI R25,0
041A 8399 STD Y+1,R25
041B 8388 STD Y+0,R24
041C 2722 CLR R18
041D 2700 CLR R16
041E DE72 RCALL _LCD_write_string
(0623) }
(0624) switch(change%10)
041F E02A LDI R18,0xA
0420 E030 LDI R19,0
0421 91000080 LDS R16,change
0423 2711 CLR R17
0424 940E06C9 CALL mod16s
0426 01A8 MOVW R20,R16
0427 3000 CPI R16,0
0428 0701 CPC R16,R17
0429 F049 BEQ 0x0433
042A 3041 CPI R20,1
042B E0E0 LDI R30,0
042C 075E CPC R21,R30
042D F069 BEQ 0x043B
042E 3042 CPI R20,2
042F E0E0 LDI R30,0
0430 075E CPC R21,R30
0431 F089 BEQ 0x0443
0432 C017 RJMP 0x044A
(0625) {
(0626) case 0: LCD_write_string(9,0,"second");break;
0433 EF80 LDI R24,0xF0
0434 E090 LDI R25,0
0435 8399 STD Y+1,R25
0436 8388 STD Y+0,R24
0437 2722 CLR R18
0438 E009 LDI R16,0x9
0439 DE57 RCALL _LCD_write_string
043A C00F RJMP 0x044A
(0627) case 1: LCD_write_string(9,0,"mintue");break;
043B EE89 LDI R24,0xE9
043C E090 LDI R25,0
043D 8399 STD Y+1,R25
043E 8388 STD Y+0,R24
043F 2722 CLR R18
0440 E009 LDI R16,0x9
0441 DE4F RCALL _LCD_write_string
0442 C007 RJMP 0x044A
(0628) case 2: LCD_write_string(9,0,"hour ");break;
0443 EE82 LDI R24,0xE2
0444 E090 LDI R25,0
0445 8399 STD Y+1,R25
0446 8388 STD Y+0,R24
0447 2722 CLR R18
0448 E009 LDI R16,0x9
0449 DE47 RCALL _LCD_write_string
044A 9624 ADIW R28,4
044B 940E0732 CALL pop_gset1
044D 9508 RET
(0629) }
(0630)
(0631) }
(0632)
(0633) void changetime()
(0634) {
(0635) if(change%10==0)
_changetime:
044E E01A LDI R17,0xA
044F 91000080 LDS R16,change
0451 940E0703 CALL mod8u
0453 2300 TST R16
0454 F479 BNE 0x0464
(0636) {time[change/10][0]=0;}
0455 E01A LDI R17,0xA
0456 91000080 LDS R16,change
0458 940E0705 CALL div8u
045A E083 LDI R24,3
045B 9F80 MUL R24,R16
045C 01F0 MOVW R30,R0
045D E682 LDI R24,0x62
045E E090 LDI R25,0
045F 0FE8 ADD R30,R24
0460 1FF9 ADC R31,R25
0461 2422 CLR R2
0462 8220 STD Z+0,R2
0463 C088 RJMP 0x04EC
(0637) else if(change%10==1)
0464 E01A LDI R17,0xA
0465 91000080 LDS R16,change
0467 940E0703 CALL mod8u
0469 3001 CPI R16,1
046A F009 BEQ 0x046C
046B C03D RJMP 0x04A9
(0638) {if(time[change/10][1]==255)
046C E01A LDI R17,0xA
046D 91000080 LDS R16,change
046F 940E0705 CALL div8u
0471 E083 LDI R24,3
0472 9F80 MUL R24,R16
0473 01F0 MOVW R30,R0
0474 E683 LDI R24,0x63
0475 E090 LDI R25,0
0476 0FE8 ADD R30,R24
0477 1FF9 ADC R31,R25
0478 8180 LDD R24,Z+0
0479 3F8F CPI R24,0xFF
047A F479 BNE 0x048A
(0639) {time[change/10][1]=59;}
047B E01A LDI R17,0xA
047C 91000080 LDS R16,change
047E 940E0705 CALL div8u
0480 E083 LDI R24,3
0481 9F80 MUL R24,R16
0482 01F0 MOVW R30,R0
0483 E683 LDI R24,0x63
0484 E090 LDI R25,0
0485 0FE8 ADD R30,R24
0486 1FF9 ADC R31,R25
0487 E38B LDI R24,0x3B
0488 8380 STD Z+0,R24
0489 C062 RJMP 0x04EC
(0640) else if(time[change/10][1]==60)
048A E01A LDI R17,0xA
048B 91000080 LDS R16,change
048D 940E0705 CALL div8u
048F E083 LDI R24,3
0490 9F80 MUL R24,R16
0491 01F0 MOVW R30,R0
0492 E683 LDI R24,0x63
0493 E090 LDI R25,0
0494 0FE8 ADD R30,R24
0495 1FF9 ADC R31,R25
0496 8180 LDD R24,Z+0
0497 338C CPI R24,0x3C
0498 F009 BEQ 0x049A
0499 C052 RJMP 0x04EC
(0641) {time[change/10][1]=0;}
049A E01A LDI R17,0xA
049B 91000080 LDS R16,change
049D 940E0705 CALL div8u
049F E083 LDI R24,3
04A0 9F80 MUL R24,R16
04A1 01F0 MOVW R30,R0
04A2 E683 LDI R24,0x63
04A3 E090 LDI R25,0
04A4 0FE8 ADD R30,R24
04A5 1FF9 ADC R31,R25
04A6 2422 CLR R2
04A7 8220 STD Z+0,R2
(0642) }
04A8 C043 RJMP 0x04EC
(0643)
(0644) else if(change%10==2)
04A9 E01A LDI R17,0xA
04AA 91000080 LDS R16,change
04AC 940E0703 CALL mod8u
04AE 3002 CPI R16,2
04AF F009 BEQ 0x04B1
04B0 C03B RJMP 0x04EC
(0645) {if(time[change/10][2]==255)
04B1 E01A LDI R17,0xA
04B2 91000080 LDS R16,change
04B4 940E0705 CALL div8u
04B6 E083 LDI R24,3
04B7 9F80 MUL R24,R16
04B8 01F0 MOVW R30,R0
04B9 E684 LDI R24,0x64
04BA E090 LDI R25,0
04BB 0FE8 ADD R30,R24
04BC 1FF9 ADC R31,R25
04BD 8180 LDD R24,Z+0
04BE 3F8F CPI R24,0xFF
04BF F479 BNE 0x04CF
(0646) {time[change/10][2]=23;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -