📄 timer1.lis
字号:
.module timer1.c
.area data(ram, con, rel)
0000 _cap::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .blkb 3
.area idata
0001 000000 .byte 0,0,0
.area data(ram, con, rel)
0004 .dbfile D:\NEW\ECHO\timer1.c
0004 .dbsym e cap _cap A[4:4]c
.area text(rom, con, rel)
0000 .dbfile D:\NEW\ECHO\timer1.c
0000 .dbfunc e timer1_init _timer1_init fV
.even
0000 _timer1_init::
0000 .dbline -1
0000 .dbline 9
0000 ; #define TIMER1_C
0000 ; #include "includes.h"
0000 ; //TIMER1 initialisation - prescale:64
0000 ; // WGM: 0) Normal, TOP=0xFFFF
0000 ; // desired value: 200000uSec
0000 ; // actual value: 200000.000uSec (0.0%)
0000 ; unsigned char cap[4]={0,};
0000 ; void timer1_init(void)
0000 ; {
0000 .dbline 10
0000 ; TCCR1B = 0x00; //stop
0000 2224 clr R2
0002 2EBC out 0x2e,R2
0004 .dbline 11
0004 ; TCNT1H = 0xCF; //setup 200 000 uSec
0004 8FEC ldi R24,207
0006 8DBD out 0x2d,R24
0008 .dbline 12
0008 ; TCNT1L = 0x2C;
0008 8CE2 ldi R24,44
000A 8CBD out 0x2c,R24
000C .dbline 13
000C ; OCR1AH = 0x30;
000C 80E3 ldi R24,48
000E 8BBD out 0x2b,R24
0010 .dbline 14
0010 ; OCR1AL = 0xD4;
0010 84ED ldi R24,212
0012 8ABD out 0x2a,R24
0014 .dbline 15
0014 ; OCR1BH = 0x30;
0014 80E3 ldi R24,48
0016 89BD out 0x29,R24
0018 .dbline 16
0018 ; OCR1BL = 0xD4;
0018 84ED ldi R24,212
001A 88BD out 0x28,R24
001C .dbline 17
001C ; ICR1H = 0x30;
001C 80E3 ldi R24,48
001E 87BD out 0x27,R24
0020 .dbline 18
0020 ; ICR1L = 0xD4;
0020 84ED ldi R24,212
0022 86BD out 0x26,R24
0024 .dbline 19
0024 ; TCCR1A = 0x00;
0024 2FBC out 0x2f,R2
0026 .dbline -2
0026 .dbline 21
0026 ; //TCCR1B = 0xC3; //start Timer
0026 ; }
0026 L1:
0026 .dbline 0 ; func end
0026 0895 ret
0028 .dbend
.area vector(rom, abs)
.org 20
0014 0C941400 jmp _timer1_capt_isr
.area text(rom, con, rel)
0028 .dbfile D:\NEW\ECHO\timer1.c
0028 .dbfunc e timer1_capt_isr _timer1_capt_isr fV
.even
0028 _timer1_capt_isr::
0028 0E940000 xcall push_lset
002C 2297 sbiw R28,2
002E .dbline -1
002E .dbline 25
002E ;
002E ; #pragma interrupt_handler timer1_capt_isr:6
002E ; void timer1_capt_isr(void)
002E ; {
002E .dbline 27
002E ; //timer 1 input capture event, read (int)value in ICR1 using;
002E ; capt_timer1=ICR1L; //Read low byte first (important)
002E 26B4 in R2,0x26
0030 3324 clr R3
0032 30920100 sts _capt_timer1+1,R3
0036 20920000 sts _capt_timer1,R2
003A .dbline 28
003A ; capt_timer1|=(int)ICR1H << 8; //Read high byte and shift into top byte
003A 27B4 in R2,0x27
003C 3324 clr R3
003E 322C mov R3,R2
0040 2224 clr R2
0042 40900000 lds R4,_capt_timer1
0046 50900100 lds R5,_capt_timer1+1
004A 4228 or R4,R2
004C 5328 or R5,R3
004E 50920100 sts _capt_timer1+1,R5
0052 40920000 sts _capt_timer1,R4
0056 .dbline 29
0056 ; timer1_stop();//stop timer1
0056 C1D0 xcall _timer1_stop
0058 .dbline 30
0058 ; TIMSK = 0x00; //disable capt interupt
0058 2224 clr R2
005A 29BE out 0x39,R2
005C .dbline 31
005C ; TCNT1H = 0xCF /*INVALID SETTING*/; //reload counter high value
005C 8FEC ldi R24,207
005E 8DBD out 0x2d,R24
0060 .dbline 32
0060 ; TCNT1L = 0x2C /*INVALID SETTING*/; //reload counter low value
0060 8CE2 ldi R24,44
0062 8CBD out 0x2c,R24
0064 .dbline 34
0064 ;
0064 ; capt_timer1=capt_timer1-0xcf2c;//DATA SIGNIAL PROCESSING
0064 80910000 lds R24,_capt_timer1
0068 90910100 lds R25,_capt_timer1+1
006C 8C52 subi R24,44
006E 9F4C sbci R25,207
0070 90930100 sts _capt_timer1+1,R25
0074 80930000 sts _capt_timer1,R24
0078 .dbline 35
0078 ; capt_timer1=(capt_timer1/625)*speed/100/2;//DATA SIGNIAL PROCESSING
0078 21E7 ldi R18,625
007A 32E0 ldi R19,2
007C 8C01 movw R16,R24
007E 0E940000 xcall div16u
0082 20910000 lds R18,_speed
0086 30910100 lds R19,_speed+1
008A 0E940000 xcall empy16s
008E 24E6 ldi R18,100
0090 30E0 ldi R19,0
0092 0E940000 xcall div16u
0096 1801 movw R2,R16
0098 3694 lsr R3
009A 2794 ror R2
009C 30920100 sts _capt_timer1+1,R3
00A0 20920000 sts _capt_timer1,R2
00A4 .dbline 36
00A4 ; cap[3]='0'+capt_timer1/1000;
00A4 28EE ldi R18,1000
00A6 33E0 ldi R19,3
00A8 8101 movw R16,R2
00AA 0E940000 xcall div16u
00AE C801 movw R24,R16
00B0 C096 adiw R24,48
00B2 80930300 sts _cap+3,R24
00B6 .dbline 37
00B6 ; capt_timer1%=1000;
00B6 28EE ldi R18,1000
00B8 33E0 ldi R19,3
00BA 00910000 lds R16,_capt_timer1
00BE 10910100 lds R17,_capt_timer1+1
00C2 0E940000 xcall mod16u
00C6 10930100 sts _capt_timer1+1,R17
00CA 00930000 sts _capt_timer1,R16
00CE .dbline 38
00CE ; cap[2]='0'+capt_timer1/100;
00CE 24E6 ldi R18,100
00D0 30E0 ldi R19,0
00D2 0E940000 xcall div16u
00D6 C801 movw R24,R16
00D8 C096 adiw R24,48
00DA 80930200 sts _cap+2,R24
00DE .dbline 39
00DE ; capt_timer1%=100;
00DE 24E6 ldi R18,100
00E0 30E0 ldi R19,0
00E2 00910000 lds R16,_capt_timer1
00E6 10910100 lds R17,_capt_timer1+1
00EA 0E940000 xcall mod16u
00EE 10930100 sts _capt_timer1+1,R17
00F2 00930000 sts _capt_timer1,R16
00F6 .dbline 40
00F6 ; cap[1]='0'+capt_timer1/10;
00F6 2AE0 ldi R18,10
00F8 30E0 ldi R19,0
00FA 0E940000 xcall div16u
00FE C801 movw R24,R16
0100 C096 adiw R24,48
0102 80930100 sts _cap+1,R24
0106 .dbline 41
0106 ; capt_timer1%=10;
0106 2AE0 ldi R18,10
0108 30E0 ldi R19,0
010A 00910000 lds R16,_capt_timer1
010E 10910100 lds R17,_capt_timer1+1
0112 0E940000 xcall mod16u
0116 10930100 sts _capt_timer1+1,R17
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -