PTR2000無線收發(fā)C語言程序
//單片機(jī)端發(fā)送數(shù)據(jù)函數(shù)
voidSend(void)
{
ucharxdataj =0;
ucharxdatalen =0;
ucharxdataCheckSum=0;
t_buf[0]=0x24;//起始位
t_buf[1]=0x07;//7個(gè)數(shù)據(jù)字節(jié)
len=t_buf[1];
CheckSum=CheckSum+len;
for (j=0;j++;j
t_buf[j+2]=Data[j];
CheckSum=CheckSum+t_buf[j+2];
}
t_buf[9]=CheckSum;//校驗(yàn)和字節(jié)
t_buf[10]=0x2A;//停止位
for (j=0;j++;j<11)
{
TI=0;
SBUF=t_buf[j];
while(TI==0);
TI=0;
}
}
//通知PC機(jī)端發(fā)送結(jié)束函數(shù)
voidSendOver(void)
{
TI=0;
SBUF=0x24;
while(TI==0);
TI=0;
SBUF=0x01;
while(TI==0);
TI=0;
SBUF=SEND_OVER;//通知PC機(jī)端“發(fā)送結(jié)束”
while(TI==0);
TI=0;
SBUF=0x99;//校驗(yàn)字節(jié)
while(TI==0);
TI=0;
SBUF=0x2A;
while(TI==0);
TI=0;
}
voidmain(void)
{
ClearT_buf();
ClearR_buf();
TXEN=0;//初始為接收狀態(tài)
PWR=1;//正常工作模式
CS=0;//選擇通道0
EA=0;
//11.0592MHz,9600波特率,工作方式1,8數(shù)據(jù)位,1停止位,無奇偶校驗(yàn)
TMOD=0x21;
SCON=0x50;//串行口工作方式1,REN=1
PCON=0x00;//SMOD=0
TL1=0xfd;
TH1=0xfd;
TR1=1;//定時(shí)器1開始計(jì)時(shí)
PT0=1;//定時(shí)器0高優(yōu)先級(jí)
TH0=-5000/256;//5ms
TL0=-5000%6;
IE=0x90;//EA=1,ES=1
while(1)
{
if (Flag_RSend)//“請(qǐng)求發(fā)送”指令
{
TXEN=1;//改變?yōu)榘l(fā)射狀態(tài)
Delay();//延時(shí)5ms
GetData();//采集數(shù)據(jù)
Send();//發(fā)送
Flag_RSend=0;
SendOver();//通知PC機(jī)發(fā)送結(jié)束
TXEN=0;//重設(shè)為接收狀態(tài)
}
elseif (Flag_ReSend)// “請(qǐng)求重發(fā)”指令
{
TXEN=1;//改變?yōu)榘l(fā)射狀態(tài)
Delay();//延時(shí)5ms
Send();//重發(fā)
Flag_ReSend=0;
SendOver();//通知PC機(jī)發(fā)送結(jié)束
TXEN=0;// 設(shè)為接收狀態(tài)
}
}
}本文引用地址:http://m.butianyuan.cn/article/201611/322549.htm
下面是原理圖:
評(píng)論