下位机与上位机通信问题
问题:用232串口通信,下位机连续发生,上位机现在用串口助手调试,下面发上来的数据不是写的数据,为什么?将下位机程序贴一下。
#include <sst89.h>
#include <stdio.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define WorkTimes 3
uint dianya[3] = {700,200,100},dianliu[3] = {1200,1500,1000};
uchar fangshi[3] ={1,2,1};
uchar dinshi[3] = {11,24,13};
uchar dinfen[3] = {20,30,10};
uchar xunhuan[3] = {0,0,1};
uchar recei_flag = 0;
uchar rec[24] = {0};
void init_ps(void)
{
TMOD =0X20;
TH1 = 0Xfd;
TL1 = 0xfd;
PCON = 0;
TR1 = 1;
ES=1;
TI=1;
EA=1;
SCON = 0X50;
}
void send_char_com( unsigned char ch)
{
SBUF=ch;
while (TI== 0 );
TI= 0 ;
}
void send_section1(uchar m)//发送最开始的设置值
{ uchar i,dianyaH=0,dianyaL=0,dianliuH=0,dianliuL=0;
send_char_com(m);
for(i = 0;i < m;i++)
{ dianyaH = dianya[i]/100;
dianyaL = dianya[i]%100;
dianliuH = dianliu[i]/100;
dianliuL = dianliu[i]%100;
send_char_com(i+1);
send_char_com(dianyaH);
send_char_com(dianyaL);
send_char_com(dianliuH);
send_char_com(dianliuL);
send_char_com(fangshi[i]);
send_char_com(dinshi[i]);
send_char_com(dinfen[i]);
send_char_com(xunhuan[i]);
}
}
void receive_data(void)
{ uchar i=0;
if(RI)
{ RI=0;
if(recei_flag == 0)
{
recei_flag = SBUF;
}
else if(recei_flag == 1)
{
for(i=0;i<24;i++)
{
rec[i] = SBUF;
}
}
}
}
void main(void)
{ init_ps();
while(1)
{ send_char_com(0x16) ;
// send_section1(WorkTimes);
// receive_data();
}
}
接收的数据8个字符一组,有时后4个字符接收是对的,有时却是其他的