sh79f166a pwm模块初始化及应用

2014-11-23 21:34:15 · 作者: · 浏览: 12
#ifndef _SH79F_PWM_H_
#define _SH79F_PWM_H_

//#include "sh79f_pwm.h"

#define		PWM_DIVI 	PWM_DIVI2	//12M/2	= 6M
#define		PWM_DIVI2	(0<<0) 
#define		PWM_DIVI4	(1<<0) 
#define		PWM_DIVI8	(2<<0) 
#define		PWM_DIVI16	(3<<0) 

//PWM频率值
#define		V_PWMCYC		1500   //6M/1500=4K
//PWM点空比 50%
#define		V_PWM			1500/2 //

#define		PWM_ENB		PWMEN1 &= ~0x01 ; //PWM 输出到IO
#define		PWM_DIS		PWMEN1 |= 0x01 ; //PWM 禁止输出到IO

//==============================
extern void Init_Pwm(void);


#endif


//文件sh79f_pwm.c

#include "global.h"
#include "sh79f_pwm.h"

//**************************************
// 函数名称:Init_Pwm
// 函数功能:PWM初始化
// 入口参数:无 
// 出口参数:无
//***************************************
void Init_Pwm(void)
{
	PWMLO = 0x55;  //允许修改其它PWM寄存器的值

	PWM0C = 0x00|PWM_DIVI ;	//12M/2=6M
	PWM0PL = (uint8)(V_PWMCYC & 0X00FF) ; //PWM频率设置
	PWM0PH = (uint8)(V_PWMCYC>
>8) ; PWM0DL = (uint8)(V_PWM & 0X00FF) ; //PWM占空比设置 PWM0DH = (uint8)(V_PWM>>8) ; PWM0DT = 0x00 ; //死区时间 PWMEN = 0x01 ; //PWM模块使能 PWM0使能输出 PWMEN1 = 0x01 ; //PWM 不输出到IO PWMLO = 0xAA ; //禁止修改其它PWM寄存器的值 } //应用实例 void main(void) { //初始化PWM模块 频率为4K 占空比为50% Init_Pwm() ; while(1) { PWM_ENB ; //PWM输出使能 Delay() ; PWM_DIS ; //PWM输出禁止 Delay() ; } }