第1个回答 推荐于2018-05-07
51要产生500K的方波,一定要把晶振的频率调高。12M的晶振很难用定时器的方式产生500K方波,它的指令频率才1M。可以试下如下方法:
#include <reg51.h>//用单片机产生方波
sbit fangbo=P1.1;
void main(void)
{
while(1)
{
fangbo=~fangbo;
// fangbo=fangbo; //如果输出频率错过500K,可以把这句加上
}
}
第2个回答 2012-09-11
产生500kHz方波,每隔一微秒,取反即可。
使用12MHz的晶振时,一条取反指令CPL P1.0,就正好是一微秒。
这种条件下,什么中断、循环、重新送入初始值等等,什么都没有时间干了。
时间,已经来不及了。
如果使用48MHz的晶振,程序如下:
ORG 0000H
START:
CPL P1.0
NOP
SJMP START
END
这就可以了。一个循环,正好是一微秒。
第3个回答 2018-06-14
用Stc15W系列PWM0输出,主频30M,PCA_PWM_1T,PWM(6)/6位模式