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