📄 time0.s
字号:
.module time0.c
.area vector(rom, abs)
.org 18
rjmp _timet0_ovf
.area data(ram, con, rel)
L2:
.blkb 2
.area idata
.word 110
.area data(ram, con, rel)
L3:
.blkb 2
.area idata
.word 190
.area data(ram, con, rel)
L4:
.blkb 2
.area idata
.word 800
.area data(ram, con, rel)
.area text(rom, con, rel)
.dbfile C:\avr3\time0.c
.dbfunc e timet0_ovf _timet0_ovf fV
.dbsym s M05_CONT L4 i
.dbsym s BEEP2_CONT L3 i
.dbsym s BEEP1_CONT L2 i
.even
_timet0_ovf::
st -y,R2
st -y,R3
st -y,R24
st -y,R25
st -y,R30
in R2,0x3f
st -y,R2
.dbline -1
.dbline 5
; #include"sga.h"
; /*=============定时器0中断函数==============*/
; #pragma interrupt_handler timet0_ovf:10
; void timet0_ovf(void)
; {
.dbline 10
; static unsigned int
; BEEP1_CONT=110,
; BEEP2_CONT=190,
; M05_CONT=800;
; SREG =0X80; //重新开放中断
ldi R24,128
out 0x3f,R24
.dbline 11
; TCNT0=0XEE; //重装1.25MS的定时初值
ldi R24,238
out 0x32,R24
.dbline 12
; DDRB|=BIT(PB0);
sbi 0x17,0
.dbline 13
; PORTB|=BIT(PB0);
sbi 0x18,0
.dbline 14
; M05_CONT--;
lds R24,L4
lds R25,L4+1
sbiw R24,1
sts L4+1,R25
sts L4,R24
.dbline 15
; if(M05_CONT==0)
cpi R24,0
cpc R24,R25
brne L5
X0:
.dbline 16
; {
.dbline 17
; M05_CONT=800;
ldi R24,800
ldi R25,3
sts L4+1,R25
sts L4,R24
.dbline 18
; if(MBZ==0) { MBZ=1; }
lds R2,_MBZ
tst R2
brne L7
.dbline 18
.dbline 18
ldi R24,1
sts _MBZ,R24
.dbline 18
rjmp L8
L7:
.dbline 19
; else { MBZ=0; }
.dbline 19
clr R2
sts _MBZ,R2
.dbline 19
L8:
.dbline 20
; }
L5:
.dbline 21
; if(BIT_80&0x80==0x80)
lds R2,_BIT_80
sbrs R2,0
rjmp L9
.dbline 22
; {
.dbline 23
; BUZZ_NO;
cbi 0x12,6
.dbline 24
; if((BEEP1_CONT--)==1)
lds R2,L2
lds R3,L2+1
movw R24,R2
sbiw R24,1
sts L2+1,R25
sts L2,R24
movw R24,R2
cpi R24,1
ldi R30,0
cpc R25,R30
brne L11
.dbline 25
; {
.dbline 26
; BEEP1_CONT=110;
ldi R24,110
ldi R25,0
sts L2+1,R25
sts L2,R24
.dbline 27
; BUZZ_YE;
sbi 0x12,6
.dbline 28
; BIT_80&=0x7f;//a.BEEP1=0;
lds R24,_BIT_80
andi R24,127
sts _BIT_80,R24
.dbline 29
; }
L11:
.dbline 30
; }
L9:
.dbline 32
; /*==========响铃2次函数设置============*/
; if(BIT_80&0x40==0x40) //响铃2次beep2
lds R2,_BIT_80
sbrs R2,0
rjmp L13
.dbline 33
; {
.dbline 34
; --BEEP2_CONT;
lds R24,L3
lds R25,L3+1
sbiw R24,1
sts L3+1,R25
sts L3,R24
.dbline 35
; if(BEEP2_CONT>113)
ldi R24,113
ldi R25,0
lds R2,L3
lds R3,L3+1
cp R24,R2
cpc R25,R3
brsh L15
.dbline 36
; {
.dbline 37
; BUZZ_NO;
cbi 0x12,6
.dbline 38
; }else
rjmp L16
L15:
.dbline 39
; if(BEEP2_CONT>75)
ldi R24,75
ldi R25,0
lds R2,L3
lds R3,L3+1
cp R24,R2
cpc R25,R3
brsh L17
.dbline 40
; {
.dbline 41
; BUZZ_YE;
sbi 0x12,6
.dbline 42
; }else
rjmp L18
L17:
.dbline 43
; if(BEEP2_CONT>0)
lds R2,L3
lds R3,L3+1
tst R2
brne X1
tst R3
breq L19
X1:
.dbline 44
; {
.dbline 45
; BUZZ_NO;
cbi 0x12,6
.dbline 46
; }else
rjmp L20
L19:
.dbline 47
; if(BEEP2_CONT==0)
lds R2,L3
lds R3,L3+1
tst R2
brne L21
tst R3
brne L21
X2:
.dbline 48
; {
.dbline 49
; BUZZ_YE;
sbi 0x12,6
.dbline 50
; BIT_80&=0xbf;
lds R24,_BIT_80
andi R24,191
sts _BIT_80,R24
.dbline 51
; BEEP2_CONT=190;
ldi R24,190
ldi R25,0
sts L3+1,R25
sts L3,R24
.dbline 52
; }
L21:
L20:
L18:
L16:
.dbline 53
; }
L13:
.dbline 55
; /*==========响铃2次函数结束============*/
; ++TMS;
lds R24,_TMS
lds R25,_TMS+1
adiw R24,1
sts _TMS+1,R25
sts _TMS,R24
.dbline -2
L1:
ld R2,y+
out 0x3f,R2
ld R30,y+
ld R25,y+
ld R24,y+
ld R3,y+
ld R2,y+
.dbline 0 ; func end
reti
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -