电脑串口接收不到单片机发过来的数据,但是单片机可以接收电脑串口数据...

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了电脑串口接收不到单片机发过来的数据,但是单片机可以接收电脑串口数据...相关的知识,希望对你有一定的参考价值。

main(void)
TMOD=0x20;//定时器R1的工作方式为2,定时器0的工作方式为0
TH1 =0xfd; //R1的溢出率 ,
TR1 =1;
PCON =0x00;//波特率不提高一倍
SCON =0x50;//设置工作方式为1,可以接收数据
ET1 =0;//关闭定时器1的中断响应
ES =1; //打开串口接收中断
EA =1;

while(1)
// if(p3_6==0)
SBUF='a';
while(!TI);
TI=0;


我的java上位机:http://pan.baidu.com/share/link?shareid=353642754&uk=2904981350

参考技术A #include<reg51.h>
main(void)
TMOD=0x20;//定时器R1的工作方式为2,定时器0的工作方式为0
TH1 =0xfd; //R1的溢出率 ,
TL1=0xfd;
TR1 =1;
PCON =0x00;//波特率不提高一倍
SCON =0x50;//设置工作方式为1,可以接收数据
// ET1 =0;//关闭定时器1的中断响应
// ES =1; //打开串口接收中断
// EA =1;

while(1)
// if(p3_6==0)
SBUF='a';
while(!TI);
TI=0;

追问

电脑可以接收数据,串口调试助手的接收区也显示接收的字符。但是自己写的上位机不显示接收的字符,我上位机:http://pan.baidu.com/share/link?shareid=353642754&uk=2904981350
你帮我看看吧,不知道为什么啊

追答

呵呵,我不太熟悉JAVA

参考技术B 你没有串口中断服务程序,可以这样写 void txd_interrupt(void) interrupt 4
SBUF='a';
while(!TI);

就行了
参考技术C ES =1; //打开串口接收中断
这个为什么要打开的,你又没有处理中断程序
希望被采纳追问

打不打开又没区别,我就不知道为什么接收不到数据....

追答

模拟串口那边是不是波特率设置错了

追问

电脑可以接收数据,串口调试助手的接收区也显示接收的字符。但是自己写的上位机不显示接收的字符,我上位机:http://pan.baidu.com/share/link?shareid=353642754&uk=2904981350
肯定是串口事件监听器的处理函数写错了..你帮我看看吧,不知道为什么啊

52单片机通过usb 串口发送数据给linux,minicom来接收

在window下,串口调色精灵可以收到单片机发来的数据,但是minicom就是接收不到,就指导

在Linux下首先要对minicom进行下串口设置,你可以看下/dev/下的设备,你插入串口的话,会多出来哪个设备,往往都是/dev/ttyUSB*,具体自己看下.设置minicom的话,命令是:minicom -s,也可以自己去找资料.在minicom里要把串口还有波特率都设置好,与单片机代码相符合的波特率.设置好minicom之后重开minicom,这个时候你收发的话,minicom就会显示出接收到的数据了. 参考技术A minicom 要设定波特率之类的才行,也就是说使用前要设置minicom.另外minicom不同于串口助手。相当与windows下的超级终端。追问

我设置过了的,我用的是usb串口,是不是与普通的串口一样

追答

你先把串口接收和发送线短接,看看minicom上发数据是不是会显示回来,这是最基本的串口调试方法,如果发东西没有回来的话,就说明你的minicom没有设置好,具体的设定方法请百度查查。

参考技术B 这个东西很麻烦的,usb接口是48m的晶振,usb转串口是四分频的也就是12m的,单片机一般用11.0592m,晶振不统一,不管使用那款晶振兼容性都不好,除非使用双晶振的转换器,价格不会低于50人民币的。

以上是关于电脑串口接收不到单片机发过来的数据,但是单片机可以接收电脑串口数据...的主要内容,如果未能解决你的问题,请参考以下文章

单片机的串口输入总是中断

stm8用串口通信,数据发不出去

STM8s003 串口发送数据后不再接收

c语言 让计算机像单片机一样接收串口发来的数据

单片机与电脑串口通信,无论发啥信息都收到00,求问是怎么回事?代码见下面。

单片机串口通信控制led灯的点亮