stc单片机485发送多出一字节_请问51单片机如何解决多字节串口发送 接收问题
我用的是STC89C52,BAUD=57600,串口协议需要一次发送3个字节数据,然后接收5个字节数据,取第三个,和第四个数据程序部分如下:ucharshuju[5]={0};ucharcont=0;voidinit_serialcom(v...
我用的是STC89C52,BAUD=57600,串口协议需要一次发送3个字节数据,然后接收5个字节数据,取第三个,和第四个数据 程序部分如下:
uchar shuju[5]={0};
uchar cont=0;
void init_serialcom( void )
{
SCON = 0x50 ; //SCON: serail mode 1, 8-bit UART, enable ucvr
//UART为模式1,8位数据,允许接收
TMOD |= 0x20 ; //TMOD: timer 1, mode 2, 8-bit reload
//定时器1为模式2,8位自动重装
PCON |= 0x80 ; //SMOD=1;
TH1 = 0xFF ; //Baud:57600 fosc=12MHz
IE |= 0x90 ; //Enable Serial Interrupt
TR1 = 1 ; // timer 1 run
TI=1;
}
//向串口发送一个字符
void send_char_com( unsigned char ch)
{
SBUF=ch;
while (TI== 0);
TI= 0 ;
}
//串口接收中断函数
void UART_SER (void) interrupt 4 //串行中断服务程序
{
if( RI) //判断是接收中断产生
{ RI=0; //标志位清零
shuju[cont]=SBUF;
cont++;
}
if(TI) //如果是发送标志位,清零
TI=0;
}
void chuanshuju()//发送传数据指令
{
send_char_com(0xf0);
send_char_com(0xc0);
send_char_com(0xb0);
}
void main()
{chushuju();}
现在是发送指令后,没有成功,协议没完成。程序到chuanshuju就跑不过去。
展开