我试图在2个PIC之间建立连接,并且计算机在proteus中完美运行但在现实生活中有一些问题。
目标是通过一个接口将多个(最多4个)RS232设备与计算机通信,该接口将所有通道集中在一个,如图所示。
必须使用MAX232,因为环境噪音很大。
问题:为什么通过MAX232对PIC的PIC不工作?
正如我所说,我已经构建了几个设备,当我将它们单独连接到PC上的超级终端时,它们都能正常工作。
但是当我将它们彼此连接时......我已经尝试切换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);
}
}