| STC89单片机 定时器做PWM程序 http://www.51hei.com/bbs/dpj-200820-1.html |
|
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的最大值。以及改定时器初值。 四、本代码定时器是自动重装模式。 |