|
楼主 |
发表于 2009-6-17 21:24:03
|
显示全部楼层
JJY的发射程序来了,只要在输出口接个三极管放大,集电极串个电阻后接上一个大电感就可以发射了!!!
C语言源代码,没有位操作,支持C51,AVR,NEC
由于是使用指令延时,实际使用时需要根据使用的晶体调整延时参数
上代码文件:
点击此处下载 ourdev_454121.rar(文件大小:861字节) (原文件名:RCC_send.rar)
(原文件名:JJY发送码.JPG)
点击此处下载 ourdev_454123.xls(文件大小:12K) (原文件名:JJY发送码.xls)
/*==========================================================
RCC发送----日本JJY模式
==========================================================*/
#define RCC_OUT_1() PA|=1; //输出高电平的语句
#define RCC_OUT_0() PA&=0xfe; //输出低电平的语句
//等待发射RCC的时间码,固定2008-08-08 08:08 星期五;前60位有效,低4位无效
//前8B是时间代码,后8B是发射的位屏蔽码
//P码:0,9,19,29,39,49,59
//1=500MS,0=200MS,P=800MS
const unsigned char RCC_CODE_TAB[8+8]=
{
0x04,0x01,0x02,0x10,0x40,0x04,0x28,0x00,
0x80,0x40,0x20,0x10,0x8,0x4,0x2,0x1,
};
unsigned char RCC_send_counter;
unsigned char RCC_bit;
unsigned char RCC_byte;
void JJY_60KHz_out_10ms(unsigned char time) //输出60KHz的调制信号,时间为:time*10MS
{
unsigned char i,j,k;
while(time>0)
{
time--;
for(i=0;i<100;i++) //按实际MCU和时钟,调节i,j的时间,使之延时为10MS
{
for(j=0;j<100;j++)
{
RCC_OUT_1(); //按实际MCU和时钟,调节k和时间,输出60KHz
for(k=0;k<10;k++);
RCC_OUT_0();
for(k=0;k<10;k++);
}
}
}
}
void delay_10ms(unsigned char time)
{
unsigned char i,j,k;
while(time>0)
{
time--;
for(i=0;i<100;i++)//按实际MCU和时钟调节i,j,k,指令延时
{
for(j=0;j<100;j++)
{
for(k=0;k<20;k++);
}
}
}
}
void main(void)
{
while(1)
{
RCC_bit = 0;
RCC_byte = 0;
for(RCC_send_counter=0;RCC_send_counter<60;RCC_send_counter++)
{
if((RCC_send_counter==0)||(RCC_send_counter==9)||(RCC_send_counter==19)
||(RCC_send_counter==29)||(RCC_send_counter==39)||(RCC_send_counter==49)
||(RCC_send_counter==59))
{
JJY_60KHz_out_10ms(80);
delay_10ms(20);
}
else if(RCC_CODE_TAB[RCC_byte]&RCC_CODE_TAB[RCC_bit+8])
{
JJY_60KHz_out_10ms(50);
delay_10ms(50);
}
else
{
JJY_60KHz_out_10ms(20);
delay_10ms(80);
}
if(++RCC_bit>=8){RCC_bit=0;RCC_byte++;}
}
}
} |
|