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

时间:2016-10-01 17:32:10

标签: serial-port pic

我试图通过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);  
      }}

在完成所有这些数据后,我才能想到,不管怎样,它会成为保险丝上的东西?这真的很奇怪。

请有人帮助我,谢谢你的阅读! :)

2 个答案:

答案 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而不是原始的十六进制字节 感谢所有