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

📄 m16pwm.s

📁 AVR程序
💻 S
字号:
	.module M16PWM.c
	.area text(rom, con, rel)
	.dbfile F:\job\M16学习板\PWM(实验九)\M16PWM.c
	.dbfunc e Timer0Init _Timer0Init fV
	.even
_Timer0Init::
	.dbline -1
	.dbline 24
; /*******************************************************************
;                       实验九
; 实验名称: PWM转换实验
; 实验目的: 学习AVR单片机的PWM功能
; 实验现象: 在PB3端口看到波形
; 环	  境: ICCAVR6.31A
; 设 计 者: shinea8868
; 说    明: 部分程序原型源自网络,经本人修改调试可用,请尊重知识产权,如
; 	  	  作商业用途请保留本段文字
; 完成日期: 2007年4月10日
; *******************************************************************/
; #include <iom16v.h> 
; #include <macros.h> 
; 
; #define OC0_OUT_EN	DDRB |= 0b00001000
; 
; /*-----------------------------------------------------------------
; 函数名称: void Timer0Init(void)
; 函数功能: 
; 参    数: 
; 返 回 值: 无
; -----------------------------------------------------------------*/
; void Timer0Init(void) 
; { 
	.dbline 25
; 	TCCR0 = (1<<WGM01)|(1<<WGM00)|(1<<COM01)|(1<<COM00)|(1<<CS00);	
	ldi R24,121
	out 0x33,R24
	.dbline 31
; /*
; 	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 32
; 	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 41
; } 
; /*-----------------------------------------------------------------
; 函数名称: 
; 函数功能: 
; 参    数: 
; 返 回 值: 无
; -----------------------------------------------------------------*/
; void main(void) 
; {
	.dbline 42
; 	OC0_OUT_EN;				//为允许PWM工作,需设置PB3为输出
	sbi 0x17,3
	.dbline 43
; 	Timer0Init(); 
	xcall _Timer0Init
	.dbline 44
; 	SEI(); 
	sei
L3:
	.dbline 45
L4:
	.dbline 45
	xjmp L3
X0:
	.dbline -2
L2:
	.dbline 0 ; func end
	ret
	.dbend

⌨️ 快捷键说明

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