
如何使用单片机产生38KHz的载波,求原理及C语言简单代码,晶振11.0592,请高手指点。
2个回答
展开全部
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;
}
}
你的晶振是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;
}

2021-01-14 广告
单片机(Microcontrolers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询