stc单片机串口调试的小程序,但是在串口调试助手里,显示接收不到数据,希望大虾们帮忙解决下,下面是程序

stc单片机串口调试的小程序,但是在串口调试助手里,显示接收不到数据,希望大虾们帮忙解决下,下面是程序,第1张

你先看看串口线有没问题:

将串口的2、3脚两根针短接,用键盘在串口调试输入字符,如果串口调试接收区能够显示输入的字符,说明串口工作正常

等我再看看程序

我觉得这儿有问题 JBC TI,SEND

JBC在T1为0的时候,会顺序执行,然后就end了 ,这里我觉得应该改为等待发送结束的指令

JNB T1, $

//特定的字符,那就先弄好数据格式

//比如 你要接收4个ASII字符

//那就把帧设计成

//起始符-字节数-有效数据-结束符 等类似这种格式

//起始符一般订为不常用的 ASII 字符 ,结束符号也是比如$,#,@这些

//假设你要发送ASII的1 2 3 4,起始符-$,结束符-@

//那就要发送 $ 4 1 2 3 4 @ 。第一个4就是有效数据的个数。

里面的变量都是要全局变量因为每次进入中断,变量值不应该复位。

bit flag1=0,flag2;

uchar receive,lenth,i,job_flag;

在最开头定义这些变量

//这样你在编程的时候

void Send() interrupt 4

{

if(RI==1)

{

RI=0;

receive=SBUF;

switch(job_flag)

{

case 0:

if(receive=='$')//判断起始符号

{

job_flag=1;

}

break;

case 1: //判断接收数据长度

lenth=receive;

job_flag=2;

break;

case 2: //接收数据

if(i<lenth)//接收数据并保存到buf数组里

{

buf[i]=receive;

i++;

if(i>lenth)//如果接收的有效数据长度超过了说明数据有错误复位接收

{

i=0;

job_flag=0;

}

if(i==lenth)//接收完成,转到接收结束符

{

job_flag=3;

}

}

break;

case 3: //接收数据

if(receive=='@')//判断结束付-复位接收状态

{

i=0;

job_ flag=0;

flag_RI=1;//接收成功标志位

}

break;

default:

i=0;

job_ flag=0;

flag_RI=0;

break;

}

}

if(TI==1)

{

TI=0;

flag_TI=0;

}

}

以上就是关于stc单片机串口调试的小程序,但是在串口调试助手里,显示接收不到数据,希望大虾们帮忙解决下,下面是程序全部的内容,包括:stc单片机串口调试的小程序,但是在串口调试助手里,显示接收不到数据,希望大虾们帮忙解决下,下面是程序、单片机串口接收一串特定字符的程序,用串口调试助手发送命令,可是单片机不回、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10127522.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存