求代码!怎么用51单片机 操控SYN115和 SYN480无线通信?

不懂SYN的时序 和 一帧数据有多少 

求大佬解答

/********************************************
现定义如下:

下降沿:1ms的高电平,随后500us的低电平。
起始位:4ms的高电平,随后4ms的低电平。
数据1: 2ms的高电平,随后500us的低电平。
数据0: 1ms的高电平,随后500us的低电平。
结束位:4ms的低电平。
**********************************************/
//本程序已经过调试硬件测试可用(STC15F104W),在SYN480的信号输出脚要接信号放大电路
//发射模块c程序

#include<reg52.h>  
#define MCU_FREQ            12000000	//设置晶振频率
#define uchar unsigned char 
sfr P3M0=0xb2;

sbit key0=P3^0;  

sbit key1=P3^1; 


sbit TX=P3^2; //senddata wire

uchar m; 

void v0(); //1MS高电平500us低电平	数据0 

void v1(); // 2MS高电平500us低电平		 数据1

void v2(); // 4MS高电平4ms低电平	   起始位

void v3();  // 1MS高电平500us低电平 	  下降沿


void delay_315(); 

void main() 
{ 
	uchar i;
	bit dong=0;  //开定时器0中断
	TMOD=0X01; 
	P3M0=0x08;   //open 89 INT0
	TH0=(65536-100)/256; 
	TL0=(65536-100)%256; 
	EA=1; 
	ET0=1; 
	TR0=1; 
	TX=0; 
	while(1)  
	{ 
		if(key0==0)     //发送指令0
		{ 
			delay_315(); 
			while(key0==0)
			{
				v3();
				v2();
				v0();   //senddata 0
				v0();   //senddata 0
				v0();
				m=0;
				while(m<40);  //4ms低电平
			} 
			dong=1; 
		} 

		if(key1==0)  //发送指令1 
		{ 
			delay_315(); 
			while(key1==0)
			{
				v3();
				v2();
				v0();
				v0();
				v1();
				m=0;
				while(m<40);
			} 
			dong=1; 
		} 
/*
if(key2==0) 
{ 
delay_315(); 
while(key2==0){v3();v2();v0();v1();v0();m=0;while(m<40);} 
dong=1; 
} 

if(key3==0) 
{ 
delay_315(); 
while(key3==0){v3();v2();v0();v1();v1();m=0;while(m<40);} 
dong=1; 
} 


if(dong==1) 
{ 
dong=0; 
for(i=0;i<5;i++){v3();v2();v1();v0();v0();m=0;while(m<40);} 
}
*/ 
	} 
}

void timer0() interrupt 1 
{ 
	TH0=(65536-100)/256;
	TL0=(65536-100)%256; 
	m++; 
	TF0=0; 
} 

void v0()  // 1MS高电平500us低电平	数据0 
{ 
	m=0; 
	while(m<10) 
	TX=1; 
	m=0; 
	while(m<5) 
	TX=0; 
} 

void v1()   // 2MS高电平500us低电平		 数据1
{ 
	m=0; 
	while(m<20) 
	TX=1; 
	m=0; 
	while(m<5) 
	TX=0; 
} 



void v2()  // 4MS高电平4ms低电平	   起始位
{ 
	m=0; 
	while(m<40) 
	TX=1; 
	m=0; 
	while(m<40) 
	TX=0; 
} 
void v3()  // 1MS高电平500us低电平 	  下降沿	 

{ 
	m=0; 
	while(m<10) 
	TX=1; 
	m=0; 
	while(m<5) 
	TX=0; 
} 

void delay_315() 
{ 
	uchar i,j; 
	for(i=0;i<10;i++) 
	for(j=0;j<110;j++); 
} 

这是发送模块的代码 


/*****************************************
本程序适用于STC15F/L104W
****************************************/

/*******************************************
现定义如下:

下降沿:1ms的高电平,随后500us的低电平。
起始位:4ms的高电平,随后4ms的低电平。
数据1:2ms的高电平,随后500us的低电平。
数据0:1ms的高电平,随后500us的低电平。
结束位:4ms的低电平。
******************************************/


//接收程序

#include"reg52.h"  
#define MCU_FREQ                          12000000	//设置晶振频率
#define uchar unsigned char 
sfr P3M0=0xb2;
sfr P3M1=0xb1;
sbit RX=P3^2; 

sbit red0=P3^0; 

sbit red1=P3^1; 

uchar m; 
bit n;  
void main() 
{ 
uchar a,b,c,p,x,y;    //定义存取的数据
TMOD=0X01; 
P3M1=0x04;
TH0=(65536-100)/256; //开定时器0 
TL0=(65536-100)%256; 
EA=1; 
ET0=1; 
TR0=1; 
EX0=1; 
IT0=1; 
//P0=0Xff; 
//P1=0x00;
red0=1;
red1=1;
p=5; 
x=0;  
while(1) 
{ 
if(n==1) 
{ 
while(RX==0); //读取协议下降沿
m=0; 
EX0=0; 
while(RX==1); 
if(m>35&&m<45) //读取协议起始位高电平
{
m=0; 
while(RX==0); 
if(m>35&&m<45)  //读取协议起始位低电平
{
m=0;

while(RX==1);   //读取数据1 
if(m>5&&m<15) a=0; 
if(m>15&&m<25)a=4; 
while(RX==0); 
m=0; 

while(RX==1);   //读取数据2  
if(m>5&&m<15) b=0; 
if(m>15&&m<25)b=2; 
while(RX==0); 
m=0;  

while(RX==1); //读取数据3  
if(m>5&&m<15) c=0; 
if(m>15&&m<25)c=1; 
while(RX==0); 
m=0;  
p=a+b+c;  
x++;  
if(x==1) y=p; 
if(x==2) //连续收到两次数据才进入匹配
{ 
x=0; 
if(y==p) 
{ 
switch(p) 

{  
case 0:red0=0;red1=1;
       break;
case 1:red0=1;red1=0;
       break;
case 2:red0=1;red1=1; 
       break;
case 3:red0=1;red1=1;  
       break;
case 4:red0=1;red1=1;
       break;
       }
      }
     }
    }
   }
EX0=1;  }
  
 }
}

void INT_0() interrupt 0

{                     
  n=1; 
} 
void timer0() interrupt 1 
{ 
TH0=(65536-100)/256; 
TL0=(65536-100)%256; 
m++; 
TF0=0; 
} 

这是接收 代码  但是 我不知道哪里搞错了 现象出不了来   我想用51单片机实现无线模块的 发送接收的  求大佬看一下