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