#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() ;
}
}
|