51单片机与上位机通讯怎么保证第一次就成功

逍遥轻风 2014-12-10 11:12:26
每次都要在上位机软件界面点好多次51单片机UART才能正确通讯一次,希望各位为小弟解惑,不甚感激!!
代码如下:
void init_uart(void)
{
PCON&=0x7F;
SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收
BRT=0xB8; // TMOD: timer 1, mode 2, 8-bit 重装
AUXR |=0x04; // TH1: 重装值 9600 波特率 晶振 11.0592MHz
AUXR |=0x01; // TR1: timer 1 打开
AUXR |=0x10;
//TR1=1;
EA = 1; //打开总中断
ES = 1;
//PSH=1;
PS=1; //优先级最高
}

void UART_Interrupt_Recevie(void) interrupt 4 //串行中断服务程序
{
if( RI == 1)
{

receive[count++] = SBUF;
C1_temp=receive[0];
D1_temp=receive[1];
E1_temp=receive[2];
F1_temp=receive[3];
G1_temp=receive[4];
H1_temp=receive[5];
I1_temp=receive[6];
J1_temp=receive[7];

if (C1_temp==0x2A&J1_temp==0x23)
{
C1_in=C1_temp;
D1_in=D1_temp;
E1_in=E1_temp;
F1_in=F1_temp;
G1_in=G1_temp;
H1_in=H1_temp;
I1_in=I1_temp;
J1_in=J1_temp;
Speed=(F1_in-0x30)*100+(H1_in-0x30)*10+(I1_in-0x30);
times=65536-75000/Speed;
if (times>64786)
{
T1MS1=40536;
D1=0;
}
else D1=1;
/***判断正反转***/
if ((D1_temp==0x6D)&(E1_temp==0x7A)) //正转
{
E1=1;
G1=1;
}
else if ((D1_temp==0x6D)&(E1_temp==0x66)) //反转
{
E1=0;
G1=1;
}
// else G1=1;
}
/********判断是否停止****/
else if(C1_temp==0x2A&D1_temp==0x6D&E1_temp==0x73&F1_temp==0x32&G1_temp==0x23) //*ms2#判断是否停止
{
G1=0;

}
}
/****判定是否接收正确******/
if(C1_in==0x2A&D1_in==0x6D&((E1_in)==0x7A||(E1_in)==0x66||(E1_in)==0x73)&F1_in==0x33&G1_in==0x2E&H1_in==0x30&I1_in==0x30&J1_in==0x23)
J1=0;
else
J1=1;
/*
if(D1_in==0x6D)
D1=0;
else
D1=1;
if(((E1_in)==0x7A||(E1_in)==0x66||(E1_in)==0x73))
E1=0;
else
E1=1;
if(F1_in==0x30)
F1=0;
else
F1=1;
if(G1_in==0x2E)
G1=0;
else
G1=1;
if(H1_in==0x39)
H1=0;
else
H1=1;
if(I1_in==0x30)
I1=0;
else
I1=1;
if(J1_in==0x23)
J1=0;
else
J1=1;
*/

if( count > 8 )
{
count=0;
}
RI= 0;

}
...全文
269 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mangoalx 2014-12-11
  • 打赏
  • 举报
回复
难以相信的是你点多次居然能成功一次? 代码太不像样了。尽量参考别人的demo程序吧 你把逻辑 与 运算符 && 写成 & 了
  • 打赏
  • 举报
回复
你点击或多次,失败的时候是否有数据呢?
91program 2014-12-11
  • 打赏
  • 举报
回复
只有一个方法:乞求上帝保佑你,啊门! 要不你就得修改代码,如增加一些 LOG 来分析为什么要点击多次。

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧