/***************************************************
*
* esclavo_ag_1.h
*
***************************************************/
#include <18F2550.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES WDT128 //Watch Dog Timer uses 1:128 Postscale
#FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES BORV20 //Brownout reset at 2.0V
#FUSES NOPUT //No Power Up Timer
#FUSES NOCPD //No EE protection
#FUSES STVREN //Stack full/underflow will cause reset
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOWRT //Program memory not write protected
#FUSES NOWRTD //Data EEPROM not write protected
#FUSES IESO //Internal External Switch Over mode enabled
#FUSES FCMEN //Fail-safe clock monitor enabled
#FUSES NOPBADEN //PORTB pins are configured as digital I/O on RESET
#FUSES NOWRTC //configuration not registers write protected
#FUSES NOWRTB //Boot block not write protected
#FUSES NOEBTR //Memory not protected from table reads
#FUSES NOEBTRB //Boot block not protected from table reads
#FUSES NOCPB //No Boot Block code protection
#FUSES MCLR //Master Clear pin enabled
#FUSES LPT1OSC //Timer1 configured for low-power operation
#FUSES NOXINST //Extended set extension and Indexed Addressing mode disabled (Legacy mode)
#FUSES PLL12 //Divide By 12(48MHz oscillator input)
#FUSES CPUDIV4 //System Clock by 4
#FUSES USBDIV //USB clock source comes from PLL divide by 2
#FUSES VREGEN //USB voltage regulator enabled
#use delay(clock=20000000)
#define I2C_SDA PIN_B0
#define I2C_SCL PIN_B1
#define S1 0xB0
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#use i2c(Slave,Slow,sda=PIN_B0,scl=PIN_B1,force_hw,address=0xB0)
//#include "milib.c"
//Define pines
#BYTE SSPADD = 0xFC8
#BYTE SSPCON1 = 0xFC6
#BYTE SSPCON2 = 0xFC5
#BYTE SSPBUF = 0xFC9
#BYTE SSPSTAT = 0xFC7
#BYTE PIR1 = 0xF9E
#BYTE PORTB = 0xF81
//define bit a bit
#BIT SSPIF = 0xF9E.3 //PIR1 bit 3
#BIT SSPOV = 0xFC6.6 //SSPCON1 bit 6
#BIT BF = 0xFC8.0 //SSPSTAT bit 0
#BIT RW = 0xFC7.2 //SSPSTAT bit 2
#BIT DA = 0xFC7.5 //SSPSTAT bit 5
void i2c_master_escribe(int8 direccion,int8 dato){
i2c_start(); // Comienzo comunicación
i2c_write(direccion); // Dirección del esclavo en el bus I2C modo rw
//i2c_write(posicion); // Posición donde se guardara el dato transmitido
i2c_write(dato); // Dato a transmitir
i2c_stop(); // Fin comunicación
delay_ms(1000);
}
int8 i2c_master_lee(int8 direccion){
int8 dato_leido;
i2c_start(); // Comienzo de la comunicación
i2c_write(direccion); // Dirección del esclavo en el bus I2C modo RW
//i2c_write(posicion); // Posición de donde se leerá el dato en el esclavo
i2c_start(); // Reinicio
i2c_write(direccion+1); // Dirección del esclavo en modo lectura (modo r)
dato_leido=i2c_read(1); // Lectura del dato
i2c_stop(); // Fin comunicación
delay_ms(50);
return dato_leido;
}