Vous êtes sur la page 1sur 6

C:/Users/hubes/MPLABXProjects/DM_C2.X/main.

c
/*
* File: main.c
* Author: hubes
*
* Created on 5 mai 2023, 13:28
*/

#include <stdio.h>
#include <stdlib.h>
#include "biblio.h"
#include "config.h"
#include <xc.h>
#include "lcd.h"

#define _XTAL_FREQ 500000


/*
*
*/

unsigned int x;
unsigned compteur;
int main(int argc, char** argv) {

init();
LCD_Init();

// variables
unsigned int resultat_aff;
int cpt=0;
int depart=0;
int coul=depart;
int led=1;
int led2=0;

// tableau couleur sous forme de tableau 7 lignes 6 colonnes


// ligne 7 lignes pour le nombre de couleur et 6 colonnes pour le nombre de lettres
char aff [7][6]={"rouge","bleu","vert","jaune","blanc","noir","rose"};

while(1){
LATD=0b00000000; // eteindre led et 7 segments
LATA=0b00000000;
while (x==0){ // boucle menu, tant qu'on appuie pas sur s1
LCD_WriteText("Mastermind", 0x80);
LCD_WriteText("Continuer s1", 0xC0);

1.1 of 6 2023.05.21 17:28:31


C:/Users/hubes/MPLABXProjects/DM_C2.X/main.c

our le nombre de lettres

1.2 of 6 2023.05.21 17:28:31


C:/Users/hubes/MPLABXProjects/DM_C2.X/main.c
__delay_ms(1000);
} // sortir de la boucle et afficher pdt 2 secs comment choisir la
LCD_Clear();
LCD_WriteText("Choix coul pot1",0x80);
LCD_WriteText("Validez avec s2",0xC0);
__delay_ms(3000);

while (x==1){ // chosir la couleur avec le pot1 et valider avec s2


LCD_Clear();
LCD_WriteText("Validez avec s2",0xC0);
ADCON0bits.CHS=0b0101;
ADCON0bits.GO=1;
while (ADCON0bits.GO==1){
}
resultat_aff=ADRES*6/1023;
LCD_WriteText(aff[resultat_aff],0x80);
__delay_ms(500);
} // sortir de la boucle avec s2

while (x==2){ // verifier si c'est la bonne couleur ou pas


if(resultat_aff==coul){ // bonne couleur ==> allumer une led en plus et son
LATD=led;
juste();
LCD_Clear();
LCD_WriteText("Bonne Couleur",0x80);
LCD_WriteText("Continuer s3",0xC0); // amener à la boucle x==3
__delay_ms(4000);
} else { // mauvaise couleur ==> eteindre led, son faux et remettre cpt à
LATD=0b00000000;
faux();
coul=depart;
cpt=0;
led=1;
led2=0;
LCD_WriteText("Mauvaise Coul", 0x80);
LCD_WriteText("Recommencez",0xC0);
__delay_ms(2000);
x=1; // renvoyer a la boucle de choix de couleur
}
}

if (x==3){ // boucle qui incrémente couleur, cpt et led et qui renvoi a la boucl

2.1 of 6 2023.05.21 17:28:31


C:/Users/hubes/MPLABXProjects/DM_C2.X/main.c

secs comment choisir la couleur

er une led en plus et son juste

la boucle x==3

n faux et remettre cpt à 0

et qui renvoi a la boucle du choix de couleur

2.2 of 6 2023.05.21 17:28:31


C:/Users/hubes/MPLABXProjects/DM_C2.X/main.c
coul=coul+3;
cpt=cpt+1;
x=1;
led=led+2+led2;
led2=led2+2;
}

while (cpt==3){ // quand 3 couleur sont bonnes, afficher texte et musique + cli
LATD=0b11111111;
LCD_WriteText("Vous avez gagne ",0x80);
LCD_WriteText("!!!!!!!!!!!!!!!",0xC0);
gagne();
}

}
return (EXIT_SUCCESS);
}

void __interrupt() interruption(void){ // fonction interruption pour les boutons


if (INTCONbits.INT0IF==1){
x=1;
INTCONbits.INT0IF=0;
}
if (INTCON3bits.INT1IF==1){
x=2;
INTCON3bits.INT1IF=0;
}
if (INTCON3bits.INT2IF==1){
x=3;
INTCON3bits.INT2IF=0;
}
if(INTCONbits.TMR0IF ==1){
compteur++;
if(compteur==500){
compteur=0;
LATD=~LATD;

}
INTCONbits.TMR0IF=0;
}

3.1 of 6 2023.05.21 17:28:31


C:/Users/hubes/MPLABXProjects/DM_C2.X/main.c

er texte et musique + clignotement

pour les boutons

3.2 of 6 2023.05.21 17:28:31

Vous aimerez peut-être aussi