Re: help me,help me,help me....
Sorry I'm not good at Endlish because I'm Vietnamese. I have a problem.I want to connect pic to pic use rs485.The master is pic 18f4550 and slave is 16f887.I use pins TX,RX(rs232) to transceiver
And my code master:
#include <18f4550.h>
#include "LCD_SD.C"
#fuses HS, NOWDT, NOLVP, NOBROWNOUT, NOPROTECT, PUT
#use delay(clock=16000000)
//#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9,stream=bus)
#define RS485_DEST_ID 0x11
#define RS485_ID 0x7f
#define RS485_USE_EXT_INT false
#include <rs485.c>
#use rs232(baud=9600, xmit=RS485_TX_PIN, rcv=RS485_RX_PIN, enable=RS485_ENABLE_PIN, bits=9, long_data, errors, stream=bus)
int8 buffer[2];
int8 next_in = 0;
int8 next_out = 0;
#define bkbhit (next_in != next_out)
int8 bgetc()
{
int8 c;
while(!bkbhit);
c = buffer[next_out];
next_out = (next_out+1) % sizeof(buffer);
return c;
}
void main() {
int8 i, msg[2];
i=2;
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
rs485_init();
while(1) {
msg[0]="d";
msg[1]="u";
output_low(pin_d2);
delay_ms(500);
output_high(pin_d2);
delay_ms(500);
rs485_wait_for_bus(FALSE);
while(!rs485_send_message(RS485_DEST_ID, 2, msg))
delay_ms(RS485_ID);
}
}
code slave:
#include <16F887.H>
#include "LCD_SD.C"
#fuses HS, NOWDT, NOLVP, NOBROWNOUT, NOPROTECT, PUT
#use delay(clock=20000000)
#define RS485_DEST_ID 0x00
#define RS485_ID 0x10
#define RS485_USE_EXT_INT false
#include "rs485_dung.c"
#use rs232(baud=9600, xmit=RS485_TX_PIN, rcv=RS485_RX_PIN, enable=RS485_ENABLE_PIN, bits=9, long_data, errors, stream=bus)
int8 buffer[4];
int8 next_in = 0;
int8 next_out = 0;//tuong ung so byte khung truyen
#define bkbhit (next_in != next_out)//làm chi???
#INT_RDA
void serial_isr()
{
int8 t=0;
buffer[t] = getc(bus);
t+=1;
if(t>=sizeof(buffer)){
t=0;}
output_high(pin_d5);
delay_ms(500);
output_low(pin_d5);
delay_ms(500);
// Buffer full !!
lcd_gotoxy(1,1);
printf(lcd_putc,buffer[1]);
delay_ms(5);
}
void main() {
int8 i, msg[2];
i=0;
LCD_INIT();
LCD_GOTOXY(1,1);
LCD_SEND_BYTE(0,0x01);
DELAY_MS(5);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
rs485_init();
while(1);
}
thanks for your attention!