Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * File: main.c
- * Author: Chambrin
- *
- * Created on 21 janvier 2016, 19:18
- */
- //header files
- #include <stdio.h>
- #include <stdlib.h>
- #include <xc.h>
- #include <pic18f46j50.h>
- #include "bitsconfig.h"
- //sources files
- #include "Hardware.c"
- #include "myFunctions.c"
- #include "oled.c"
- /* Variables globales */
- short Etat = 0;
- short AppuitBP = 0;
- char secondes = '0';
- unsigned char heure_j1[] = "00:00";
- unsigned char heure_j2[] = "00:00";
- void gestionBP(void);
- void gestionEtats(void);
- void gestionActions(void);
- void DisplayTime(void);
- void afficherHorloges(void);
- void IncrementTime(short Player);
- /*****************************************
- * programme principal
- ****************************************/
- int main(void) {
- while(1)
- {
- afficherHorloges();
- gestionEtats();
- gestionActions();
- }
- }
- /* Programme d'interruption non prioritaire */
- void interrupt low_priority low_isr (void)
- {
- }
- /* Programme d'interruption prioritaire */
- void interrupt high_priority high_isr (void)
- {
- }
- void gestionEtats(void){
- if(Etat == 0){
- /*Initlisation materielle: pins, oled*/
- InitHardware();
- TRISCbits.TRISC0=0;
- LATCbits.LATC0=0;
- DelayMs(500);
- ResetDevice();
- FillDisplay(0x00);
- /*Initilision timer: mode 16 bits, valeur à 15536 pour 1 seconde*/
- T0CONbits.TMR0ON = 0; // Timer O off
- T0CONbits.T08BIT = 0; // mode 8 bits
- T0CONbits.T0CS = 0; // source Hl interne
- T0CONbits.PSA = 0; // autorisation des prédivisions
- T0CONbits.T0PS0 = 1; //
- T0CONbits.T0PS1 = 1; // prédivision par 256
- T0CONbits.T0PS2 = 1; //
- TMR0H = 0x3C; //premier registre du timer (15536 = 0x3CB0)
- TMR0L = 0xB0; //second registre du timer
- /*Initlisation terminée, état 1*/
- Etat = 1;
- }
- }
- void gestionBP(void){
- if(PORTDbits.RD0 == 0){
- AppuitBP = 1;
- }else{
- AppuitBP = 0;;
- }
- }
- void gestionActions(void){
- if(Etat == 0){
- oledPutString("We are in state 0",1,1);
- }
- if(Etat == 1){
- IncrementTime(Etat); // Incrémente le compteur. Etat = 1== incrémentation du j1, Etat = 2== incrémentation du j1
- T0CONbits.TMR0ON = 1;
- if(INTCONbits.TMR0IF==1){
- secondes = secondes+1;
- INTCONbits.TMR0IF=0;
- TMR0H = 0x3C;
- TMR0L = 0xB0;
- }
- }
- }
- void afficherHorloges(void){
- oledPutString("\\/ Horloge d'echec \\/",1,1);
- oledPutString(heure_j1,6,1);
- oledPutString(heure_j2,6,90);
- oledPutString("<J1>",4,1);
- oledPutString("<J2>",4,90);
- }
- void IncrementTime(short Player){
- if(Player == 1){
- heure_j1[4]=secondes;
- if(heure_j1[4] == ':'){ //: est le caractère après le 9
- heure_j1[4]='0';
- heure_j1[3]++; //incrementation des dizaines de secondes
- secondes = '0';
- }
- if(heure_j1[3] == '6'){ //: est le caractère après le 9
- heure_j1[4]='0';
- heure_j1[3]='0';
- heure_j1[1]++; //incrémentation des unités de minutes
- secondes = '0';
- }
- if(heure_j1[1] == ':'){
- heure_j1[1]='0';
- heure_j1[0]++; //incrémentation des dizaines de minutes
- secondes = '0';
- }
- if(heure_j1[0] == ':'){ //si le compteur atteint 99:99, ce qui n'arrivera jamais, on le reset
- heure_j1[4]='0';
- heure_j1[3]='0';
- heure_j1[0]='0';
- heure_j1[1]='0';
- secondes = '0';
- }
- }
- if(Player == 2){
- heure_j2[4]=secondes;
- if(heure_j2[4] == ':'){ //: est le caractère après le 9
- heure_j2[4]='0';
- heure_j2[3]++; //incrementation des dizaines de secondes
- secondes = '0';
- }
- if(heure_j2[3] == '6'){ //: est le caractère après le 9
- heure_j2[4]='0';
- heure_j2[3]='0';
- heure_j2[1]++; //incrémentation des unités de minutes
- secondes = '0';
- }
- if(heure_j2[1] == ':'){
- heure_j2[1]='0';
- heure_j2[0]++; //incrémentation des dizaines de minutes
- secondes = '0';
- }
- if(heure_j2[0] == ':'){ //si le compteur atteint 99:99, ce qui n'arrivera jamais, on le reset
- heure_j2[4]='0';
- heure_j2[3]='0';
- heure_j2[0]='0';
- heure_j2[1]='0';
- secondes = '0';
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement