Pic ccs 16f84 + rs232 无法发送高于 0x79 的值(它们变为 0x3f)

Pic ccs 16f84 + rs232 Trouble sending higher values than 0x79 (they become 0x3f)

我在尝试通过 rs 232 向 PIC 发送字节时遇到了一些问题。

我已经在物理设备上试过了,在 proteus 中也试过了。

当我尝试发送 0x80 或更高值时,它只会发送 0x3f,我真的很想知道为什么。

当我在 00x79 之间发送值时,一切正常。

我使用过各种超级终端和我自己的 vbstudio 软件,它们都 return 相同...

这是代码,它只是对接收到的值进行回显并将其稳定在 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);  
      }}

在所有这些数据之后,我只是想也许,不知何故,它会在保险丝上发生什么?真的很奇怪。

有人能帮帮我吗,感谢阅读! :)

收到 ASCII 码? (0x3F) 当输入大于 127 时,听起来像是传输端的编码问题,而不是 PIC 的问题。

请参阅“How to send ASCII values greater than 127 to serial port”了解解决方法。

代码没问题,问题出在 vb.net 方面,我找到了这个,它对我帮助很大。

Extended SerialPort Windows 表单示例

https://code.msdn.microsoft.com/windowsapps/Extended-SerialPort-10107e37

问题是我发送的是 ASCII 而不是原始的十六进制字节 感谢大家