📄 oc2pwm.s
字号:
.module OC2PWM.C
.area text(rom, con, rel)
.dbfile E:\ProductPro\M16SD\ICCAVR\PWM\OC2PWM\OC2PWM.C
.dbfunc e timer2_init _timer2_init fV
.even
_timer2_init::
.dbline -1
.dbline 5
; #include<iom16v.h>
; #include<macros.h>
;
; void timer2_init(void)
; {
.dbline 6
; TCCR2 = (1<<WGM21)|(1<<WGM20)|(1<<COM21)|(1<<COM20)|(1<<CS20);
ldi R24,121
out 0x25,R24
.dbline 12
; /*
; WGM21=1; WGM20=1; --> fast PWM modle
; COM21=1; COM20=0; --> 比较匹配时set OC2 pin
; CS20=1; --> timer2 source 不经过任何分频,直接为Clk,使得PWM可以工作得足够快
; */
; TCNT2 = 0x00; //设置TC2计数寄存器初值
clr R2
out 0x24,R2
.dbline 13
; OCR2 = 0xfa; //输出比较寄存器初值,设置该值可用于调节占空比
ldi R24,250
out 0x23,R24
.dbline -2
.dbline 14
; }
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
.even
_main::
.dbline -1
.dbline 17
;
; void main(void)
; {
.dbline 18
; DDRD |= 0b10000000; //为允许PWM工作,需设置PD7为输出
sbi 0x11,7
.dbline 19
; timer2_init();
xcall _timer2_init
.dbline 20
; SEI();
sei
L3:
.dbline 21
L4:
.dbline 21
xjmp L3
X0:
.dbline -2
.dbline 22
; while(1);
; }
L2:
.dbline 0 ; func end
ret
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -