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

📄 1602_main.lis

📁 10K到5MHz的频率测量
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 02F6                   .dbfile D:\我的资源\我的文件\电子技术\AVR\AVR学习\JASON'~2\M16频率计(10K-5MHz,误差0.1%以下)(已验证)\1602_main.c
 02F6                   .dbfunc e port_init _port_init fV
                        .even
 02F6           _port_init::
 02F6                   .dbline -1
 02F6                   .dbline 14
 02F6           ; #include<iom16v.h>
 02F6           ; #include<macros.h>
 02F6           ; #include"1602.h"
 02F6           ; #define uint unsigned int
 02F6           ; #define uchar unsigned char  
 02F6           ; #define ulint unsigned long int
 02F6           ; uchar F[]={"F="},Hz[]={"Hz"},T[]={"T="};
 02F6           ; uchar S[]={"S"},uS[]={"uS"},dot[]={"."};
 02F6           ; float TT,FF;           
 02F6           ; ulint f,ff,T_int;
 02F6           ; uchar i,t,f_hign,f_low,hignf;
 02F6           ; 
 02F6           ; void port_init(void)
 02F6           ; {
 02F6                   .dbline 15
 02F6           ;  DDRA  = 0xff;
 02F6 8FEF              ldi R24,255
 02F8 8ABB              out 0x1a,R24
 02FA                   .dbline 16
 02FA           ;  PORTA = 0xff;
 02FA 8BBB              out 0x1b,R24
 02FC                   .dbline 17
 02FC           ;  PORTB = 0x00;
 02FC 2224              clr R2
 02FE 28BA              out 0x18,R2
 0300                   .dbline 18
 0300           ;  DDRB  = 0xF0;
 0300 80EF              ldi R24,240
 0302 87BB              out 0x17,R24
 0304                   .dbline 19
 0304           ;  PORTC = 0x00; //m103 output only
 0304 25BA              out 0x15,R2
 0306                   .dbline 20
 0306           ;  DDRC  = 0x00;
 0306 24BA              out 0x14,R2
 0308                   .dbline 21
 0308           ;  DDRD  = 0xff;
 0308 8FEF              ldi R24,255
 030A 81BB              out 0x11,R24
 030C                   .dbline 22
 030C           ;  PORTD = 0xff;
 030C 82BB              out 0x12,R24
 030E                   .dbline -2
 030E           L44:
 030E                   .dbline 0 ; func end
 030E 0895              ret
 0310                   .dbend
 0310                   .dbfunc e timer0_init _timer0_init fV
                        .even
 0310           _timer0_init::
 0310                   .dbline -1
 0310                   .dbline 30
 0310           ; }
 0310           ; 
 0310           ; //TIMER0 initialize - prescale:1024
 0310           ; // WGM: Normal
 0310           ; // desired value: 8mSec
 0310           ; // actual value:  8.000mSec (0.0%)
 0310           ; void timer0_init(void)
 0310           ; {
 0310                   .dbline 31
 0310           ;  TCCR0 = 0x00; //stop
 0310 2224              clr R2
 0312 23BE              out 0x33,R2
 0314                   .dbline 32
 0314           ;  TCNT0 = 0x83; //set count  
 0314 83E8              ldi R24,131
 0316 82BF              out 0x32,R24
 0318                   .dbline 33
 0318           ;  TCCR0 = 0x35; //start timer 
 0318 85E3              ldi R24,53
 031A 83BF              out 0x33,R24
 031C                   .dbline -2
 031C           L45:
 031C                   .dbline 0 ; func end
 031C 0895              ret
 031E                   .dbend
                        .area vector(rom, abs)
                        .org 36
 0024 0C948F01          jmp _timer0_ovf_isr
                        .area text(rom, con, rel)
 031E                   .dbfile D:\我的资源\我的文件\电子技术\AVR\AVR学习\JASON'~2\M16频率计(10K-5MHz,误差0.1%以下)(已验证)\1602_main.c
 031E                   .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
                        .even
 031E           _timer0_ovf_isr::
 031E 8A93              st -y,R24
 0320 9A93              st -y,R25
 0322 8FB7              in R24,0x3f
 0324 8A93              st -y,R24
 0326                   .dbline -1
 0326                   .dbline 38
 0326           ; }
 0326           ; 
 0326           ; #pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF
 0326           ; void timer0_ovf_isr(void)
 0326           ; {
 0326                   .dbline 39
 0326           ;  TCNT0 = 0x83; //reload counter value
 0326 83E8              ldi R24,131
 0328 82BF              out 0x32,R24
 032A                   .dbline 40
 032A           ;  t++;
 032A 80910300          lds R24,_t
 032E 8F5F              subi R24,255    ; addi 1
 0330 80930300          sts _t,R24
 0334                   .dbline -2
 0334           L46:
 0334                   .dbline 0 ; func end
 0334 8991              ld R24,y+
 0336 8FBF              out 0x3f,R24
 0338 9991              ld R25,y+
 033A 8991              ld R24,y+
 033C 1895              reti
 033E                   .dbend
 033E                   .dbfunc e timer1_init _timer1_init fV
                        .even
 033E           _timer1_init::
 033E                   .dbline -1
 033E                   .dbline 46
 033E           ; }
 033E           ; 
 033E           ; //TIMER1 initialize - prescale:Falling edge
 033E           ; // WGM: 0) Normal, TOP=0xFFFF
 033E           ; void timer1_init(void)
 033E           ; {
 033E                   .dbline 47
 033E           ;  TCCR1B = 0x00; //stop
 033E 2224              clr R2
 0340 2EBC              out 0x2e,R2
 0342                   .dbline 48
 0342           ;  TCCR1A = 0x00;
 0342 2FBC              out 0x2f,R2
 0344                   .dbline 49
 0344           ;  TCNT1H=0;
 0344 2DBC              out 0x2d,R2
 0346                   .dbline 50
 0346           ;  TCNT1L=0;
 0346 2CBC              out 0x2c,R2
 0348                   .dbline 51
 0348           ;  TCCR1B = 0x07; //start Timer
 0348 87E0              ldi R24,7
 034A 8EBD              out 0x2e,R24
 034C                   .dbline -2
 034C           L47:
 034C                   .dbline 0 ; func end
 034C 0895              ret
 034E                   .dbend
                        .area vector(rom, abs)
                        .org 32
 0020 0C94A701          jmp _timer1_ovf_isr
                        .area text(rom, con, rel)
 034E                   .dbfile D:\我的资源\我的文件\电子技术\AVR\AVR学习\JASON'~2\M16频率计(10K-5MHz,误差0.1%以下)(已验证)\1602_main.c
 034E                   .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
                        .even
 034E           _timer1_ovf_isr::
 034E 2A92              st -y,R2
 0350 8A93              st -y,R24
 0352 9A93              st -y,R25
 0354 2FB6              in R2,0x3f
 0356 2A92              st -y,R2
 0358                   .dbline -1
 0358                   .dbline 56
 0358           ; }
 0358           ; 
 0358           ; #pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVF
 0358           ; void timer1_ovf_isr(void)
 0358           ; {
 0358                   .dbline 57
 0358           ;  TCNT1H=0;
 0358 2224              clr R2
 035A 2DBC              out 0x2d,R2
 035C                   .dbline 58
 035C           ;  TCNT1L=0;
 035C 2CBC              out 0x2c,R2
 035E                   .dbline 59
 035E           ;  hignf++;
 035E 80910000          lds R24,_hignf
 0362 8F5F              subi R24,255    ; addi 1
 0364 80930000          sts _hignf,R24
 0368                   .dbline -2
 0368           L48:
 0368                   .dbline 0 ; func end
 0368 2990              ld R2,y+
 036A 2FBE              out 0x3f,R2
 036C 9991              ld R25,y+
 036E 8991              ld R24,y+
 0370 2990              ld R2,y+
 0372 1895              reti
 0374                   .dbend
 0374                   .dbfunc e init_devices _init_devices fV
                        .even
 0374           _init_devices::
 0374                   .dbline -1
 0374                   .dbline 64
 0374           ; }
 0374           ; 
 0374           ; //call this routine to initialize all peripherals
 0374           ; void init_devices(void)
 0374           ; {
 0374                   .dbline 65
 0374           ;  port_init();
 0374 C0DF              xcall _port_init
 0376                   .dbline 66
 0376           ;  timer0_init();
 0376 CCDF              xcall _timer0_init
 0378                   .dbline 67
 0378           ;  timer1_init();
 0378 E2DF              xcall _timer1_init
 037A                   .dbline 68
 037A           ;  MCUCR = 0x00;
 037A 2224              clr R2
 037C 25BE              out 0x35,R2
 037E                   .dbline 69
 037E           ;  GICR  = 0x00;
 037E 2BBE              out 0x3b,R2
 0380                   .dbline 70
 0380           ;  TIMSK = 0x05; //timer interrupt sources
 0380 85E0              ldi R24,5
 0382 89BF              out 0x39,R24
 0384                   .dbline -2
 0384           L49:
 0384                   .dbline 0 ; func end
 0384 0895              ret
 0386                   .dbend
 0386                   .dbfunc e main _main fV
                        .even
 0386           _main::
 0386 2497              sbiw R28,4
 0388                   .dbline -1
 0388                   .dbline 75
 0388           ; }
 0388           ; 
 0388           ; //主函数
 0388           ; void main()
 0388           ; {
 0388                   .dbline 76
 0388           ;  CLI();
 0388 F894              cli
 038A                   .dbline 77
 038A           ;  t=0;
 038A 2224              clr R2
 038C 20920300          sts _t,R2
 0390                   .dbline 78
 0390           ;  hignf=0;
 0390 20920000          sts _hignf,R2
 0394                   .dbline 79
 0394           ;  init_devices();
 0394 EFDF              xcall _init_devices
 0396                   .dbline 80
 0396           ;  s_ms(5000);      //延时
 0396 08E8              ldi R16,5000
 0398 13E1              ldi R17,19
 039A 32DE              xcall _s_ms
 039C                   .dbline 81
 039C           ;  LcdInit();     //1602初始化
 039C 7EDE              xcall _LcdInit
 039E                   .dbline 82
 039E           ;  WriteChar(1,0,2,T);
 039E 80E0              ldi R24,<_T
 03A0 90E0              ldi R25,>_T
 03A2 9B83              std y+3,R25
 03A4 8A83              std y+2,R24
 03A6 82E0              ldi R24,2
 03A8 8883              std y+0,R24
 03AA 2227              clr R18
 03AC 01E0              ldi R16,1
 03AE 72DF              xcall _WriteChar
 03B0                   .dbline 83
 03B0           ;  WriteChar(1,15,1,S);
 03B0 80E0              ldi R24,<_S
 03B2 90E0              ldi R25,>_S
 03B4 9B83              std y+3,R25
 03B6 8A83              std y+2,R24
 03B8 81E0              ldi R24,1
 03BA 8883              std y+0,R24
 03BC 2FE0              ldi R18,15
 03BE 01E0              ldi R16,1
 03C0 69DF              xcall _WriteChar
 03C2                   .dbline 84
 03C2           ;  WriteNum(1,4,0);
 03C2 2224              clr R2
 03C4 3324              clr R3
 03C6 3982              std y+1,R3
 03C8 2882              std y+0,R2
 03CA 24E0              ldi R18,4
 03CC 30E0              ldi R19,0
 03CE 01E0              ldi R16,1
 03D0 10E0              ldi R17,0
 03D2 18DF              xcall _WriteNum
 03D4                   .dbline 85
 03D4           ;  WriteChar(1,5,1,dot);    
 03D4 80E0              ldi R24,<_dot
 03D6 90E0              ldi R25,>_dot
 03D8 9B83              std y+3,R25
 03DA 8A83              std y+2,R24
 03DC 81E0              ldi R24,1
 03DE 8883              std y+0,R24
 03E0 25E0              ldi R18,5
 03E2 01E0              ldi R16,1
 03E4 57DF              xcall _WriteChar
 03E6                   .dbline 86
 03E6           ;  WriteChar(2,0,2,F);    
 03E6 80E0              ldi R24,<_F
 03E8 90E0              ldi R25,>_F
 03EA 9B83              std y+3,R25
 03EC 8A83              std y+2,R24
 03EE 82E0              ldi R24,2
 03F0 8883              std y+0,R24
 03F2 2227              clr R18
 03F4 02E0              ldi R16,2
 03F6 4EDF              xcall _WriteChar
 03F8                   .dbline 87
 03F8           ;  WriteChar(2,14,2,Hz);   
 03F8 80E0              ldi R24,<_Hz
 03FA 90E0              ldi R25,>_Hz
 03FC 9B83              std y+3,R25
 03FE 8A83              std y+2,R24
 0400 82E0              ldi R24,2
 0402 8883              std y+0,R24
 0404 2EE0              ldi R18,14
 0406 02E0              ldi R16,2
 0408 45DF              xcall _WriteChar
 040A                   .dbline 88

⌨️ 快捷键说明

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