如何使用单片机产生38KHz的载波,求原理及C语言简单代码,晶振11.0592,请高手指点。

如题所述

f=38KHz 那么周期T约等于26uS,如果这个载波是方波的话,那么输出高电平13uS,另外13uS输出低电平。
你的晶振是11.0592MHz,那么机器周期是近似为1uS。
所以隔13uS,对输出口取反即可。
#include<reg51.h>
#include<intrins.h> //用于_nop_();指令
void main{
while(1){
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); //13个空指令,每个空指令耗费1uS
P0^1=~P0^1;
}
}追问

我了解你说的原理了,可以的话我想知道怎么用定时器来实现?

追答

使用定时器0
void main{
TMOD=0X01;//工作于模式1
TH0=0XFF;
TL0=0XF4;//定时13uS
TR0=1;//定时器开始
while(1){};
}
void delay(void) interrupt 1 using 1
{
TH0=0XFF;//重装定时值
TL0=0XF4;
P0^1=~P0^1;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-04-18
〃《问。道》送上世界仧朂好旳礼物.?﹎`ˊ

如何使用单片机产生38KHz的载波,求原理及C语言简单代码,晶振11.0592...
你的晶振是11.0592MHz,那么机器周期是近似为1uS。所以隔13uS,对输出口取反即可。include<reg51.h> include<intrins.h> \/\/用于_nop_();指令 void main{ while(1){ _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_...

晶振为11.0592的at89c51单片机用C语言能实现1微妙的延时吗?怎么写?要...
你用的是11.0592的单片机,这就不能达到要求,而且你用C语言编程还要带形参,所以根本不可能实现1微妙延时,你可以用12M的晶振,然后用一个_NOP_()指令来延时1微妙。

51单片机程序定时器怎么这么不准确啊,求高手指点!
C:0x000F 758CFD MOV TH0(0x8C),#0xFD 9: TL0=(65536-516)%256;C:0x0012 758AFC MOV TL0(0x8A),#0xFC 看出差别了吧?使用-780时给T0赋值0xFDF4,使用第三种方式赋值为0xFDFC,这两个数字相近,所以结果基本正确。但是使用-516时赋值的0xFEFC,这差别就大了,结果...

相似回答