📄 time0.lis
字号:
.module time0.c
.area vector(rom, abs)
.org 18
0012 00C0 rjmp _timet0_ovf
.area data(ram, con, rel)
0000 L2:
0000 .blkb 2
.area idata
0000 6E00 .word 110
.area data(ram, con, rel)
0002 L3:
0002 .blkb 2
.area idata
0002 BE00 .word 190
.area data(ram, con, rel)
0004 L4:
0004 .blkb 2
.area idata
0004 2003 .word 800
.area data(ram, con, rel)
.area text(rom, con, rel)
0000 .dbfile C:\avr3\time0.c
0000 .dbfunc e timet0_ovf _timet0_ovf fV
0000 .dbsym s M05_CONT L4 i
0000 .dbsym s BEEP2_CONT L3 i
0000 .dbsym s BEEP1_CONT L2 i
.even
0000 _timet0_ovf::
0000 2A92 st -y,R2
0002 3A92 st -y,R3
0004 8A93 st -y,R24
0006 9A93 st -y,R25
0008 EA93 st -y,R30
000A 2FB6 in R2,0x3f
000C 2A92 st -y,R2
000E .dbline -1
000E .dbline 5
000E ; #include"sga.h"
000E ; /*=============定时器0中断函数==============*/
000E ; #pragma interrupt_handler timet0_ovf:10
000E ; void timet0_ovf(void)
000E ; {
000E .dbline 10
000E ; static unsigned int
000E ; BEEP1_CONT=110,
000E ; BEEP2_CONT=190,
000E ; M05_CONT=800;
000E ; SREG =0X80; //重新开放中断
000E 80E8 ldi R24,128
0010 8FBF out 0x3f,R24
0012 .dbline 11
0012 ; TCNT0=0XEE; //重装1.25MS的定时初值
0012 8EEE ldi R24,238
0014 82BF out 0x32,R24
0016 .dbline 12
0016 ; DDRB|=BIT(PB0);
0016 B89A sbi 0x17,0
0018 .dbline 13
0018 ; PORTB|=BIT(PB0);
0018 C09A sbi 0x18,0
001A .dbline 14
001A ; M05_CONT--;
001A 80910400 lds R24,L4
001E 90910500 lds R25,L4+1
0022 0197 sbiw R24,1
0024 90930500 sts L4+1,R25
0028 80930400 sts L4,R24
002C .dbline 15
002C ; if(M05_CONT==0)
002C 8030 cpi R24,0
002E 8907 cpc R24,R25
0030 89F4 brne L5
0032 X0:
0032 .dbline 16
0032 ; {
0032 .dbline 17
0032 ; M05_CONT=800;
0032 80E2 ldi R24,800
0034 93E0 ldi R25,3
0036 90930500 sts L4+1,R25
003A 80930400 sts L4,R24
003E .dbline 18
003E ; if(MBZ==0) { MBZ=1; }
003E 20900000 lds R2,_MBZ
0042 2220 tst R2
0044 21F4 brne L7
0046 .dbline 18
0046 .dbline 18
0046 81E0 ldi R24,1
0048 80930000 sts _MBZ,R24
004C .dbline 18
004C 03C0 rjmp L8
004E L7:
004E .dbline 19
004E ; else { MBZ=0; }
004E .dbline 19
004E 2224 clr R2
0050 20920000 sts _MBZ,R2
0054 .dbline 19
0054 L8:
0054 .dbline 20
0054 ; }
0054 L5:
0054 .dbline 21
0054 ; if(BIT_80&0x80==0x80)
0054 20900000 lds R2,_BIT_80
0058 20FE sbrs R2,0
005A 1CC0 rjmp L9
005C .dbline 22
005C ; {
005C .dbline 23
005C ; BUZZ_NO;
005C 9698 cbi 0x12,6
005E .dbline 24
005E ; if((BEEP1_CONT--)==1)
005E 20900000 lds R2,L2
0062 30900100 lds R3,L2+1
0066 C101 movw R24,R2
0068 0197 sbiw R24,1
006A 90930100 sts L2+1,R25
006E 80930000 sts L2,R24
0072 C101 movw R24,R2
0074 8130 cpi R24,1
0076 E0E0 ldi R30,0
0078 9E07 cpc R25,R30
007A 61F4 brne L11
007C .dbline 25
007C ; {
007C .dbline 26
007C ; BEEP1_CONT=110;
007C 8EE6 ldi R24,110
007E 90E0 ldi R25,0
0080 90930100 sts L2+1,R25
0084 80930000 sts L2,R24
0088 .dbline 27
0088 ; BUZZ_YE;
0088 969A sbi 0x12,6
008A .dbline 28
008A ; BIT_80&=0x7f;//a.BEEP1=0;
008A 80910000 lds R24,_BIT_80
008E 8F77 andi R24,127
0090 80930000 sts _BIT_80,R24
0094 .dbline 29
0094 ; }
0094 L11:
0094 .dbline 30
0094 ; }
0094 L9:
0094 .dbline 32
0094 ; /*==========响铃2次函数设置============*/
0094 ; if(BIT_80&0x40==0x40) //响铃2次beep2
0094 20900000 lds R2,_BIT_80
0098 20FE sbrs R2,0
009A 3DC0 rjmp L13
009C .dbline 33
009C ; {
009C .dbline 34
009C ; --BEEP2_CONT;
009C 80910200 lds R24,L3
00A0 90910300 lds R25,L3+1
00A4 0197 sbiw R24,1
00A6 90930300 sts L3+1,R25
00AA 80930200 sts L3,R24
00AE .dbline 35
00AE ; if(BEEP2_CONT>113)
00AE 81E7 ldi R24,113
00B0 90E0 ldi R25,0
00B2 20900200 lds R2,L3
00B6 30900300 lds R3,L3+1
00BA 8215 cp R24,R2
00BC 9305 cpc R25,R3
00BE 10F4 brsh L15
00C0 .dbline 36
00C0 ; {
00C0 .dbline 37
00C0 ; BUZZ_NO;
00C0 9698 cbi 0x12,6
00C2 .dbline 38
00C2 ; }else
00C2 29C0 rjmp L16
00C4 L15:
00C4 .dbline 39
00C4 ; if(BEEP2_CONT>75)
00C4 8BE4 ldi R24,75
00C6 90E0 ldi R25,0
00C8 20900200 lds R2,L3
00CC 30900300 lds R3,L3+1
00D0 8215 cp R24,R2
00D2 9305 cpc R25,R3
00D4 10F4 brsh L17
00D6 .dbline 40
00D6 ; {
00D6 .dbline 41
00D6 ; BUZZ_YE;
00D6 969A sbi 0x12,6
00D8 .dbline 42
00D8 ; }else
00D8 1EC0 rjmp L18
00DA L17:
00DA .dbline 43
00DA ; if(BEEP2_CONT>0)
00DA 20900200 lds R2,L3
00DE 30900300 lds R3,L3+1
00E2 2220 tst R2
00E4 11F4 brne X1
00E6 3320 tst R3
00E8 11F0 breq L19
00EA X1:
00EA .dbline 44
00EA ; {
00EA .dbline 45
00EA ; BUZZ_NO;
00EA 9698 cbi 0x12,6
00EC .dbline 46
00EC ; }else
00EC 14C0 rjmp L20
00EE L19:
00EE .dbline 47
00EE ; if(BEEP2_CONT==0)
00EE 20900200 lds R2,L3
00F2 30900300 lds R3,L3+1
00F6 2220 tst R2
00F8 71F4 brne L21
00FA 3320 tst R3
00FC 61F4 brne L21
00FE X2:
00FE .dbline 48
00FE ; {
00FE .dbline 49
00FE ; BUZZ_YE;
00FE 969A sbi 0x12,6
0100 .dbline 50
0100 ; BIT_80&=0xbf;
0100 80910000 lds R24,_BIT_80
0104 8F7B andi R24,191
0106 80930000 sts _BIT_80,R24
010A .dbline 51
010A ; BEEP2_CONT=190;
010A 8EEB ldi R24,190
010C 90E0 ldi R25,0
010E 90930300 sts L3+1,R25
0112 80930200 sts L3,R24
0116 .dbline 52
0116 ; }
0116 L21:
0116 L20:
0116 L18:
0116 L16:
0116 .dbline 53
0116 ; }
0116 L13:
0116 .dbline 55
0116 ; /*==========响铃2次函数结束============*/
0116 ; ++TMS;
0116 80910000 lds R24,_TMS
011A 90910100 lds R25,_TMS+1
011E 0196 adiw R24,1
0120 90930100 sts _TMS+1,R25
0124 80930000 sts _TMS,R24
0128 .dbline -2
0128 L1:
0128 2990 ld R2,y+
012A 2FBE out 0x3f,R2
012C E991 ld R30,y+
012E 9991 ld R25,y+
0130 8991 ld R24,y+
0132 3990 ld R3,y+
0134 2990 ld R2,y+
0136 .dbline 0 ; func end
0136 1895 reti
0138 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -