📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile D:\avrvi\democode\DA_2\source\main.c
0000 .dbfunc e main _main fV
.even
0000 _main::
0000 .dbline -1
0000 .dbline 20
0000 ; /************************************************************
0000 ; 文 件:main.c
0000 ; 用 途:由TC1产生两路独立的16位PWM输出,通过滤波变成电压
0000 ; Target : M16
0000 ; Crystal: 8.0000Mhz
0000 ; 说 明:PD4输出PWMB,PD5输出PWMA
0000 ; 产生的PWM波形通过滤波后转换成电压
0000 ; 因LM358和滤波电路本身的原因,最大电压约能到VCC的3/4
0000 ; 这种PWM模拟DA的方式,精度有限
0000 ; 创 建:2008.1.29
0000 ; 修 改:2008.1.29
0000 ; Copy Right (c) www.avrvi.com AVR与虚拟仪器
0000 ; ************************************************************/
0000 ;
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; //主函数
0000 ; void main(void)
0000 ; {
0000 .dbline 22
0000 ;
0000 ; PORTD = 0x00;
0000 2224 clr R2
0002 22BA out 0x12,R2
0004 .dbline 23
0004 ; DDRD = (1<<PD4)|(1<<PD5); //PWM引脚PD4,PD5设置为输出
0004 80E3 ldi R24,48
0006 81BB out 0x11,R24
0008 .dbline 25
0008 ;
0008 ; TCCR1A = 0xA2; //两路PWM,匹配清零
0008 82EA ldi R24,162
000A 8FBD out 0x2f,R24
000C .dbline 26
000C ; TCCR1B = 0x19; //快速PWM模式,位数可调,预分频1
000C 89E1 ldi R24,25
000E 8EBD out 0x2e,R24
0010 .dbline 27
0010 ; ICR1 = 2048; //计数上限值,此数为16位PWM
0010 80E0 ldi R24,2048
0012 98E0 ldi R25,8
0014 97BD out 0x27,R25
0016 86BD out 0x26,R24
0018 .dbline 29
0018 ;
0018 ; OCR1A=512; //匹配初值
0018 92E0 ldi R25,2
001A 9BBD out 0x2b,R25
001C 8ABD out 0x2a,R24
001E .dbline 30
001E ; OCR1B=1484;
001E 8CEC ldi R24,1484
0020 95E0 ldi R25,5
0022 99BD out 0x29,R25
0024 88BD out 0x28,R24
0026 L2:
0026 .dbline 38
0026 .dbline 39
0026 .dbline 40
0026 L3:
0026 .dbline 37
0026 FFCF xjmp L2
0028 X0:
0028 .dbline -2
0028 L1:
0028 .dbline 0 ; func end
0028 0895 ret
002A .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -