谁能帮我写个单片机分频程序?

来源:百度知道 编辑:UC知道 时间:2024/07/09 00:32:47
谁能帮忙写个单片机分频的程序,单片机用52吧,晶振是12MHz的,我想从另一个IO口输出一个38KHz的频率,IO口随便取一个。谁能帮我把这个源程序写一下!!!最好是不在外加其它设备了!!!
高分等候!
呵呵,标题错了,不是分频 是延时!都一样了。38KHZ频率高低电平各占一半!38K=26uS。

for(i=0;i<1;i++){
for(j=0;j<124;j++)
这个延时多长时间?(51单片机的.12MHz的!)
延时多长时间这个i和j是怎么算的??

要C写的,最好不要是汇编的!!!

呵呵,38kHz,是不是要搞超声波的项目?这个我搞过。
38kHz,26.3us,单片机延时的精度也就在1us,很不好弄;
无论怎么弄,实际上离谐振还是有偏差的。

后来,选择40kHz的超声波发射接收头,一切都迎刃而解了。

听不懂。羡慕你!

这个延时不精确,大概是:i*j个机器周期,即i*j(us)

#include <reg52.h>

sbit p1_0=P1^0;

void dlms(void)
{
for(i=0;i<27;i++)
{;}
}

void main(void)
{
while(1)
{
p1_0=!p1_0;
}
}

大概这样吧...

#include <reg52.h>
unsigned char i;
void delay()
{
for(i=0;i<2;i++);
}
void main()
{
P1=0xff;
while(1){
P1=~P1;
delay();
}
}
===================================
注:38KHZ频率高低电平各占一半!意思是要高电平持续13微秒,低电平持续13微秒。晕!!这也太快了!!52单片机执行一个指令就要2微秒,效果估计不理想。
===================================
for(i=0;i<1;i++){
for(j=0;j<124;j++)}
这个延时时间为508微秒。(51单片机的.12MHz的!)
===================================
延时多长时间这个i和j是怎么算的??
一个双