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