第一个,你加一个中间变量,有些单片机不能直接用寄存器赋值。
temp=SBUF;
S2BUF=temp;
第二个
你再查你的波特率。
乱码的原因说明你的硬件是对的
也说明你的通信线路基本上是没问题的
你的GPS的波特率如果在4800没有乱码的话
应该就是4800
你重点查你的单片机的波特率的值。
第三个,你直接让你的SBUF和S2BUF往电脑串口调试助手写数据
不断的发,看看你发送的数据是否正确。
个人经验,这就是一个波特率的设置问题。
不建议动不动就拿硬件说事。
再说,楼主选择双串口的目的,
应该是对GPS进行解码
然后通过另一个串口输出数据。
不仅仅只是想看GPS 的数据
这个问题太复杂了
您好:
建议你检查一下硬件电路,看串口的发送、接收、公共端有没有连接正确。而且GPS接口与单片机相连是要用max232进行电平转换的。
其实,你这样接电路是为了看GPS发出的数据么?如果是的话,不用这么麻烦,因为GPS本来就是RS232电平的,也就是说,GPS的接口可以直接通过串口线接到电脑串口上,再用串口调试助手看它发出的数据。
至于之后你想用单片机读取它发出的数据时,就要用到max232将GPS的232电平转到TTL电平再接到单片机的串口了。
至于GPS所用的协议,在百度文库里面有。
希望可以帮到您。
如果你是单纯地想得到GPS的数据的话。不用非得用第二串口。一个串口就可以了。
遇到过差不多的问题,我放弃了。原因是没找到答案。