📄 pwm1.lis
字号:
.module PWM1.c
.area text(rom, con, rel)
0000 .dbfile G:\Mega8程序\TCXO评估板\Main\PWM1.c
0000 .dbfunc e pwm1_init _pwm1_init fV
.even
0000 _pwm1_init::
0000 .dbline -1
0000 .dbline 11
0000 ; /*
0000 ; T/C1使用PWM控制方式,进行DA转换。
0000 ; 直接对OCR1A、OCR1B写入电压数据,两路输出,精度12位
0000 ; */
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ; #define Vref 4995
0000 ; //参考电压值
0000 ; //T1初始化程序
0000 ; void pwm1_init(void)
0000 ; {
0000 .dbline 12
0000 ; TCCR1B = 0;
0000 2224 clr R2
0002 2EBC out 0x2e,R2
0004 .dbline 14
0004 ; //PWM停止工作
0004 ; DDRB=0b00000110;
0004 86E0 ldi R24,6
0006 87BB out 0x17,R24
0008 .dbline 16
0008 ; //OC1A作为PWMA输出引脚,OC1B作为PWMB输出引脚
0008 ; ICR1=0x0FFF;
0008 8FEF ldi R24,4095
000A 9FE0 ldi R25,15
000C 97BD out 0x27,R25
000E 86BD out 0x26,R24
0010 .dbline 18
0010 ; //PWM模式14,ICR1作为top值,12位精度
0010 ; TCNT1=0;
0010 3324 clr R3
0012 3DBC out 0x2d,R3
0014 2CBC out 0x2c,R2
0016 .dbline 19
0016 ; OCR1A=0x0000;
0016 3BBC out 0x2b,R3
0018 2ABC out 0x2a,R2
001A .dbline 20
001A ; OCR1B=0x0000;
001A 39BC out 0x29,R3
001C 28BC out 0x28,R2
001E .dbline 26
001E ; /*
001E ; 启动两路PWM输出,工作模式14(WGM XX),以系统时钟工作(CS XX)
001E ; 两路均为计数至TOP时,输出引脚清零(COM1 X1:COM1 X0),换言之,正占空比与
001E ; OCR1X成正比
001E ; */
001E ; TCCR1A =(1<<WGM11)|(1<<COM1A1)|(1<<COM1B1);
001E 82EA ldi R24,162
0020 8FBD out 0x2f,R24
0022 .dbline 27
0022 ; TCCR1B =(1<<WGM13)|(1<<WGM12)|(1<<CS10);
0022 89E1 ldi R24,25
0024 8EBD out 0x2e,R24
0026 .dbline -2
0026 L1:
0026 .dbline 0 ; func end
0026 0895 ret
0028 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -