你先看看串口线有没问题:
将串口的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单片机串口调试的小程序,但是在串口调试助手里,显示接收不到数据,希望大虾们帮忙解决下,下面是程序、单片机串口接收一串特定字符的程序,用串口调试助手发送命令,可是单片机不回、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)