我试图通过rs 232向PIC发送一个字节时遇到了一些问题。
我已经在物理设备上尝试了它,并且还在proteus中。
当我尝试发送 0x80 值或更高时,它只发送一个 0x3f ,我真的很想知道原因。
当我在 0 和 0x79 之间发送值时,一切都很顺利。
我使用了各种超级终端和我自己的vbstudio软件,所有这些都返回了相同的...
这是代码,它只是对收到的值进行回声并将其保存在PORTB上。
#include <16F84.h>
#fuses XT,NOWDT,NOPROTECT
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_A1,rcv=PIN_A0,bits=8)
unsigned int rx;
void main (){
set_tris_b(0b00000000);
set_tris_a(0b00000001);
while(true){
rx=getc();
printf("%x\r\n", rx);
output_b(rx);
}}
在完成所有这些数据后,我才能想到,不管怎样,它会成为保险丝上的东西?这真的很奇怪。
请有人帮助我,谢谢你的阅读! :)
答案 0 :(得分:0)
接收ASCII? (0x3F)当输入大于127时听起来像发送端的编码问题,而不是PIC的问题。
有关解决此问题的方法,请参阅“How to send ASCII values greater than 127 to serial port”。
答案 1 :(得分:0)
代码没问题,问题发生在vb.net端,我发现了这个问题,这对我帮助很大。
扩展的SerialPort Windows窗体示例
https://code.msdn.microsoft.com/windowsapps/Extended-SerialPort-10107e37
问题是我发送ASCII而不是原始的十六进制字节 感谢所有