大侠们,大家好,小弟初来乍道,请教一个问题啊!
我想调试串口,发一个指令出去,收另外一个指令回来,实现握手,但是怎么也实现不了,请指点:
#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(); } }
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |