#include #include #include #pragma config FOSC = HS #pragma config WDT = OFF #pragma config LVP = OFF #pragma config PBADEN = OFF //OSC = HS Impostato per lavorare ad alta frequenza //WDT = OFF Disabilito il watchdog timer //LVP = OFF Disabilito programmazione LVP //PBADEN = OFF Disabilito gli ingressi analogici //************************************************************ // variabili globali //************************************************************ volatile unsigned char GGG = 3 ; void main (void){ // Variabile per salvare il dato di ritorno unsigned char data = 0; // Imposto PORTA tutti ingressi LATA = 0x00; TRISA = 0xFF; // Imposto PORTB tutti ingressi LATB = 0x00; TRISB = 0xFF; // Imposto PORTC tutti ingressi, RC1 come output LATC = 0x00; TRISC = 0b11111101; // Imposto PORTD tutte uscite LATD = 0x00; TRISD = 0x00; // Imposto PORTE tutti ingressi LATE = 0x00; TRISE = 0xFF; // Imposto il quarzo per la libreria delay setQuartz (20); // Inizializza il modulo I2C a 400KHz @20MHz OpenI2C(MASTER, SLEW_ON); SSPADD = 12; writeI2C_EEPROM (0xA0, 0, 0x35); // Aspetto che il dato sia propriamente scritto in EEPROM delay_ms (100); readI2C_EEPROM (0xA0, 0, &data); GGG = ~data; LATD = GGG; // LATDbits.LATD0 = 1; // LATDbits.LATD1 = 1; // LATDbits.LATD2 = 1; // LATDbits.LATD3 = 1; // LATDbits.LATD4 = 1; // LATDbits.LATD5 = 1; // LATDbits.LATD6 = 1; // LATDbits.LATD7 = 0; // Ciclo infinito while (1) { } }