📄 bi2.s
字号:
ldi R24,<_time
ldi R25,>_time
add R2,R24
adc R3,R25
ldi R18,10
ldi R19,0
lds R16,_change
clr R17
xcall mod16s
movw R30,R16
add R30,R2
adc R31,R3
ldd R18,z+0
clr R19
lds R16,_change
clr R17
xcall _EEPROMwrite
.dbline 669
.dbline 658
.dbline 658
xjmp L173
L175:
.dbline -2
L172:
.dbline 0 ; func end
ret
.dbsym l i 1 c
.dbend
.dbfunc e write_1302 _write_1302 fV
; temp -> y+4
.even
_write_1302::
sbiw R28,12
.dbline -1
.dbline 674
; EEPROMwrite(change,time[change/10][change%10]);
; }
;
;
; }
; void write_1302()
; {unsigned char temp[8];
.dbline 675
; Burst_SPI(0xbe,3,&time[0][0],&time[0][0]);
ldi R24,<_time
ldi R25,>_time
std y+3,R25
std y+2,R24
std y+1,R25
std y+0,R24
ldi R18,3
ldi R16,190
xcall _Burst_SPI
.dbline -2
L181:
adiw R28,12
.dbline 0 ; func end
ret
.dbsym l temp 4 A[8:8]c
.dbend
.dbfunc e settime _settime fV
; j -> <dead>
.even
_settime::
xcall push_gset1
sbiw R28,1
.dbline -1
.dbline 680
;
; }
;
; void settime()
; {unsigned char j;
.dbline 681
; disp_temp(0,1,0);
clr R2
std y+0,R2
ldi R18,1
clr R16
xcall _disp_temp
.dbline 682
; disp_change();
xcall _disp_change
.dbline 683
; switch(get_key())
xcall _get_key
mov R20,R16
clr R21
cpi R20,1
ldi R30,0
cpc R21,R30
breq L186
cpi R20,2
ldi R30,0
cpc R21,R30
breq L191
cpi R20,3
ldi R30,0
cpc R21,R30
breq L192
cpi R20,4
ldi R30,0
cpc R21,R30
brne X11
xjmp L193
X11:
xjmp L183
X10:
.dbline 684
; {
L186:
.dbline 685
; case 1:if((change%10)==2)
ldi R17,10
lds R16,_change
xcall mod8u
cpi R16,2
brne L187
.dbline 686
; {if(change!=52)
.dbline 686
lds R24,_change
cpi R24,52
breq L189
.dbline 687
; {change=change+9;}
.dbline 687
subi R24,247 ; addi 9
sts _change,R24
.dbline 687
xjmp L188
L189:
.dbline 689
; else
; {change=0;write_eep();}
.dbline 689
clr R2
sts _change,R2
.dbline 689
xcall _write_eep
.dbline 689
.dbline 690
; }
xjmp L188
L187:
.dbline 692
; else
; {change++;}
.dbline 692
lds R24,_change
subi R24,255 ; addi 1
sts _change,R24
.dbline 692
L188:
.dbline 693
; delay(300);
ldi R16,300
ldi R17,1
xcall _delay
.dbline 695
;
; break;
xjmp L184
L191:
.dbline 696
; case 2: LCD_write_char(0x01,0);write_eep();break;
clr R18
clr R19
ldi R16,1
ldi R17,0
xcall _LCD_write_char
.dbline 696
xcall _write_eep
.dbline 696
xjmp L184
L192:
.dbline 697
; case 3:time[change/10][change%10]++;changetime();delay(200);write_1302();break;
ldi R17,10
lds R16,_change
xcall div8u
ldi R24,3
mul R24,R16
movw R2,R0
ldi R24,<_time
ldi R25,>_time
add R2,R24
adc R3,R25
ldi R18,10
ldi R19,0
lds R16,_change
clr R17
xcall mod16s
movw R4,R16
add R4,R2
adc R5,R3
movw R30,R4
ldd R24,z+0
subi R24,255 ; addi 1
std z+0,R24
.dbline 697
xcall _changetime
.dbline 697
ldi R16,200
ldi R17,0
xcall _delay
.dbline 697
xcall _write_1302
.dbline 697
xjmp L184
L193:
.dbline 698
; case 4:time[change/10][change%10]--;changetime();delay(200);write_1302();break;
ldi R17,10
lds R16,_change
xcall div8u
ldi R24,3
mul R24,R16
movw R2,R0
ldi R24,<_time
ldi R25,>_time
add R2,R24
adc R3,R25
ldi R18,10
ldi R19,0
lds R16,_change
clr R17
xcall mod16s
movw R4,R16
add R4,R2
adc R5,R3
movw R30,R4
ldd R24,z+0
subi R24,1
std z+0,R24
.dbline 698
xcall _changetime
.dbline 698
ldi R16,200
ldi R17,0
xcall _delay
.dbline 698
xcall _write_1302
.dbline 698
L183:
L184:
.dbline -2
L182:
adiw R28,1
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym l j 2 c
.dbend
.dbfunc e com _com fc
; temp -> R16
; i -> R18
.even
_com::
.dbline -1
.dbline 705
;
; }
;
; }
;
; char com()
; {
.dbline 706
; unsigned char i,temp=0;
clr R16
.dbline 707
; for(i=1;i<6;i++)
ldi R18,1
xjmp L198
L195:
.dbline 708
; {
.dbline 709
; if(time[0][1]==time[i][1])
ldi R24,3
mul R24,R18
movw R30,R0
ldi R24,<_time+1
ldi R25,>_time+1
add R30,R24
adc R31,R25
ldd R2,z+0
lds R3,_time+1
cp R3,R2
brne L199
.dbline 710
; {if(time[0][2]==time[i][2])
.dbline 710
ldi R24,3
mul R24,R18
movw R30,R0
ldi R24,<_time+2
ldi R25,>_time+2
add R30,R24
adc R31,R25
ldd R2,z+0
lds R3,_time+2
cp R3,R2
brne L203
.dbline 711
; {temp=1;}
.dbline 711
ldi R16,1
.dbline 711
L203:
.dbline 712
; }
L199:
.dbline 713
L196:
.dbline 707
inc R18
L198:
.dbline 707
cpi R18,6
brlo L195
.dbline 714
; }
; return temp;
.dbline -2
L194:
.dbline 0 ; func end
ret
.dbsym r temp 16 c
.dbsym r i 18 c
.dbend
.dbfunc e read_eep _read_eep fV
.even
_read_eep::
.dbline -1
.dbline 718
; }
;
; void read_eep()
; {
.dbline 719
; change=10;
ldi R24,10
sts _change,R24
.dbline 720
; for(;;)
L208:
.dbline 721
; {
.dbline 722
; if((change%10)==2)
ldi R17,10
lds R16,_change
xcall mod8u
cpi R16,2
brne L212
.dbline 723
; {if(change!=52)
.dbline 723
lds R24,_change
cpi R24,52
breq L214
.dbline 724
; {change=change+9;}
.dbline 724
subi R24,247 ; addi 9
sts _change,R24
.dbline 724
xjmp L213
L214:
.dbline 726
; else
; {change=0;mo=0;break;}
.dbline 726
clr R2
sts _change,R2
.dbline 726
sts _mo,R2
.dbline 726
xjmp L210
X12:
.dbline 727
; }
L212:
.dbline 729
; else
; {change++;}
.dbline 729
lds R24,_change
subi R24,255 ; addi 1
sts _change,R24
.dbline 729
L213:
.dbline 730
lds R16,_change
clr R17
xcall _EEPROMread
movw R2,R16
ldi R17,10
lds R16,_change
xcall div8u
ldi R24,3
mul R24,R16
movw R4,R0
ldi R24,<_time
ldi R25,>_time
add R4,R24
adc R5,R25
ldi R18,10
ldi R19,0
lds R16,_change
clr R17
xcall mod16s
movw R30,R16
add R30,R4
adc R31,R5
std z+0,R2
.dbline 732
.dbline 720
.dbline 720
xjmp L208
L210:
.dbline -2
L207:
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
; i -> R20,R21
.even
_main::
sbiw R28,4
.dbline -1
.dbline 740
; time[change/10][change%10]=EEPROMread(change);
;
; }
;
;
; }
;
;
;
; void main()
; {
.dbline 742
; unsigned int i;
; sys_init();
xcall _sys_init
.dbline 743
; for(i=0;i<10;i++)
clr R20
clr R21
xjmp L220
L217:
.dbline 744
.dbline 745
xcall _LCD_init
.dbline 748
ldi R24,<L221
ldi R25,>L221
std y+1,R25
std y+0,R24
clr R18
clr R16
xcall _LCD_write_string
.dbline 749
ldi R24,<L222
ldi R25,>L222
std y+1,R25
std y+0,R24
ldi R18,1
ldi R16,10
xcall _LCD_write_string
.dbline 750
L218:
.dbline 743
subi R20,255 ; offset = 1
sbci R21,255
L220:
.dbline 743
cpi R20,10
ldi R30,0
cpc R21,R30
brlo L217
.dbline 753
; {
; LCD_init();
;
;
; LCD_write_string(0,0,"set the distance");
; LCD_write_string(10,1,"cm");
; }
; //write_eep();
; //t2_init();
; i=EEPROMread(11);
ldi R16,11
ldi R17,0
xcall _EEPROMread
movw R20,R16
.dbline 754
; if(i==255)
cpi R16,255
ldi R30,0
cpc R17,R30
brne L223
.dbline 755
; {write_eep();}
.dbline 755
xcall _write_eep
.dbline 755
L223:
.dbline 756
; init_SPI();
xcall _init_SPI
.dbline 757
; date=Single_SPI(0x80,0);
clr R18
ldi R16,128
xcall _Single_SPI
sts _date,R16
.dbline 758
; read_eep();
xcall _read_eep
.dbline 759
; timer2_init();
xcall _timer2_init
.dbline 762
;
;
; MCUCR = 0x00;
clr R2
out 0x35,R2
.dbline 763
; TIMSK|=(1<<TOIE2); //允许定时器2溢出中断
in R24,0x39
ori R24,64
out 0x39,R24
.dbline 765
;
; SEI();
sei
.dbline 769
;
;
;
; TCCR2 = 0x00;
out 0x25,R2
.dbline 770
; LCD_write_string(0,0,"time:");
ldi R24,<L119
ldi R25,>L119
std y+1,R25
std y+0,R24
clr R18
clr R16
xcall _LCD_write_string
.dbline 771
; LCD_write_string(0,1,"alarm clock: ");
ldi R24,<L114
ldi R25,>L114
std y+1,R25
std y+0,R24
ldi R18,1
clr R16
xcall _LCD_write_string
.dbline 775
;
;
;
; Burst_SPI(0xbe,8,&time[0][0],&temp_1302[0]);
ldi R24,<_temp_1302
ldi R25,>_temp_1302
std y+3,R25
std y+2,R24
ldi R24,<_time
ldi R25,>_time
std y+1,R25
std y+0,R24
ldi R18,8
ldi R16,190
xcall _Burst_SPI
.dbline 776
; for(;;)
L225:
.dbline 777
; {Burst_SPI(0xbf,8,&date_init[0],&temp_1302[0]);
.dbline 777
ldi R24,<_temp_1302
ldi R25,>_temp_1302
std y+3,R25
std y+2,R24
ldi R24,<_date_init
ldi R25,>_date_init
std y+1,R25
std y+0,R24
ldi R18,8
ldi R16,191
xcall _Burst_SPI
.dbline 778
; switch(mo)
lds R20,_mo
clr R21
cpi R20,0
cpc R20,R21
breq L232
X13:
cpi R20,1
ldi R30,0
cpc R21,R30
brne X16
xjmp L242
X16:
cpi R20,2
ldi R30,0
cpc R21,R30
breq L225
xjmp L225
X14:
.dbline 779
; {
L232:
.dbline 780
; case 0:change=0;
clr R2
sts _change,R2
.dbline 781
; disp_temp(0,0,1);
ldi R24,1
std y+0,R24
clr R18
clr R16
xcall _disp_temp
.dbline 782
; if(get_key()==1)
xcall _get_key
cpi R16,1
brne L233
.dbline 783
; {mo=1; LCD_write_char(0x01,0);
.dbline 783
ldi R24,1
sts _mo,R24
.dbline 783
clr R18
clr R19
ldi R16,1
ldi R17,0
xcall _LCD_write_char
.dbline 784
; LCD_write_string(0,0,"set time second");
ldi R24,<L235
ldi R25,>L235
std y+1,R25
std y+0,R24
clr R18
clr R16
xcall _LCD_write_string
.dbline 785
; disp_temp(0,1,0);
clr R2
std y+0,R2
ldi R18,1
clr R16
xcall _disp_temp
.dbline 786
; disp_temp(0,1,0);
clr R2
std y+0,R2
ldi R18,1
clr R16
xcall _disp_temp
.dbline 787
; LCD_write_string(0,0,"set time second");
ldi R24,<L235
ldi R25,>L235
std y+1,R25
std y+0,R24
clr R18
clr R16
xcall _LCD_write_string
.dbline 788
; change=0;
clr R2
sts _change,R2
.dbline 789
; delay(300);}
ldi R16,300
ldi R17,1
xcall _delay
.dbline 789
L233:
.dbline 790
; if(get_key()==4)
xcall _get_key
cpi R16,4
brne L236
.dbline 791
; {alarmfalg=0;}
.dbline 791
clr R2
sts _alarmfalg,R2
.dbline 791
L236:
.dbline 793
;
; if(get_key()==3)
xcall _get_key
cpi R16,3
brne L238
.dbline 794
; {alarmfalg=1;}
.dbline 794
ldi R24,1
sts _alarmfalg,R24
.dbline 794
L238:
.dbline 795
; if((com()==1)&&(alarmfalg==1))
xcall _com
cpi R16,1
breq X17
xjmp L225
X17:
lds R24,_alarmfalg
cpi R24,1
breq X18
xjmp L225
X18:
.dbline 797
;
; {music();}
.dbline 797
xcall _music
.dbline 797
.dbline 801
;
;
;
; break;
xjmp L225
L242:
.dbline 802
xcall _settime
.dbline 802
.dbline 818
.dbline 825
.dbline 776
.dbline 776
xjmp L225
X15:
.dbline -2
L216:
adiw R28,4
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbend
.area bss(ram, con, rel)
.dbfile E:\temp\avr\bi2\bi2.c
_toneconst::
.blkb 2
.dbsym e toneconst _toneconst i
_temp_1302::
.blkb 7
.dbsym e temp_1302 _temp_1302 A[7:7]c
_date::
.blkb 1
.dbsym e date _date c
.area data(ram, con, rel)
.dbfile E:\temp\avr\bi2\bi2.c
L235:
.blkb 16
.area idata
.byte 's,'e,'t,32,'t,'i,'m,'e,32,'s,'e,'c,'o,'n,'d,0
.area data(ram, con, rel)
.dbfile E:\temp\avr\bi2\bi2.c
L222:
.blkb 3
.area idata
.byte 'c,'m,0
.area data(ram, con, rel)
.dbfile E:\temp\avr\bi2\bi2.c
L221:
.blkb 17
.area idata
.byte 's,'e,'t,32,'t,'h,'e,32,'d,'i,'s,'t,'a,'n,'c,'e
.byte 0
.area data(ram, con, rel)
.dbfile E:\temp\avr\bi2\bi2.c
L148:
.blkb 7
.area idata
.byte 'h,'o,'u,'r,32,32,0
.area data(ram, con, rel)
.dbfile E:\temp\avr\bi2\bi2.c
L146:
.blkb 7
.area idata
.byte 'm,'i,'n,'t,'u,'e,0
.area data(ram, con, rel)
.dbfile E:\temp\avr\bi2\bi2.c
L144:
.blkb 7
.area idata
.byte 's,'e,'c,'o,'n,'d,0
.area data(ram, con, rel)
.dbfile E:\temp\avr\bi2\bi2.c
L139:
.blkb 9
.area idata
.byte 's,'e,'t,32,'t,'i,'m,'e,0
.area data(ram, con, rel)
.dbfile E:\temp\avr\bi2\bi2.c
L138:
.blkb 8
.area idata
.byte 'a,'l,'a,'r,'m,32,32,0
.area data(ram, con, rel)
.dbfile E:\temp\avr\bi2\bi2.c
L121:
.blkb 2
.area idata
.byte 58,0
.area data(ram, con, rel)
.dbfile E:\temp\avr\bi2\bi2.c
L119:
.blkb 6
.area idata
.byte 't,'i,'m,'e,58,0
.area data(ram, con, rel)
.dbfile E:\temp\avr\bi2\bi2.c
L118:
.blkb 4
.area idata
.byte 'o,'f,'f,0
.area data(ram, con, rel)
.dbfile E:\temp\avr\bi2\bi2.c
L117:
.blkb 4
.area idata
.byte 'o,'n,32,0
.area data(ram, con, rel)
.dbfile E:\temp\avr\bi2\bi2.c
L114:
.blkb 14
.area idata
.byte 'a,'l,'a,'r,'m,32,'c,'l,'o,'c,'k,58,32,0
.area data(ram, con, rel)
.dbfile E:\temp\avr\bi2\bi2.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -