Bueno aqui anexo el diagrama y el codigo del maestro y esclavo, por si pueden ayudarme.
codigo master:
#include <18f458.h>
#device adc=10
#fuses hs, nowdt
#use delay(clock=20M)
#use standard_io(b)
#include <lcd.c>
#define LCD_ENABLE_PIN PIN_D0
#define LCD_RS_PIN PIN_D1
#define LCD_RW_PIN PIN_D2
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7
void main()
{
int16 lectura;
float voltaje;
lcd_init();
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_DIV_8);
setup_spi(spi_master | spi_l_to_h | spi_clk_div_16);
do
{
set_adc_channel(0);
lectura = read_adc();
voltaje = 5.0*lectura/1024;
printf(lcd_putc, "\f%01.2fV", voltaje);
spi_write(voltaje);
delay_ms(1000);
}
while(true);
}
########################
codigo esclavo
#include <16f887.h>
#fuses INTRC,nowdt
#use delay(clock=8M)
#use fast_io(B)
#include <lcd.c>
#define LCD_ENABLE_PIN PIN_D0
#define LCD_RS_PIN PIN_D1
#define LCD_RW_PIN PIN_D2
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7
void main()
{
float data;
lcd_init();
printf(lcd_putc, "hola");
output_high(pin_b1);
delay_ms(1000);
setup_spi(spi_slave | spi_l_to_h | spi_clk_div_16);
do
{
if(spi_data_is_in())
{
data = spi_read();
printf(lcd_putc, "\f%f", data);
delay_ms(1000);
}
}
while(true);
}