sbit PWM_OUT=P2^1;
u8 idata RGB_PWM_Write_Byte[3]=0;
//****************************祁緒電子 2020年5月***
// 定時器0初始化 晶振11059200,12T,輸出50Hz的PWM,占空比0~255
// 定時器初值為:256-(11059200÷12÷50Hz÷256) = 184 = 0xB8
//****************************祁緒電子 2020年5月***
void PWM_Init(void)
{
TMOD &= 0xF0; //配置定時器工作模式
TMOD |= 0x02; //配置定時器工作模式 8位自動重裝模式
TL0 = 0xB8;; //定時器初值
TH0 = 0xB8; //定時器重裝初值
TR0 = 1; //啟動定時器0
ET0=1; //允許定時器0申請中斷
EA=1; //中斷總閘閉合
}
//****************************祁緒電子 2020年5月***
//定時器0的CPU處理函數,位置任意寫都行
//****************************祁緒電子 2020年5月***
void PWM_Display_timer0() interrupt 1
{
static u8 pwm_t=0; //局部變量,不丟失數據
if(pwm_t<RGB_PWM_Write_Byte[0])
{
PWM_OUT=1;
}
else PWM_OUT=0;
pwm_t++;
}
一、主函數初始化 PWM_Init(void);
二、對RGB_PWM_Write_Byte[0];賦值0~255 即可調節占空比。
三、默認PWM周期是255.如果需要調節周期,可以限制pwm_t的最大值。以及改定時器初值。
四、本代碼定時器是自動重裝模式。 |