这个你先要根据晶振等来确定最小计时周期时间(就是系统运行时基本时钟),再确定计数器最小时间T0,以此为标准开展后续计算。
对具体需要输出的频率Y脉冲来说,其对应周期时间为Yt,则一个脉冲中高电平时间为Xt,其中Yt>Xt则低电平时间为Yt-Xt >0。如果Xt=Yt/2 ,则高低电平是相等的,如果Xt可以调整,其实就是一种PWM。
Yt=1/Y
根据 Yc=T0/Yt 就是单个周期计数器数量,则Xt对应的计数是Xc,有Yc>Xc。
这里Xc其实是可以调整的,即PWM。
因为51系统计数最大值为65535(16bit非负整数最大值),所以在计算中需要保证最大计数也不能超过这个值,否则需要引入其他处理,比如多级计数(相当于分频处理)——例如真实时间计数器计数2再触发上级计数器增加1。
上面的计算公式是通用的,只是对个别需要频率如计算出可能值过大,需要运用多级计数来调整。
此外高低电平的计数理论上是可调的,需要你确定根据需要确定是否可调,或者具体的比例。