📄 bi2.lst
字号:
04C0 E01A LDI R17,0xA
04C1 91000080 LDS R16,change
04C3 940E0705 CALL div8u
04C5 E083 LDI R24,3
04C6 9F80 MUL R24,R16
04C7 01F0 MOVW R30,R0
04C8 E684 LDI R24,0x64
04C9 E090 LDI R25,0
04CA 0FE8 ADD R30,R24
04CB 1FF9 ADC R31,R25
04CC E187 LDI R24,0x17
04CD 8380 STD Z+0,R24
04CE C01D RJMP 0x04EC
(0647) else if(time[change/10][2]==24)
04CF E01A LDI R17,0xA
04D0 91000080 LDS R16,change
04D2 940E0705 CALL div8u
04D4 E083 LDI R24,3
04D5 9F80 MUL R24,R16
04D6 01F0 MOVW R30,R0
04D7 E684 LDI R24,0x64
04D8 E090 LDI R25,0
04D9 0FE8 ADD R30,R24
04DA 1FF9 ADC R31,R25
04DB 8180 LDD R24,Z+0
04DC 3188 CPI R24,0x18
04DD F471 BNE 0x04EC
(0648) {time[change/10][2]=0;}
04DE E01A LDI R17,0xA
04DF 91000080 LDS R16,change
04E1 940E0705 CALL div8u
04E3 E083 LDI R24,3
04E4 9F80 MUL R24,R16
04E5 01F0 MOVW R30,R0
04E6 E684 LDI R24,0x64
04E7 E090 LDI R25,0
04E8 0FE8 ADD R30,R24
04E9 1FF9 ADC R31,R25
04EA 2422 CLR R2
04EB 8220 STD Z+0,R2
(0649) }
04EC 9508 RET
(0650)
(0651)
(0652) }
(0653)
(0654) void write_eep()
(0655) {
(0656) unsigned char i;
(0657) change=10;
_write_eep:
i --> Y+1
04ED E08A LDI R24,0xA
04EE 93800080 STS change,R24
(0658) for(;;)
(0659) {
(0660) if((change%10)==2)
04F0 E01A LDI R17,0xA
04F1 91000080 LDS R16,change
04F3 940E0703 CALL mod8u
04F5 3002 CPI R16,2
04F6 F471 BNE 0x0505
(0661) {if(change!=52)
04F7 91800080 LDS R24,change
04F9 3384 CPI R24,0x34
04FA F021 BEQ 0x04FF
(0662) {change=change+9;}
04FB 5F87 SUBI R24,0xF7
04FC 93800080 STS change,R24
04FE C00B RJMP 0x050A
(0663) else
(0664) {change=0;mo=0;break;}
04FF 2422 CLR R2
0500 92200080 STS change,R2
0502 92200061 STS mo,R2
0504 C023 RJMP 0x0528
(0665) }
(0666) else
(0667) {change++;}
0505 91800080 LDS R24,change
0507 5F8F SUBI R24,0xFF
0508 93800080 STS change,R24
(0668) EEPROMwrite(change,time[change/10][change%10]);
050A E01A LDI R17,0xA
050B 91000080 LDS R16,change
050D 940E0705 CALL div8u
050F E083 LDI R24,3
0510 9F80 MUL R24,R16
0511 0110 MOVW R2,R0
0512 E682 LDI R24,0x62
0513 E090 LDI R25,0
0514 0E28 ADD R2,R24
0515 1E39 ADC R3,R25
0516 E02A LDI R18,0xA
0517 E030 LDI R19,0
0518 91000080 LDS R16,change
051A 2711 CLR R17
051B 940E06C9 CALL mod16s
051D 01F8 MOVW R30,R16
051E 0DE2 ADD R30,R2
051F 1DF3 ADC R31,R3
0520 8120 LDD R18,Z+0
0521 2733 CLR R19
0522 91000080 LDS R16,change
0524 2711 CLR R17
0525 940E0792 CALL _EEPROMwrite
0527 CFC8 RJMP 0x04F0
0528 9508 RET
_write_1302:
temp --> Y+4
0529 972C SBIW R28,0xC
(0669) }
(0670)
(0671)
(0672) }
(0673) void write_1302()
(0674) {unsigned char temp[8];
(0675) Burst_SPI(0xbe,3,&time[0][0],&time[0][0]);
052A E682 LDI R24,0x62
052B E090 LDI R25,0
052C 839B STD Y+3,R25
052D 838A STD Y+2,R24
052E 8399 STD Y+1,R25
052F 8388 STD Y+0,R24
0530 E023 LDI R18,3
0531 EB0E LDI R16,0xBE
0532 DC1E RCALL _Burst_SPI
0533 962C ADIW R28,0xC
0534 9508 RET
_settime:
j --> Y+2
0535 940E072F CALL push_gset1
0537 9721 SBIW R28,1
(0676)
(0677) }
(0678)
(0679) void settime()
(0680) {unsigned char j;
(0681) disp_temp(0,1,0);
0538 2422 CLR R2
0539 8228 STD Y+0,R2
053A E021 LDI R18,1
053B 2700 CLR R16
053C DE10 RCALL _disp_temp
(0682) disp_change();
053D DEBA RCALL _disp_change
(0683) switch(get_key())
053E DE88 RCALL _get_key
053F 2F40 MOV R20,R16
0540 2755 CLR R21
0541 3041 CPI R20,1
0542 E0E0 LDI R30,0
0543 075E CPC R21,R30
0544 F071 BEQ 0x0553
0545 3042 CPI R20,2
0546 E0E0 LDI R30,0
0547 075E CPC R21,R30
0548 F139 BEQ 0x0570
0549 3043 CPI R20,3
054A E0E0 LDI R30,0
054B 075E CPC R21,R30
054C F151 BEQ 0x0577
054D 3044 CPI R20,4
054E E0E0 LDI R30,0
054F 075E CPC R21,R30
0550 F409 BNE 0x0552
0551 C045 RJMP 0x0597
0552 C063 RJMP 0x05B6
(0684) {
(0685) case 1:if((change%10)==2)
0553 E01A LDI R17,0xA
0554 91000080 LDS R16,change
0556 940E0703 CALL mod8u
0558 3002 CPI R16,2
0559 F469 BNE 0x0567
(0686) {if(change!=52)
055A 91800080 LDS R24,change
055C 3384 CPI R24,0x34
055D F021 BEQ 0x0562
(0687) {change=change+9;}
055E 5F87 SUBI R24,0xF7
055F 93800080 STS change,R24
0561 C00A RJMP 0x056C
(0688) else
(0689) {change=0;write_eep();}
0562 2422 CLR R2
0563 92200080 STS change,R2
0565 DF87 RCALL _write_eep
(0690) }
0566 C005 RJMP 0x056C
(0691) else
(0692) {change++;}
0567 91800080 LDS R24,change
0569 5F8F SUBI R24,0xFF
056A 93800080 STS change,R24
(0693) delay(300);
056C E20C LDI R16,0x2C
056D E011 LDI R17,1
056E DB99 RCALL _delay
(0694)
(0695) break;
056F C046 RJMP 0x05B6
(0696) case 2: LCD_write_char(0x01,0);write_eep();break;
0570 2722 CLR R18
0571 2733 CLR R19
0572 E001 LDI R16,1
0573 E010 LDI R17,0
0574 DD4E RCALL _LCD_write_char
0575 DF77 RCALL _write_eep
0576 C03F RJMP 0x05B6
(0697) case 3:time[change/10][change%10]++;changetime();delay(200);write_1302();break;
0577 E01A LDI R17,0xA
0578 91000080 LDS R16,change
057A 940E0705 CALL div8u
057C E083 LDI R24,3
057D 9F80 MUL R24,R16
057E 0110 MOVW R2,R0
057F E682 LDI R24,0x62
0580 E090 LDI R25,0
0581 0E28 ADD R2,R24
0582 1E39 ADC R3,R25
0583 E02A LDI R18,0xA
0584 E030 LDI R19,0
0585 91000080 LDS R16,change
0587 2711 CLR R17
0588 940E06C9 CALL mod16s
058A 0128 MOVW R4,R16
058B 0C42 ADD R4,R2
058C 1C53 ADC R5,R3
058D 01F2 MOVW R30,R4
058E 8180 LDD R24,Z+0
058F 5F8F SUBI R24,0xFF
0590 8380 STD Z+0,R24
0591 DEBC RCALL _changetime
0592 EC08 LDI R16,0xC8
0593 E010 LDI R17,0
0594 DB73 RCALL _delay
0595 DF93 RCALL _write_1302
0596 C01F RJMP 0x05B6
(0698) case 4:time[change/10][change%10]--;changetime();delay(200);write_1302();break;
0597 E01A LDI R17,0xA
0598 91000080 LDS R16,change
059A 940E0705 CALL div8u
059C E083 LDI R24,3
059D 9F80 MUL R24,R16
059E 0110 MOVW R2,R0
059F E682 LDI R24,0x62
05A0 E090 LDI R25,0
05A1 0E28 ADD R2,R24
05A2 1E39 ADC R3,R25
05A3 E02A LDI R18,0xA
05A4 E030 LDI R19,0
05A5 91000080 LDS R16,change
05A7 2711 CLR R17
05A8 940E06C9 CALL mod16s
05AA 0128 MOVW R4,R16
05AB 0C42 ADD R4,R2
05AC 1C53 ADC R5,R3
05AD 01F2 MOVW R30,R4
05AE 8180 LDD R24,Z+0
05AF 5081 SUBI R24,1
05B0 8380 STD Z+0,R24
05B1 DE9C RCALL _changetime
05B2 EC08 LDI R16,0xC8
05B3 E010 LDI R17,0
05B4 DB53 RCALL _delay
05B5 DF73 RCALL _write_1302
05B6 9621 ADIW R28,1
05B7 940E0732 CALL pop_gset1
05B9 9508 RET
(0699)
(0700) }
(0701)
(0702) }
(0703)
(0704) char com()
(0705) {
(0706) unsigned char i,temp=0;
_com:
temp --> R16
i --> R18
05BA 2700 CLR R16
(0707) for(i=1;i<6;i++)
05BB E021 LDI R18,1
05BC C01A RJMP 0x05D7
(0708) {
(0709) if(time[0][1]==time[i][1])
05BD E083 LDI R24,3
05BE 9F82 MUL R24,R18
05BF 01F0 MOVW R30,R0
05C0 E683 LDI R24,0x63
05C1 E090 LDI R25,0
05C2 0FE8 ADD R30,R24
05C3 1FF9 ADC R31,R25
05C4 8020 LDD R2,Z+0
05C5 90300063 LDS R3,time+1
05C7 1432 CP R3,R2
05C8 F469 BNE 0x05D6
(0710) {if(time[0][2]==time[i][2])
05C9 E083 LDI R24,3
05CA 9F82 MUL R24,R18
05CB 01F0 MOVW R30,R0
05CC E684 LDI R24,0x64
05CD E090 LDI R25,0
05CE 0FE8 ADD R30,R24
05CF 1FF9 ADC R31,R25
05D0 8020 LDD R2,Z+0
05D1 90300064 LDS R3,time+2
05D3 1432 CP R3,R2
05D4 F409 BNE 0x05D6
(0711) {temp=1;}
05D5 E001 LDI R16,1
05D6 9523 INC R18
05D7 3026 CPI R18,6
05D8 F320 BCS 0x05BD
(0712) }
(0713) }
(0714) return temp;
05D9 9508 RET
(0715) }
(0716)
(0717) void read_eep()
(0718) {
(0719) change=10;
_read_eep:
05DA E08A LDI R24,0xA
05DB 93800080 STS change,R24
(0720) for(;;)
(0721) {
(0722) if((change%10)==2)
05DD E01A LDI R17,0xA
05DE 91000080 LDS R16,change
05E0 940E0703 CALL mod8u
05E2 3002 CPI R16,2
05E3 F471 BNE 0x05F2
(0723) {if(change!=52)
05E4 91800080 LDS R24,change
05E6 3384 CPI R24,0x34
05E7 F021 BEQ 0x05EC
(0724) {change=change+9;}
05E8 5F87 SUBI R24,0xF7
05E9 93800080 STS change,R24
05EB C00B RJMP 0x05F7
(0725) else
(0726) {change=0;mo=0;break;}
05EC 2422 CLR R2
05ED 92200080 STS change,R2
05EF 92200061 STS mo,R2
05F1 C023 RJMP 0x0615
(0727) }
(0728) else
(0729) {change++;}
05F2 91800080 LDS R24,change
05F4 5F8F SUBI R24,0xFF
05F5 93800080 STS change,R24
(0730) time[change/10][change%10]=EEPROMread(change);
05F7 91000080 LDS R16,change
05F9 2711 CLR R17
05FA 940E078D CALL _EEPROMread
05FC 0118 MOVW R2,R16
05FD E01A LDI R17,0xA
05FE 91000080 LDS R16,change
0600 940E0705 CALL div8u
0602 E083 LDI R24,3
0603 9F80 MUL R24,R16
0604 0120 MOVW R4,R0
0605 E682 LDI R24,0x62
0606 E090 LDI R25,0
0607 0E48 ADD R4,R24
0608 1E59 ADC R5,R25
0609 E02A LDI R18,0xA
060A E030 LDI R19,0
060B 91000080 LDS R16,change
060D 2711 CLR R17
060E 940E06C9 CALL mod16s
0610 01F8 MOVW R30,R16
0611 0DE4 ADD R30,R4
0612 1DF5 ADC R31,R5
0613 8220 STD Z+0,R2
0614 CFC8 RJMP 0x05DD
0615 9508 RET
_main:
i --> R20
0616 9724 SBIW R28,4
(0731)
(0732) }
(0733)
(0734)
(0735) }
(0736)
(0737)
(0738)
(0739) void main()
(0740) {
(0741) unsigned int i;
(0742) sys_init();
0617 DDD5 RCALL _sys_init
(0743) for(i=0;i<10;i++)
0618 2744 CLR R20
0619 2755 CLR R21
061A C011 RJMP 0x062C
(0744) {
(0745) LCD_init();
061B DC62 RCALL _LCD_init
(0746)
(0747)
(0748) LCD_write_string(0,0,"set the distance");
061C ED81 LDI R24,0xD1
061D E090 LDI R25,0
061E 8399 STD Y+1,R25
061F
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -