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