WHTwht1998
获得 4 次赞
帮助过2人
100KHz还是100Hz100KHz的话要10us就要进入一次中断,我给你一个51单片机的程序,占空比是50%的#include <reg52.h>unsigned char PWM_COUNT; //计数unsigned char PWM_VLAUE; //占空比比对值sbit LED = P1^0;void Timer0_init(){ TMOD=0x02; //模式设置,00010000,定时器0,工作于模式2(M1=1,M0=0) TH0=0xf6; //定时器溢出值设置,每隔10us发起一次中断。 TL0=0Xf6; TR0=1; //定时器0开始计时 ET0=1; //开定时器0中断 EA=1; //开总中断}void Time0Inretrupt() interrupt 1{ PWM_COUNT++; if(PWM_COUNT == PWM_VLAUE) //判断是否到了点亮LED的时候 LED = 0; //点亮LED if(PWM_COUNT == 10) //当前周期结束 { LED = 1; //熄灭LED PWM_COUNT = 1; //重新计时 } }void main(){ PWM_COUNT = 1; PWM_VLAUE = 5; //总量为10,占空比为50%的话,令PWM_VLAUE等于5 LED = 1; //默认LED熄灭 Timer0_init() //定时器0初始化 while(1);}