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

📄 低频频率计.lis

📁 AVR之ATMega16
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module _低频频率计.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\低频频率计/delay.h
 0000                   .dbfunc e DelayUS _DelayUS fV
 0000           ;           time -> R16,R17
                        .even
 0000           _DelayUS::
 0000                   .dbline -1
 0000                   .dbline 9
 0000           ; //包含所需头文件
 0000           ; #include <ioM16v.h>
 0000           ; #include <macros.h>
 0000           ; #include "delay.h"
 0000           ; 
 0000           ; 
 0000           ; 
 0000           ; /*------宏定义------*/
 0000           ; #define uchar unsigned char
 0000 02C0              xjmp L3
 0002           L2:
 0002                   .dbline 11
 0002 0150              subi R16,1
 0004 1040              sbci R17,0
 0006           L3:
 0006                   .dbline 10
 0006           ; #define uint  unsigned int
 0006 81E0              ldi R24,1
 0008 90E0              ldi R25,0
 000A 8017              cp R24,R16
 000C 9107              cpc R25,R17
 000E C8F3              brlo L2
 0010                   .dbline -2
 0010           L1:
 0010                   .dbline 0 ; func end
 0010 0895              ret
 0012                   .dbsym r time 16 i
 0012                   .dbend
 0012                   .dbfunc e DelayMS _DelayMS fV
 0012           ;              i -> R20,R21
 0012           ;           time -> R16,R17
                        .even
 0012           _DelayMS::
 0012 0E940000          xcall push_gset1
 0016                   .dbline -1
 0016                   .dbline 20
 0016           ; uint m,value;
 0016           ; const uchar led_date[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
 0016           ; const uchar led_seg[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
 0016           ; 
 0016           ; //端口初始化
 0016           ; void port_init(void)
 0016           ; {
 0016           ;  PORTA = 0xFF;
 0016           ;  DDRA  = 0xFF;
 0016           ;  PORTB = 0xFF;
 0016 09C0              xjmp L7
 0018           L6:
 0018                   .dbline 23
 0018           ;  DDRB  = 0xFF;
 0018           ;  PORTC = 0x00;
 0018           ;  DDRC  = 0x00;
 0018                   .dbline 24
 0018           ;  PORTD = 0x40;
 0018 41E0              ldi R20,1
 001A 50E0              ldi R21,0
 001C 02C0              xjmp L12
 001E           L9:
 001E                   .dbline 25
 001E           L10:
 001E                   .dbline 24
 001E 4F5F              subi R20,255  ; offset = 1
 0020 5F4F              sbci R21,255
 0022           L12:
 0022                   .dbline 24
 0022 4637              cpi R20,118
 0024 E4E0              ldi R30,4
 0026 5E07              cpc R21,R30
 0028 D0F3              brlo L9
 002A                   .dbline 26
 002A           L7:
 002A                   .dbline 22
 002A 1801              movw R2,R16
 002C 0150              subi R16,1
 002E 1040              sbci R17,0
 0030 2220              tst R2
 0032 91F7              brne L6
 0034 3320              tst R3
 0036 81F7              brne L6
 0038           X0:
 0038                   .dbline -2
 0038           L5:
 0038 0E940000          xcall pop_gset1
 003C                   .dbline 0 ; func end
 003C 0895              ret
 003E                   .dbsym r i 20 i
 003E                   .dbsym r time 16 i
 003E                   .dbend
                        .area lit(rom, con, rel)
 0000           _led_date::
 0000 C0F9              .byte 192,249
 0002 A4B0              .byte 164,176
 0004 9992              .byte 153,146
 0006 82F8              .byte 130,248
 0008 8090              .byte 128,144
 000A 8883              .byte 136,131
 000C C6A1              .byte 198,161
 000E 868E              .byte 134,142
 0010                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\低频频率计\低频频率计.c
 0010                   .dbsym e led_date _led_date A[16:16]kc
 0010           _led_seg::
 0010 FEFD              .byte 254,253
 0012 FBF7              .byte 251,247
 0014 EFDF              .byte 239,223
 0016 BF7F              .byte 191,127
 0018                   .dbsym e led_seg _led_seg A[8:8]kc
                        .area text(rom, con, rel)
 003E                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\低频频率计\低频频率计.c
 003E                   .dbfunc e port_init _port_init fV
                        .even
 003E           _port_init::
 003E                   .dbline -1
 003E                   .dbline 17
 003E                   .dbline 18
 003E 8FEF              ldi R24,255
 0040 8BBB              out 0x1b,R24
 0042                   .dbline 19
 0042 8ABB              out 0x1a,R24
 0044                   .dbline 20
 0044 88BB              out 0x18,R24
 0046                   .dbline 21
 0046 87BB              out 0x17,R24
 0048                   .dbline 22
 0048 2224              clr R2
 004A 25BA              out 0x15,R2
 004C                   .dbline 23
 004C 24BA              out 0x14,R2
 004E                   .dbline 24
 004E 80E4              ldi R24,64
 0050 82BB              out 0x12,R24
 0052                   .dbline 25
 0052           ;  DDRD  = 0x00;
 0052 21BA              out 0x11,R2
 0054                   .dbline -2
 0054           L13:
 0054                   .dbline 0 ; func end
 0054 0895              ret
 0056                   .dbend
 0056                   .dbfunc e timer1_init _timer1_init fV
                        .even
 0056           _timer1_init::
 0056                   .dbline -1
 0056                   .dbline 31
 0056           ; }
 0056           ; 
 0056           ; 
 0056           ; //定时T1初始化
 0056           ; void timer1_init(void)
 0056           ; {
 0056                   .dbline 32
 0056           ;  TCCR1B = 0x00;//停止定时器
 0056 2224              clr R2
 0058 2EBC              out 0x2e,R2
 005A                   .dbline 33
 005A           ;  TIMSK |= 0x20;//中断允许
 005A 89B7              in R24,0x39
 005C 8062              ori R24,32
 005E 89BF              out 0x39,R24
 0060                   .dbline 34
 0060           ;  TCNT1H = 0x00;
 0060 2DBC              out 0x2d,R2
 0062                   .dbline 35
 0062           ;  TCNT1L = 0x00;//初始值
 0062 2CBC              out 0x2c,R2
 0064                   .dbline 36
 0064           ;  OCR1AH = 0x00;
 0064 2BBC              out 0x2b,R2
 0066                   .dbline 37
 0066           ;  OCR1AL = 0x00;//匹配A值
 0066 2ABC              out 0x2a,R2
 0068                   .dbline 38
 0068           ;  OCR1BH = 0x00;
 0068 29BC              out 0x29,R2
 006A                   .dbline 39
 006A           ;  OCR1BL = 0x00;//匹配B值
 006A 28BC              out 0x28,R2
 006C                   .dbline 40
 006C           ;  ICR1H  = 0xFF;
 006C 8FEF              ldi R24,255
 006E 87BD              out 0x27,R24
 0070                   .dbline 41
 0070           ;  ICR1L  = 0xFF;//输入捕捉匹配值
 0070 86BD              out 0x26,R24
 0072                   .dbline 42
 0072           ;  TCCR1A = 0x00;
 0072 2FBC              out 0x2f,R2
 0074                   .dbline 43
 0074           ;  TCCR1B = 0x42;//启动定时器
 0074 82E4              ldi R24,66
 0076 8EBD              out 0x2e,R24
 0078                   .dbline -2
 0078           L14:
 0078                   .dbline 0 ; func end
 0078 0895              ret
 007A                   .dbend
                        .area vector(rom, abs)
                        .org 20
 0014 0C943D00          jmp _timer1_capt_isr
                        .area text(rom, con, rel)
 007A                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\低频频率计\低频频率计.c
 007A                   .dbfunc e timer1_capt_isr _timer1_capt_isr fV
                        .even
 007A           _timer1_capt_isr::
 007A 2A92              st -y,R2
 007C 3A92              st -y,R3
 007E 4A92              st -y,R4
 0080 5A92              st -y,R5
 0082 0A93              st -y,R16
 0084 1A93              st -y,R17
 0086 2A93              st -y,R18
 0088 3A93              st -y,R19
 008A 8A93              st -y,R24
 008C EA93              st -y,R30
 008E 2FB6              in R2,0x3f
 0090 2A92              st -y,R2
 0092 0E940000          xcall push_gset2
 0096                   .dbline -1
 0096                   .dbline 50
 0096           ; }
 0096           ; 
 0096           ; 
 0096           ; //定时器T1输入捕捉中断服务程序
 0096           ; #pragma interrupt_handler timer1_capt_isr:6
 0096           ; void timer1_capt_isr(void)
 0096           ; {
 0096                   .dbline 52
 0096           ;  //timer 1 input capture event, read (int)value in ICR1 using;
 0096           ;   TCNT1=0;
 0096 2224              clr R2
 0098 3324              clr R3
 009A 3DBC              out 0x2d,R3
 009C 2CBC              out 0x2c,R2
 009E                   .dbline 53
 009E           ;   value=ICR1L;            //Read low byte first (important)
 009E 26B4              in R2,0x26
 00A0 3324              clr R3
 00A2 30920100          sts _value+1,R3
 00A6 20920000          sts _value,R2
 00AA                   .dbline 54
 00AA           ;   value|=(int)ICR1H << 8; //Read high byte and shift into top byte
 00AA 27B4              in R2,0x27
 00AC 3324              clr R3
 00AE 322C              mov R3,R2
 00B0 2224              clr R2
 00B2 40900000          lds R4,_value
 00B6 50900100          lds R5,_value+1
 00BA 4228              or R4,R2
 00BC 5328              or R5,R3
 00BE 50920100          sts _value+1,R5
 00C2 40920000          sts _value,R4
 00C6                   .dbline 55
 00C6           ;   m=1000000/value;
 00C6 1201              movw R2,R4
 00C8 4424              clr R4
 00CA 5524              clr R5
 00CC 40E4              ldi R20,64
 00CE 52E4              ldi R21,66
 00D0 6FE0              ldi R22,15
 00D2 70E0              ldi R23,0
 00D4 5A92              st -y,R5
 00D6 4A92              st -y,R4
 00D8 3A92              st -y,R3
 00DA 2A92              st -y,R2
 00DC 8A01              movw R16,R20
 00DE 9B01              movw R18,R22
 00E0 0E940000          xcall div32s
 00E4 10930300          sts _m+1,R17
 00E8 00930200          sts _m,R16
 00EC                   .dbline 56
 00EC           ;   TIFR|=BIT(ICF1);//软件写1清中断标志
 00EC 88B7              in R24,0x38
 00EE 8062              ori R24,32
 00F0 88BF              out 0x38,R24
 00F2                   .dbline -2
 00F2           L15:
 00F2 0E940000          xcall pop_gset2
 00F6 2990              ld R2,y+
 00F8 2FBE              out 0x3f,R2
 00FA E991              ld R30,y+
 00FC 8991              ld R24,y+
 00FE 3991              ld R19,y+
 0100 2991              ld R18,y+
 0102 1991              ld R17,y+
 0104 0991              ld R16,y+
 0106 5990              ld R5,y+
 0108 4990              ld R4,y+
 010A 3990              ld R3,y+
 010C 2990              ld R2,y+
 010E                   .dbline 0 ; func end
 010E 1895              reti
 0110                   .dbend
 0110                   .dbfunc e init_devices _init_devices fV

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -