📄 oc0pwm.lis
字号:
.module OC0PWM.C
.area text(rom, con, rel)
0000 .dbfile E:\WaveShare\微雪电子CD1\开发板试验器\SD系列\M16SD\试验教程\内核及主板相关试验\内核-PWM\OC0PWM\OC0PWM.C
0000 .dbfunc e timer0_init _timer0_init fV
.even
0000 _timer0_init::
0000 .dbline -1
0000 .dbline 49
0000 ; /*********************************************************************
0000 ; 微 雪 电 子 WaveShare http://www.waveShare.net
0000 ;
0000 ; 目 的: 建立使用OC0做PWM的示例程序
0000 ;
0000 ; 目标系统: 基于AVR单片机
0000 ;
0000 ; 应用软件: ICCAVR
0000 ;
0000 ; 版 本: Version 1.0
0000 ;
0000 ; 圆版时间: 2005-06-25
0000 ;
0000 ; 开发人员: SEE
0000 ;
0000 ; 说 明: 若用于商业用途,请保留此段文字或注明代码来源
0000 ;
0000 ; 深 圳 微 雪 电 子 保 留 所 有 的 版 权
0000 ; *********************************************************************/
0000 ;
0000 ; /*01010101010101010101010101010101010101010101010101010101010101010101
0000 ; ----------------------------------------------------------------------
0000 ; 版本更新记录:
0000 ; 版 本: Version 1.1
0000 ; 圆版时间: 2005-03-25
0000 ;
0000 ; ----------------------------------------------------------------------
0000 ; 接入模块:
0000 ; 接口说明:
0000 ; ----------------------------------------------------------------------
0000 ; 注意事项:
0000 ;
0000 ; ----------------------------------------------------------------------
0000 ; 10101010101010101010101010101010101010101010101010101010101010101010*/
0000 ;
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; #define OC0_OUT_EN DDRB |= 0b00001000
0000 ; /*--------------------------------------------------------------------
0000 ; 函数名称:
0000 ; 函数功能:
0000 ; 注意事项:
0000 ; 提示说明:
0000 ; 输 入:
0000 ; 返 回:
0000 ; --------------------------------------------------------------------*/
0000 ; void timer0_init(void)
0000 ; {
0000 .dbline 50
0000 ; TCCR0 = (1<<WGM01)|(1<<WGM00)|(1<<COM01)|(1<<COM00)|(1<<CS00);
0000 89E7 ldi R24,121
0002 83BF out 0x33,R24
0004 .dbline 56
0004 ; /*
0004 ; WGM01=1; WGM00=1; --> fast PWM modle
0004 ; COM01=1; COM00=0; --> 比较匹配时set OC0 pin
0004 ; CS00=1; --> timer0 source 不经过任何分频,直接为Clk,使得PWM可以工作得足够快
0004 ; */
0004 ; TCNT0 = 0x00; //设置TC0计数寄存器初值
0004 2224 clr R2
0006 22BE out 0x32,R2
0008 .dbline 57
0008 ; OCR0 = 0xe0; //输出比较寄存器初值,设置该值可用于调节占空比
0008 80EE ldi R24,224
000A 8CBF out 0x3c,R24
000C .dbline -2
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 68
000E ; }
000E ; /*--------------------------------------------------------------------
000E ; 函数名称:
000E ; 函数功能:
000E ; 注意事项:
000E ; 提示说明:
000E ; 输 入:
000E ; 返 回:
000E ; --------------------------------------------------------------------*/
000E ; void main(void)
000E ; {
000E .dbline 69
000E ; OC0_OUT_EN; //为允许PWM工作,需设置PB3为输出
000E BB9A sbi 0x17,3
0010 .dbline 70
0010 ; timer0_init();
0010 F7DF xcall _timer0_init
0012 .dbline 71
0012 ; SEI();
0012 7894 sei
0014 L3:
0014 .dbline 72
0014 L4:
0014 .dbline 72
0014 FFCF xjmp L3
0016 X0:
0016 .dbline -2
0016 L2:
0016 .dbline 0 ; func end
0016 0895 ret
0018 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -