⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer1.lis

📁 用的avr icc 开发的atmega16的超声波测距仪模型。
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .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 + -