⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 oc0pwm.s

📁 ATmega16应用例子
💻 S
字号:
	.module OC0PWM.C
	.area text(rom, con, rel)
	.dbfile E:\WaveShare\微雪电子CD1\开发板试验器\SD系列\M16SD\试验教程\内核及主板相关试验\内核-PWM\OC0PWM\OC0PWM.C
	.dbfunc e timer0_init _timer0_init fV
	.even
_timer0_init::
	.dbline -1
	.dbline 49
; /*********************************************************************
; 	微 雪 电 子   WaveShare   http://www.waveShare.net            	
; 		                                                        
; 目    的:   建立使用OC0做PWM的示例程序
; 	
; 目标系统:   基于AVR单片机
; 		                                                                
; 应用软件:   ICCAVR
; 		                                                                
; 版    本:   Version 1.0                                                          
; 		                                                                
; 圆版时间:   2005-06-25
; 	
; 开发人员:   SEE
; 
; 说	 明:   若用于商业用途,请保留此段文字或注明代码来源
; 	
; 	深 圳 微 雪 电 子 保 留 所 有 的 版 权     
; *********************************************************************/
; 
; /*01010101010101010101010101010101010101010101010101010101010101010101
; ----------------------------------------------------------------------
; 版本更新记录:
; 		版    本:   Version 1.1
; 		圆版时间:   2005-03-25
; 
; ----------------------------------------------------------------------
; 接入模块: 
; 接口说明: 
; ----------------------------------------------------------------------
; 注意事项:
; 		
; ----------------------------------------------------------------------
; 10101010101010101010101010101010101010101010101010101010101010101010*/
; 
; #include <iom16v.h> 
; #include <macros.h> 
; 
; #define OC0_OUT_EN	DDRB |= 0b00001000
; /*--------------------------------------------------------------------
; 函数名称:
; 函数功能:
; 注意事项:
; 提示说明:
; 输    入:
; 返    回:
; --------------------------------------------------------------------*/
; void timer0_init(void) 
; { 
	.dbline 50
; 	TCCR0 = (1<<WGM01)|(1<<WGM00)|(1<<COM01)|(1<<COM00)|(1<<CS00);	
	ldi R24,121
	out 0x33,R24
	.dbline 56
; /*
; 	WGM01=1; WGM00=1; --> fast PWM modle
; 	COM01=1; COM00=0; --> 比较匹配时set OC0 pin
; 	CS00=1;  --> timer0 source 不经过任何分频,直接为Clk,使得PWM可以工作得足够快
; */
; 	TCNT0 = 0x00;			//设置TC0计数寄存器初值 
	clr R2
	out 0x32,R2
	.dbline 57
; 	OCR0  = 0xe0;			//输出比较寄存器初值,设置该值可用于调节占空比
	ldi R24,224
	out 0x3c,R24
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
	.even
_main::
	.dbline -1
	.dbline 68
; } 
; /*--------------------------------------------------------------------
; 函数名称:
; 函数功能:
; 注意事项:
; 提示说明:
; 输    入:
; 返    回:
; --------------------------------------------------------------------*/
; void main(void) 
; {
	.dbline 69
; 	OC0_OUT_EN;				//为允许PWM工作,需设置PB3为输出
	sbi 0x17,3
	.dbline 70
; 	timer0_init(); 
	xcall _timer0_init
	.dbline 71
; 	SEI(); 
	sei
L3:
	.dbline 72
L4:
	.dbline 72
	xjmp L3
X0:
	.dbline -2
L2:
	.dbline 0 ; func end
	ret
	.dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -