jrcsh作者
15年2个月前IP:未同步
332725
28楼
如果一个单片机,只用了它的内部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
评论
文号 / 332725

千古风流
名片发私信
学术分 4
总主题 494 帖总回复 6744 楼拥有证书:学者 笔友
注册于 2009/01/02 22:19:00最后登录 2018/01/10 01:36:08
主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:0

个人简介

.

笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的