Bonjour à tous dans le cadre d'un projet je doit afficher l'heure minute second et date sur afficheur LCD j'utilise donc une RTC PCF8563 mon PIC16F876 et un LCD la communication ce fait par I2C mon but est de crée un programme sur MPLAB en C mes j'ai du mal, j'ai commencer a faire un programme comme ceci :
j'aimerais avoir votre avis sur ce bout de prog.Code:#include <16f877A.h> // utilisation du pic 16f877a.h #use delay(clock=8000000) // fréquence du quartz #use I2C (master, SDA=PIN_C4, SCL=PIN_C3,) // valide le dialogue I2C pour un maître #byte PortC = 0x07 // On défini l'adresse du port C #byte TribC = 0X87 // On défini l'adresse du registre de direction du port C #bit SCLK = PortC.3 // SCLK est le bit 3 du portC #bit SDA = PortC.4 // SDA est le bit 4 du portC #ifndef PCF8563_WRITE_ADRESS #define PCF8563_WRITE_ADRESS 0x? je dois la chercher #define PCF8563_READ_ADRESS 0x? je dois la chercher #endif // Registres d'adresse #define CONTROL_STATUS_1 0x00; #define CONTROL_STATUS_ 0x01; #define CLKOUT_CONTROL 0x0D #define VL_SECONDS 0x02; #define MINUTES 0x03; #define HOURS 0x04; #define DAYS 0x05; #define WEEKDAYS 0x06; #define CENTURY_MONTHS 0x07; #define YEARS 0x08; #define TIMER_CONTROL 0x0E #define TIMER 0x0F char const weekday_names[7][10] = { {"Sunday"}, {"Monday"}, {"Tuesday"}, {"Wednesday"}, {"Thursday"}, {"Friday"}, {"Saturday"} }; typedef struct { int seconds; // 0 à 59 int minutes; // 0 à 59 int hours; // 0 à 23 (24-hour time) int day; // 1 à 31 int month; // 1 à 12 int year; // 00 à 99 int weekday; // 0 = Sunday, 1 = Monday, etc. }date_time_t; void PCF8583_write_byte(int address, int data) //Programme Principal { disable_interrupts(GLOBAL); I2C_start(); // signal start I2C_write(); // addresse PCF8563 dans le cas d'une écriture I2C_write(0x02); // données a transférer dans le composant I2C_write(0x03); I2C_write(0x04); I2C_write(0x05); I2C_write(0x06); I2C_write(0x07); I2C_write(0x08); enable_interrupts(GLOBAL); } while(1) disable_interrupts(GLOBAL); I2C_start(); // nouveau départ pour changement du sens du dialogue I2C_write(); // adresse PCF8563 dans le cas d'une lecture seconds=I2C_read(0) // lecture des secondes minutes=I2C_read(0) hours=I2C_read(0) day=I2C_read(0) month=I2C_read(0) year=I2C_read(0) weekday=I2C_read(0) I2C_stop() enable_interrupts(GLOBAL); }
CORDIALEMENT
-----