利用定时器。
uint PwmCnt = 0;
sbit PWN_OUT = P1^1;//可改动
uint PwmD = 50;//占空比 可调
uint PwmF = 500;//频率 可调 10 = 1HZ 500 =50HZ
uint PwmCnt = 0;//占空比计数值
uint FreCnt = 0;//频率分频值
void T0 interrupt 1
{
.....//赋值TO计数值 50us
if(++FreCnt>= (1000/PwmF))//通过改变PwmF 达到分频效果 改变输出频率
{
if(++PwmCnt>=100) PwmCnt=0; //再次分频100 占空比精度需要这样
if(PwmCnt{
PWN_OUT = 1;
}
else
{
PWN_OUT =0;
}
}
}
//思想是这样 我也没测过