为什么PIC到PIC trhough MAX232不工作?

时间:2016-10-12 15:51:28

标签: c serial-port microcontroller pic microchip

我试图在2个PIC之间建立连接,并且计算机在proteus中完美运行但在现实生活中有一些问题。

目标是通过一个接口将多个(最多4个)RS232设备与计算机通信,该接口将所有通道集中在一个,如图所示。

enter image description here

必须使用MAX232,因为环境噪音很大。

问题:为什么通过MAX232对PIC的PIC不工作?

正如我所说,我已经构建了几个设备,当我将它们单独连接到PC上的超级终端时,它们都能正常工作。

enter image description here

但是当我将它们彼此连接时......我已经尝试切换TX和RX(DB-9:2,3)引脚但它从未起作用。实际上,在一些测试中,主人卡住了。

我应该在RX和TX上放置几个拉UPS吗?

同时拉动UPS以避免在引脚设置之前发生初始浮动状态?危险吗?什么价值?

您可以下载项目和所有图片的原理图from this link.

提前致谢!

代码

站长:

#include <18f448.h>
#fuses HS,NOPROTECT,NOWDT

#use delay(clock=20M)

#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8, STREAM=COM_A)
#use rs232(baud=9600,parity=N,xmit=PIN_C4,rcv=PIN_C5,bits=8, STREAM=COM_B) 
int rx;

#int_RDA                              

void RDA_isr()
{
    rx=getc(COM_A);    

    fprintf(COM_A,"%X\n\r",rx); 
    fprintf(COM_B,"%X\n\r",rx);
}

void main() { 
   enable_interrupts(INT_RDA);    
   enable_interrupts(GLOBAL);  
}  

从站:

#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 (1) { 
        rx = getc();    
        printf("%X", rx);  
        rx = ~rx;
        output_b(rx);  
    }
}

0 个答案:

没有答案