2020-01-23 14:34发布
dlmaowf 发表于 2014-6-27 15:01 51单片机么?这样写不太对吧
tigeroser 发表于 2014-6-27 15:31 void Clear_RxBuf() { unsigned char j=0;
dlmaowf 发表于 2014-6-27 15:39 你写的程序,我有些看不懂
最多设置5个标签!
是的 51,上位机发送的数据不带有结束标志信息,也可能带有回车。但长度有限。现在的处理办法是建立一个大点的数组,把数据接收进来,然后判断有用的
但我自己约定的协议一般是有起始字节和结束字节
发送大写A
接收十六进制显示是
41 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A
这是程序中的串口片断:
void Clear_RxBuf()
{
unsigned char j=0;
RxPoint=0;
for( ;j<Rx_N;j++)
{
RxBuf[RxPoint++]=0X00;
}
RxPoint=0; //地址归零
}
main()
{
.......
while(1)
{
if(RI) //查询---串口接收中断标志位
{
delay_ms(1000); //延时---等待串口接收完成
Print_Str(RxBuf); //
Clear_RxBuf
RI=0;
}
else;
主程序中等待串口中断,接收到不同的内容执行不同的操作,这里用Print_Str(RxBuf); 代替(因为操作不对)
如果我用个收发标志位,如以*开始,以#结束,就正常,上面的程序会输出6个回车0D0A.不知怎么回事
一周热门 更多>