新闻中心

EEPW首页>嵌入式系统>设计应用> PTR2000无线收发C语言程序

PTR2000无线收发C语言程序

作者: 时间:2016-11-27 来源:网络 收藏

//单片机端发送数据函数
voidSend(void)
{
ucharxdataj =0;
ucharxdatalen =0;
ucharxdataCheckSum=0;
t_buf[0]=0x24;//起始位
t_buf[1]=0x07;//7个数据字节
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;//校验和字节
t_buf[10]=0x2A;//停止位
for (j=0;j++;j<11)
{
TI=0;
SBUF=t_buf[j];
while(TI==0);
TI=0;
}
}
//通知PC机端发送结束函数
voidSendOver(void)
{
TI=0;
SBUF=0x24;
while(TI==0);
TI=0;
SBUF=0x01;
while(TI==0);
TI=0;
SBUF=SEND_OVER;//通知PC机端“发送结束”
while(TI==0);
TI=0;
SBUF=0x99;//校验字节
while(TI==0);
TI=0;
SBUF=0x2A;
while(TI==0);
TI=0;
}
voidmain(void)
{
ClearT_buf();
ClearR_buf();
TXEN=0;//初始为接收状态
PWR=1;//正常工作模式
CS=0;//选择通道0
EA=0;
//11.0592MHz,9600波特率,工作方式1,8数据位,1停止位,无奇偶校验
TMOD=0x21;
SCON=0x50;//串行口工作方式1,REN=1
PCON=0x00;//SMOD=0
TL1=0xfd;
TH1=0xfd;
TR1=1;//定时器1开始计时
PT0=1;//定时器0高优先级
TH0=-5000/256;//5ms
TL0=-5000%6;
IE=0x90;//EA=1,ES=1
while(1)
{
if (Flag_RSend)//“请求发送”指令
{
TXEN=1;//改变为发射状态
Delay();//延时5ms
GetData();//采集数据
Send();//发送
Flag_RSend=0;
SendOver();//通知PC机发送结束
TXEN=0;//重设为接收状态
}
elseif (Flag_ReSend)// “请求重发”指令
{
TXEN=1;//改变为发射状态
Delay();//延时5ms
Send();//重发
Flag_ReSend=0;
SendOver();//通知PC机发送结束
TXEN=0;// 设为接收状态
}
}
}

本文引用地址://m.amcfsurvey.com/article/201611/322549.htm

下面是原理图:


上一页 1 2 下一页

评论


技术专区

关闭