如果一个单片机,只用了它的内部RC振荡器,这也太屈才了吧。
[s:178]
功率是比较小,0.5W 都很勉强。
使用单片机主要是方便体积搞小, 载波控制也方便 直接在MCU内写程序就能生成。费事还去搞一个调制电路出来[s:230]
/-------------------------------------代码------------------------/
/*
实现方法
主程序 就只进行 控制IO的反转,并且用汇编来保证指令时间受控制,(IO翻转:C语言 40M下只达到了2.5M ,汇编为4.0xxM)
使用定时器作为载波控制,
定时器的定时时间为:载波(3.5M)输出时间,定时器的中断内放入延时代码为作关闭3.5M输出的时间。
(未写) 在MCU上接出3~4个IO 作为调制信号选择,在关闭输出延时上读IO 选定调制频率。
*/
#include <REG51.H>
#include <intrins.h>
#include <absacc.h>
//#define uint unsigned int
#define uint unsigned long int
#define uchar unsigned char
sfr CLK_DIV=0x97;
sfr P3M0=0xB2;
sfr P3M1=0xB1;
//sbit k1=P3^0;
//sbit k2=P3^1;
sbit k1=P3^2;
//sbit k2=P3^3;
//sbit k3=P3^4;
//sbit k4=P3^5;
uint aaa,bbb,ccc,ddd,eee;
//uchar conn,ttt,ttt1,rate;
void Timer0Interrupt(void) interrupt 1
{
k1=0; //保证IO为低电平/保护功率三极管
TR0=0;//停止时定器
aaa=0;
for(bbb=0;bbb<20000;bbb++)// 停震延时时间
{
aaa++;
}
aaa=0;
TH0=(65535-11000)/256; //输出3.544M 时间
TL0=(65535-11000)%256;
TR0=1;
}
void main()
{
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
ET0=1;
TR0=1;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
aaa=1;
bbb=1;
P3M0=0xFF;
P3M1=0x00;
while(1)
{
#pragma asm//用汇编来保证结果时间受控制
SETB P3.2
CLR P3.2
#pragma endasm
} //w1
}//ma