大俠們,大家好,小弟初來乍道,請教一個問題!
我想調試串口,發一個指令出去,收另外一個指令回來,實現握手,但是怎么也實現不了,請指點:
#include <REG52.H>
#include <stdio.h>
unsigned char redata;
void delay( unsigned int m)
{
unsigned char j;
for(m; m > 0; m--)
for(j = 200; j > 0; j--);
}
//握手
void woshou_code(void)
{
unsigned char woshou_tx[6]={0xaa, 0x00, 0xcc ,0x33, 0xc3, 0x3c};
unsigned char jieshou[16]={0};
unsigned char i=0;
unsigned char woshou_rx[17]={0xaa, 0x00,0x4f,0x4b,0x5f,0x56,0x34,0x2e,0x32,0x0b, 0x02 ,0x00 ,0xcc ,0x33, 0xc3, 0x3c};
while(woshou_tx!='\0')
{ SBUF=woshou_tx;
while(!TI);
TI=0;
i++;
}
if(RI)
{
RI=0;
for(i=0;i<16;i++)
{
redata=SBUF;
jieshou=redata;
i++;
}
}
for(i=0;i<16;i++)
{
if(jieshou!=woshou_rx)
woshou_code();
if(jieshou=='0'&&woshou_rx=='0')
return;
}
}
void ser_int (void) interrupt 4 using 1
{
if(TI==1)
TI=0;
if(RI)
RI=0;
redata=SBUF;
}
void main (void)
{
SCON = 0x50; //REN=1允許串行接受狀態,串口工作模式1
TMOD|= 0x20; //定時器工作方式2
PCON|= 0x80;
TH1 = 0xF3; // //baud*2 /* 波特率4800、數據位8、停止位1。效驗位無 (12M)
TL1 = 0xF3;
TR1 = 1;
ES = 1; //開串口中斷
EA = 1; // 開總中斷
while(1)
{
delay(200);
woshou_code();
}
}
|