📄 bi2.s
字号:
.even
_time_change::
.dbline -1
.dbline 532
; else
; {
; LCD_RS_PORT&=~LCD_RS; //RS=0
; LCD_DATA_PORT&=0XF0;
; LCD_DATA_PORT|=(command_temp>>4)&0x0F; //写高四位
; LCD_en_write();
; // command_temp=command_temp<<4;
; LCD_DATA_PORT&=0xF0;
; LCD_DATA_PORT|=command_temp&0x0F; //写低四位
; LCD_en_write();
; }
; }
; /***************************************
; T2初始化,中断
; ****************************************/
;
;
;
;
; void time_change(void)
; {
.dbline 533
; if(time[0][0]<60)
lds R24,_time
cpi R24,60
brsh L97
.dbline 534
; return;
xjmp L96
L97:
.dbline 536
; else
; {time[0][0]-=60;
.dbline 536
lds R24,_time
subi R24,60
sts _time,R24
.dbline 537
; if(time[0][1]<59)
lds R24,_time+1
cpi R24,59
brsh L99
.dbline 538
; time[0][1]++;
subi R24,255 ; addi 1
sts _time+1,R24
xjmp L100
L99:
.dbline 540
; else
; {
.dbline 541
; time[0][1]=0;
clr R2
sts _time+1,R2
.dbline 542
; if(time[0][2]<23)
lds R24,_time+2
cpi R24,23
brsh L104
.dbline 543
; time[0][2]++;
subi R24,255 ; addi 1
sts _time+2,R24
xjmp L105
L104:
.dbline 545
; else
; time[0][2]=0;
clr R2
sts _time+2,R2
L105:
.dbline 546
; }
L100:
.dbline 547
; }
.dbline -2
L96:
.dbline 0 ; func end
ret
.dbend
.dbfunc e t2_init _t2_init fV
.even
_t2_init::
.dbline -1
.dbline 552
;
; }
;
; void t2_init()
; {
.dbline 553
; ASSR=(1<<AS2);
ldi R24,8
out 0x22,R24
.dbline 554
; TCNT2=0XE0;
ldi R24,224
out 0x24,R24
.dbline 555
; TCCR2=(7<<CS20);
ldi R24,7
out 0x25,R24
.dbline 556
; TIMSK|=(1<<TOIE2);
in R24,0x39
ori R24,64
out 0x39,R24
.dbline -2
L109:
.dbline 0 ; func end
ret
.dbend
.area vector(rom, abs)
.org 16
jmp _t2_iov
.area text(rom, con, rel)
.dbfile E:\temp\avr\bi2\bi2.c
.dbfunc e t2_iov _t2_iov fV
.even
_t2_iov::
xcall push_lset
.dbline -1
.dbline 560
; }
; #pragma interrupt_handler t2_iov:5
; void t2_iov(void)
; {
.dbline 561
; TCNT2=0XE0;
ldi R24,224
out 0x24,R24
.dbline 562
; time[0][0]++;
lds R24,_time
subi R24,255 ; addi 1
sts _time,R24
.dbline 563
; time_change();
xcall _time_change
.dbline -2
L110:
xcall pop_lset
.dbline 0 ; func end
reti
.dbend
.dbfunc e disp_temp _disp_temp fV
; q -> y+8
; y -> R20
; x -> R22
.even
_disp_temp::
xcall push_gset2
mov R20,R18
mov R22,R16
sbiw R28,4
.dbline -1
.dbline 569
; }
;
;
;
; void disp_temp(unsigned char x,unsigned char y,unsigned char q)
; {
.dbline 570
; if(q==1)
ldd R24,y+8
cpi R24,1
brne L112
.dbline 571
; {LCD_write_string(0,1,"alarm clock: ");
.dbline 571
ldi R24,<L114
ldi R25,>L114
std y+1,R25
std y+0,R24
ldi R18,1
clr R16
xcall _LCD_write_string
.dbline 572
; if(alarmfalg==1)
lds R24,_alarmfalg
cpi R24,1
brne L115
.dbline 573
; {LCD_write_string(13,1,"on ");}
.dbline 573
ldi R24,<L117
ldi R25,>L117
std y+1,R25
std y+0,R24
ldi R18,1
ldi R16,13
xcall _LCD_write_string
.dbline 573
xjmp L116
L115:
.dbline 575
; else
; {LCD_write_string(13,1,"off");}
.dbline 575
ldi R24,<L118
ldi R25,>L118
std y+1,R25
std y+0,R24
ldi R18,1
ldi R16,13
xcall _LCD_write_string
.dbline 575
L116:
.dbline 576
; }
L112:
.dbline 577
; LCD_write_string(0,y,"time:");
ldi R24,<L119
ldi R25,>L119
std y+1,R25
std y+0,R24
mov R18,R20
clr R16
xcall _LCD_write_string
.dbline 579
;
; LCD_write_ch(6,y,2,time[change/10][2]);
ldi R17,10
lds R16,_change
xcall div8u
ldi R24,3
mul R24,R16
movw R30,R0
ldi R24,<_time+2
ldi R25,>_time+2
add R30,R24
adc R31,R25
ldd R2,z+0
clr R3
std y+3,R3
std y+2,R2
ldi R24,2
std y+0,R24
mov R18,R20
ldi R16,6
xcall _LCD_write_ch
.dbline 580
; LCD_write_string(8,y,":");
ldi R24,<L121
ldi R25,>L121
std y+1,R25
std y+0,R24
mov R18,R20
ldi R16,8
xcall _LCD_write_string
.dbline 581
; LCD_write_ch(9,y,2,time[change/10][1]);
ldi R17,10
lds R16,_change
xcall div8u
ldi R24,3
mul R24,R16
movw R30,R0
ldi R24,<_time+1
ldi R25,>_time+1
add R30,R24
adc R31,R25
ldd R2,z+0
clr R3
std y+3,R3
std y+2,R2
ldi R24,2
std y+0,R24
mov R18,R20
ldi R16,9
xcall _LCD_write_ch
.dbline 582
; LCD_write_string(11,y,":");
ldi R24,<L121
ldi R25,>L121
std y+1,R25
std y+0,R24
mov R18,R20
ldi R16,11
xcall _LCD_write_string
.dbline 583
; LCD_write_ch(12,y,2,time[change/10][0]);
ldi R17,10
lds R16,_change
xcall div8u
ldi R24,3
mul R24,R16
movw R30,R0
ldi R24,<_time
ldi R25,>_time
add R30,R24
adc R31,R25
ldd R2,z+0
clr R3
std y+3,R3
std y+2,R2
ldi R24,2
std y+0,R24
mov R18,R20
ldi R16,12
xcall _LCD_write_ch
.dbline -2
L111:
adiw R28,4
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym l q 8 c
.dbsym r y 20 c
.dbsym r x 22 c
.dbend
.dbfunc e get_key _get_key fc
; tempn0 -> R16
; temp -> R16
.even
_get_key::
.dbline -1
.dbline 589
;
; }
;
;
; char get_key()
; {
.dbline 591
; unsigned char temp,tempn0;
; temp=PINA&0XF0;
in R16,0x19
andi R16,240
.dbline 592
; switch (temp)
clr R17
cpi R16,176
ldi R30,0
cpc R17,R30
breq L129
ldi R24,176
ldi R25,0
cp R24,R16
cpc R25,R17
brlt L132
L131:
cpi R16,112
ldi R30,0
cpc R17,R30
breq L130
xjmp L124
L132:
cpi R16,208
ldi R30,0
cpc R17,R30
breq L128
cpi R16,208
ldi R30,0
cpc R17,R30
brlt L124
L133:
cpi R16,224
ldi R30,0
cpc R17,R30
breq L127
xjmp L124
X3:
.dbline 593
; {
L127:
.dbline 594
; case 0xe0:tempn0=1;break;
ldi R16,1
.dbline 594
xjmp L125
L128:
.dbline 595
; case 0xd0:tempn0=2;break;
ldi R16,2
.dbline 595
xjmp L125
L129:
.dbline 596
; case 0xb0:tempn0=3;break;
ldi R16,3
.dbline 596
xjmp L125
L130:
.dbline 597
; case 0x70:tempn0=4;break;
ldi R16,4
.dbline 597
L124:
L125:
.dbline 600
;
; }
; return tempn0;
.dbline -2
L123:
.dbline 0 ; func end
ret
.dbsym r tempn0 16 c
.dbsym r temp 16 c
.dbend
.dbfunc e sys_init _sys_init fV
.even
_sys_init::
.dbline -1
.dbline 604
; }
;
; void sys_init()
; {
.dbline 605
; DDRA=0X0F;
ldi R24,15
out 0x1a,R24
.dbline 606
; PORTA=0XFF;
ldi R24,255
out 0x1b,R24
.dbline 607
; DDRC=0XFF;
out 0x14,R24
.dbline 608
; PORTC=0XFF;
out 0x15,R24
.dbline 609
; LCD_DATA_DDR=0XFF;
out 0x11,R24
.dbline 610
; DDRB=0B10110000;
ldi R24,176
out 0x17,R24
.dbline 611
; SEI();
sei
.dbline -2
L134:
.dbline 0 ; func end
ret
.dbend
.dbfunc e disp_change _disp_change fV
.even
_disp_change::
xcall push_gset1
sbiw R28,4
.dbline -1
.dbline 615
; }
;
; void disp_change()
; {
.dbline 616
; if((change/10)!=0)
ldi R17,10
lds R16,_change
xcall div8u
tst R16
breq L136
.dbline 617
; {
.dbline 618
; LCD_write_string(0,0,"alarm ");
ldi R24,<L138
ldi R25,>L138
std y+1,R25
std y+0,R24
clr R18
clr R16
xcall _LCD_write_string
.dbline 619
; LCD_write_ch(7,0,1,change/10);
ldi R18,10
ldi R19,0
lds R16,_change
clr R17
xcall div16s
std y+3,R17
std y+2,R16
ldi R24,1
std y+0,R24
clr R18
ldi R16,7
xcall _LCD_write_ch
.dbline 620
; }
xjmp L137
L136:
.dbline 622
; else
; { LCD_write_string(0,0,"set time");
.dbline 622
ldi R24,<L139
ldi R25,>L139
std y+1,R25
std y+0,R24
clr R18
clr R16
xcall _LCD_write_string
.dbline 623
; }
L137:
.dbline 624
; switch(change%10)
ldi R18,10
ldi R19,0
lds R16,_change
clr R17
xcall mod16s
movw R20,R16
cpi R16,0
cpc R16,R17
breq L143
X4:
cpi R20,1
ldi R30,0
cpc R21,R30
breq L145
cpi R20,2
ldi R30,0
cpc R21,R30
breq L147
xjmp L140
X5:
.dbline 625
; {
L143:
.dbline 626
; case 0: LCD_write_string(9,0,"second");break;
ldi R24,<L144
ldi R25,>L144
std y+1,R25
std y+0,R24
clr R18
ldi R16,9
xcall _LCD_write_string
.dbline 626
xjmp L141
L145:
.dbline 627
; case 1: LCD_write_string(9,0,"mintue");break;
ldi R24,<L146
ldi R25,>L146
std y+1,R25
std y+0,R24
clr R18
ldi R16,9
xcall _LCD_write_string
.dbline 627
xjmp L141
L147:
.dbline 628
; case 2: LCD_write_string(9,0,"hour ");break;
ldi R24,<L148
ldi R25,>L148
std y+1,R25
std y+0,R24
clr R18
ldi R16,9
xcall _LCD_write_string
.dbline 628
L140:
L141:
.dbline -2
L135:
adiw R28,4
xcall pop_gset1
.dbline 0 ; func end
ret
.dbend
.dbfunc e changetime _changetime fV
.even
_changetime::
.dbline -1
.dbline 634
; }
;
; }
;
; void changetime()
; {
.dbline 635
; if(change%10==0)
ldi R17,10
lds R16,_change
xcall mod8u
tst R16
brne L150
.dbline 636
; {time[change/10][0]=0;}
.dbline 636
ldi R17,10
lds R16,_change
xcall div8u
ldi R24,3
mul R24,R16
movw R30,R0
ldi R24,<_time
ldi R25,>_time
add R30,R24
adc R31,R25
clr R2
std z+0,R2
.dbline 636
xjmp L151
L150:
.dbline 637
; else if(change%10==1)
ldi R17,10
lds R16,_change
xcall mod8u
cpi R16,1
breq X6
xjmp L152
X6:
.dbline 638
; {if(time[change/10][1]==255)
.dbline 638
ldi R17,10
lds R16,_change
xcall div8u
ldi R24,3
mul R24,R16
movw R30,R0
ldi R24,<_time+1
ldi R25,>_time+1
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,255
brne L154
.dbline 639
; {time[change/10][1]=59;}
.dbline 639
ldi R17,10
lds R16,_change
xcall div8u
ldi R24,3
mul R24,R16
movw R30,R0
ldi R24,<_time+1
ldi R25,>_time+1
add R30,R24
adc R31,R25
ldi R24,59
std z+0,R24
.dbline 639
xjmp L153
L154:
.dbline 640
; else if(time[change/10][1]==60)
ldi R17,10
lds R16,_change
xcall div8u
ldi R24,3
mul R24,R16
movw R30,R0
ldi R24,<_time+1
ldi R25,>_time+1
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,60
breq X7
xjmp L153
X7:
.dbline 641
; {time[change/10][1]=0;}
.dbline 641
ldi R17,10
lds R16,_change
xcall div8u
ldi R24,3
mul R24,R16
movw R30,R0
ldi R24,<_time+1
ldi R25,>_time+1
add R30,R24
adc R31,R25
clr R2
std z+0,R2
.dbline 641
.dbline 642
; }
xjmp L153
L152:
.dbline 644
;
; else if(change%10==2)
ldi R17,10
lds R16,_change
xcall mod8u
cpi R16,2
breq X8
xjmp L162
X8:
.dbline 645
; {if(time[change/10][2]==255)
.dbline 645
ldi R17,10
lds R16,_change
xcall div8u
ldi R24,3
mul R24,R16
movw R30,R0
ldi R24,<_time+2
ldi R25,>_time+2
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,255
brne L164
.dbline 646
; {time[change/10][2]=23;}
.dbline 646
ldi R17,10
lds R16,_change
xcall div8u
ldi R24,3
mul R24,R16
movw R30,R0
ldi R24,<_time+2
ldi R25,>_time+2
add R30,R24
adc R31,R25
ldi R24,23
std z+0,R24
.dbline 646
xjmp L165
L164:
.dbline 647
; else if(time[change/10][2]==24)
ldi R17,10
lds R16,_change
xcall div8u
ldi R24,3
mul R24,R16
movw R30,R0
ldi R24,<_time+2
ldi R25,>_time+2
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,24
brne L168
.dbline 648
; {time[change/10][2]=0;}
.dbline 648
ldi R17,10
lds R16,_change
xcall div8u
ldi R24,3
mul R24,R16
movw R30,R0
ldi R24,<_time+2
ldi R25,>_time+2
add R30,R24
adc R31,R25
clr R2
std z+0,R2
.dbline 648
L168:
L165:
.dbline 649
; }
L162:
L153:
L151:
.dbline -2
L149:
.dbline 0 ; func end
ret
.dbend
.dbfunc e write_eep _write_eep fV
; i -> <dead>
.even
_write_eep::
.dbline -1
.dbline 655
;
;
; }
;
; void write_eep()
; {
.dbline 657
; unsigned char i;
; change=10;
ldi R24,10
sts _change,R24
.dbline 658
; for(;;)
L173:
.dbline 659
; {
.dbline 660
; if((change%10)==2)
ldi R17,10
lds R16,_change
xcall mod8u
cpi R16,2
brne L177
.dbline 661
; {if(change!=52)
.dbline 661
lds R24,_change
cpi R24,52
breq L179
.dbline 662
; {change=change+9;}
.dbline 662
subi R24,247 ; addi 9
sts _change,R24
.dbline 662
xjmp L178
L179:
.dbline 664
; else
; {change=0;mo=0;break;}
.dbline 664
clr R2
sts _change,R2
.dbline 664
sts _mo,R2
.dbline 664
xjmp L175
X9:
.dbline 665
; }
L177:
.dbline 667
; else
; {change++;}
.dbline 667
lds R24,_change
subi R24,255 ; addi 1
sts _change,R24
.dbline 667
L178:
.dbline 668
ldi R17,10
lds R16,_change
xcall div8u
ldi R24,3
mul R24,R16
movw R2,R0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -