📄 timer.lis
字号:
.module timer.c
.area text(rom, con, rel)
0000 .dbfile E:\Shuaihu\AVR\8880\timer.c
0000 .dbfunc e timer1_init _timer1_init fV
.even
0000 _timer1_init::
0000 .dbline -1
0000 .dbline 7
0000 ; #include <iom8v.h>
0000 ; #include "main.h"
0000 ; #include "shell.h"
0000 ; #include "8880.h"
0000 ; #include "serial.h"
0000 ; void timer1_init(void)
0000 ; {
0000 .dbline 8
0000 ; TCCR1B = 0x00; //stop
0000 2224 clr R2
0002 2EBC out 0x2e,R2
0004 .dbline 9
0004 ; TCNT1H = 0xE3; //setup
0004 83EE ldi R24,227
0006 8DBD out 0x2d,R24
0008 .dbline 10
0008 ; TCNT1L = 0xE1;
0008 81EE ldi R24,225
000A 8CBD out 0x2c,R24
000C .dbline 11
000C ; OCR1AH = 0x1C;
000C 8CE1 ldi R24,28
000E 8BBD out 0x2b,R24
0010 .dbline 12
0010 ; OCR1AL = 0x1F;
0010 8FE1 ldi R24,31
0012 8ABD out 0x2a,R24
0014 .dbline 13
0014 ; OCR1BH = 0x1C;
0014 8CE1 ldi R24,28
0016 89BD out 0x29,R24
0018 .dbline 14
0018 ; OCR1BL = 0x1F;
0018 8FE1 ldi R24,31
001A 88BD out 0x28,R24
001C .dbline 15
001C ; ICR1H = 0x1C;
001C 8CE1 ldi R24,28
001E 87BD out 0x27,R24
0020 .dbline 16
0020 ; ICR1L = 0x1F;
0020 8FE1 ldi R24,31
0022 86BD out 0x26,R24
0024 .dbline 17
0024 ; TCCR1A = 0x00;
0024 2FBC out 0x2f,R2
0026 .dbline 18
0026 ; TIMSK |= 0x04;
0026 89B7 in R24,0x39
0028 8460 ori R24,4
002A 89BF out 0x39,R24
002C .dbline -2
002C L1:
002C .dbline 0 ; func end
002C 0895 ret
002E .dbend
.area data(ram, con, rel)
0000 .dbfile E:\Shuaihu\AVR\8880\timer.c
0000 _x::
0000 .blkb 2
.area idata
0000 0000 .word 0
.area data(ram, con, rel)
0002 .dbfile E:\Shuaihu\AVR\8880\timer.c
0002 .dbsym e x _x I
.area vector(rom, abs)
.org 16
0010 17C0 rjmp _timer1_ovf_isr
.area data(ram, con, rel)
0002 .dbfile E:\Shuaihu\AVR\8880\timer.c
.area text(rom, con, rel)
002E .dbfile E:\Shuaihu\AVR\8880\timer.c
002E .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
002E ; i -> R20,R21
.even
002E _timer1_ovf_isr::
002E 0A92 st -y,R0
0030 1A92 st -y,R1
0032 2A92 st -y,R2
0034 3A92 st -y,R3
0036 4A92 st -y,R4
0038 5A92 st -y,R5
003A 6A92 st -y,R6
003C 7A92 st -y,R7
003E 8A92 st -y,R8
0040 9A92 st -y,R9
0042 0A93 st -y,R16
0044 1A93 st -y,R17
0046 2A93 st -y,R18
0048 3A93 st -y,R19
004A 8A93 st -y,R24
004C 9A93 st -y,R25
004E AA93 st -y,R26
0050 BA93 st -y,R27
0052 EA93 st -y,R30
0054 FA93 st -y,R31
0056 0FB6 in R0,0x3f
0058 0A92 st -y,R0
005A 4A93 st -y,R20
005C 5A93 st -y,R21
005E .dbline -1
005E .dbline 24
005E ; }
005E ;
005E ; int x=0;
005E ; #pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVF
005E ; void timer1_ovf_isr(void)
005E ; {
005E .dbline 27
005E ; int i;
005E ; //TIMER1 has overflowed
005E ; TCNT1H = 0xE3; //reload counter high value
005E 83EE ldi R24,227
0060 8DBD out 0x2d,R24
0062 .dbline 28
0062 ; TCNT1L = 0xE1; //reload counter low value
0062 81EE ldi R24,225
0064 8CBD out 0x2c,R24
0066 .dbline 29
0066 ; switch (sysoption.calling)
0066 40910100 lds R20,_sysoption+1
006A 5527 clr R21
006C 4130 cpi R20,1
006E E0E0 ldi R30,0
0070 5E07 cpc R21,R30
0072 29F0 breq L7
0074 X0:
0074 4230 cpi R20,2
0076 E0E0 ldi R30,0
0078 5E07 cpc R21,R30
007A 09F1 breq L17
007C X1:
007C 28C0 rjmp L3
007E L7:
007E .dbline 31
007E ; { case 1:
007E ; if (sysoption.timer==40){
007E 80910300 lds R24,_sysoption+3
0082 8832 cpi R24,40
0084 B1F4 brne L8
0086 X2:
0086 .dbline 31
0086 .dbline 32
0086 ; M8880_Handdown;
0086 AD98 cbi 0x15,5
0088 .dbline 33
0088 ; for (i=0;i<10;i++) delay(0xffff);
0088 4427 clr R20
008A 5527 clr R21
008C L11:
008C .dbline 33
008C 0FEF ldi R16,65535
008E 1FEF ldi R17,255
0090 00D0 rcall _delay
0092 L12:
0092 .dbline 33
0092 4F5F subi R20,255 ; offset = 1
0094 5F4F sbci R21,255
0096 .dbline 33
0096 4A30 cpi R20,10
0098 E0E0 ldi R30,0
009A 5E07 cpc R21,R30
009C BCF3 brlt L11
009E X3:
009E .dbline 34
009E ; serial_send(noresponse);
009E 00910000 lds R16,_noresponse
00A2 10910100 lds R17,_noresponse+1
00A6 00D0 rcall _serial_send
00A8 .dbline 35
00A8 ; sysoption.calling=0;
00A8 2224 clr R2
00AA 20920100 sts _sysoption+1,R2
00AE .dbline 36
00AE ; TCCR1B=0x0;
00AE 2EBC out 0x2e,R2
00B0 .dbline 37
00B0 ; }else sysoption.timer++;
00B0 0EC0 rjmp L4
00B2 L8:
00B2 .dbline 37
00B2 80910300 lds R24,_sysoption+3
00B6 8F5F subi R24,255 ; addi 1
00B8 80930300 sts _sysoption+3,R24
00BC .dbline 38
00BC ; break;
00BC 08C0 rjmp L4
00BE L17:
00BE .dbline 40
00BE ; case 2:
00BE ; sysoption.calling=3;
00BE 83E0 ldi R24,3
00C0 80930100 sts _sysoption+1,R24
00C4 .dbline 41
00C4 ; serial_send("answered");
00C4 00E0 ldi R16,<L19
00C6 10E0 ldi R17,>L19
00C8 00D0 rcall _serial_send
00CA .dbline 42
00CA ; TCCR1B=0;
00CA 2224 clr R2
00CC 2EBC out 0x2e,R2
00CE .dbline 43
00CE ; break;
00CE L3:
00CE L4:
00CE .dbline -2
00CE L2:
00CE .dbline 0 ; func end
00CE 5991 ld R21,y+
00D0 4991 ld R20,y+
00D2 0990 ld R0,y+
00D4 0FBE out 0x3f,R0
00D6 F991 ld R31,y+
00D8 E991 ld R30,y+
00DA B991 ld R27,y+
00DC A991 ld R26,y+
00DE 9991 ld R25,y+
00E0 8991 ld R24,y+
00E2 3991 ld R19,y+
00E4 2991 ld R18,y+
00E6 1991 ld R17,y+
00E8 0991 ld R16,y+
00EA 9990 ld R9,y+
00EC 8990 ld R8,y+
00EE 7990 ld R7,y+
00F0 6990 ld R6,y+
00F2 5990 ld R5,y+
00F4 4990 ld R4,y+
00F6 3990 ld R3,y+
00F8 2990 ld R2,y+
00FA 1990 ld R1,y+
00FC 0990 ld R0,y+
00FE 1895 reti
0100 .dbsym r i 20 I
0100 .dbend
.area data(ram, con, rel)
0002 .dbfile E:\Shuaihu\AVR\8880\timer.c
0002 L19:
0002 .blkb 9
.area idata
0002 616E73776572656400 .byte 'a,'n,'s,'w,'e,'r,'e,'d,0
.area data(ram, con, rel)
000B .dbfile E:\Shuaihu\AVR\8880\timer.c
000B ; }
000B ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -