📄 1602_main.lis
字号:
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 + -