** Есть ли способ соединить 4 микроконтроллера вместе, используя UART, даже если в каждом из них есть один модуль UART (18f452) для отправки данных от трех из них на мастер (18f4550) для отображения на ПК
переключение с использованием и вентилями Img
микроконтроллеры с UART Conn Img
Код mikroC для главного UC "U4"
// LCD module connections
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// End LCD module connections
char u1[20], u2[20], u3[20];
void newline()
{
Uart1_write (0x0D);
Uart1_write (0x0A);
}
void main() {
TRISD = 0x00;
Uart1_Init(9600);
delay_ms(20); // Wait for UART module to stabilize
Lcd_Init(); // Initialize LCD
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
while(1){
portd=0x01;
UART1_Read_Text(u1, "ok", 20);
portd=0x02;
UART1_Read_Text(u2, "OK", 20);
portd=0x04;
UART1_Read_Text(u3, "OK", 20);
Lcd_Out(1,5,u1);
Delay_ms(1000);
Lcd_Out(1,5,u2);
Delay_ms(1000);
Lcd_Cmd(_LCD_CLEAR);
Delay_ms(1000);
Lcd_Out(1,5,u3);
delay_ms(250);
portd=0x08;
UART1_Write_Text(u1);
newline();
newline();
UART1_Write_Text(u2);
newline();
newline();
UART1_Write_text(u3);
newline();
newline();
}
}
код MikroC для рабов
char txt[20];
int Vin;
float Dis_volt;
void main()
{
TRISA = 0xFF;
ADCON1 = 0x80;
uart1_Init (9600);
while(1)
{
Vin = adc_read(0);
Dis_volt = (Vin * 500)/ 1024;
floatToStr (Dis_volt , txt);
txt[5]='o';
txt[6]='k';
Uart1_write_Text(txt);
}
}