Index: branch/leroy/sp4b2/SP4b2/SessionM32C_E8a_SYSTEM.ini
===================================================================
--- branch/leroy/sp4b2/SP4b2/SessionM32C_E8a_SYSTEM.ini	(revision 516)
+++ branch/leroy/sp4b2/SP4b2/SessionM32C_E8a_SYSTEM.ini	(revision 517)
@@ -23,4 +23,4 @@
 [Target]
 M32C E8a SYSTEM=Renesas Communications
 [USER_DATA]
-RESET=fe0000
+RESET=fe0004
Index: branch/leroy/sp4b2/SP4b2/SP4b2.c
===================================================================
--- branch/leroy/sp4b2/SP4b2/SP4b2.c	(revision 516)
+++ branch/leroy/sp4b2/SP4b2/SP4b2.c	(revision 517)
@@ -10,6 +10,7 @@
 /***********************************************************************/
 #include "sfr32c87.h"
 
+/* definition des ports connectés au micro-controlleur*/
 #define port pd3
 #define LCD_RS p3_0
 #define LCD_RW p3_1
@@ -19,7 +20,9 @@
 #define LCD_B6 p3_6
 #define LCD_B7 p3_7
 
+
 void LCD_init_port(void);
+/*Déclaration des fonction utilisées*/
 void tpo_us(unsigned short duree);
 void tpo_ms(unsigned short duree);
 void LCD_4b(unsigned char car);
@@ -28,20 +31,30 @@
 void LCD_init(void);
 void LCD_char(unsigned char car);
 void LCD_str(unsigned char *str);
+void init_keyboard(void);
+void tpo_50ms(void);
+void decode_touche(unsigned char code_touche,unsigned char* valeur_touche);
 
+//Déclaration des variables
+unsigned char touche = 0;
+unsigned char premier_code_touche = 0;
+unsigned char deuxieme_code_touche = 0;
+unsigned char code_touche = 0;
+unsigned char valeur_touche;
+
 void LCD_init_port(void){
 	port = 0xFF;
 	}
 
 void tpo_us(unsigned short duree){
-	tcspr = 0x8A;
-	ta0mr = 0x82;
-	ta0 = duree;
-	ta0s = 1;
-	ta0os = 1;
-	ta0ic = 0x00;
+	tcspr = 0x8A; //Rapport de division fréquence
+	ta0mr = 0x82; //Mode comptage une seule fois
+	ta0 = duree; //Valeur de la temporisation
+	ta0s = 1; //Début comptage
+	ta0os = 1; //Démarrage comptage
+	ta0ic = 0x00; //Désactivation des interruptions
 	while(ir_ta0ic != 1);
-	ta0s = 0;	
+	ta0s = 0; //Fin comptage
 	}
 
 void tpo_ms(unsigned short duree){
@@ -56,12 +69,12 @@
 	}
 
 void LCD_4b(unsigned char car){
-	LCD_E = 1;
+	LCD_E = 1; //Prêt à envoyer une donnée (sur front descendant
 	
-	if (car & 128){
-		LCD_B7 = 1;
+	if (car & 128){ //Si le bits de poids fort vaut 1
+		LCD_B7 = 1; //Application d'un 1 sur la sortie
 	}else{
-		LCD_B7 = 0;	
+		LCD_B7 = 0;	//Sinon application d'un 0 sur la sortie
 	}
 		
 	if (car & 64){
@@ -82,51 +95,159 @@
 		LCD_B4 = 0;	
 	}	
 	
-	LCD_E = 0;
+	LCD_E = 0; //Donnée envoyée
 	}
 
 void LCD_8b(unsigned char car){
-	LCD_4b(car);
-	LCD_4b(car<<4);
+	LCD_4b(car); //Envoi du bit de poids fort
+	LCD_4b(car<<4); //Envoi du bit de poids faible
 	}
 
 void LCD_com(unsigned char car){
-	LCD_RS = 0;
+	LCD_RS = 0; //Envoi d'une commande
 	LCD_8b(car);
 	}
 void LCD_init(void){
+	//Processus necesaire à l'initialisation de l'afficheur
 	LCD_RS=0;
 	tpo_ms(15);
-	LCD_4b(0x30);
+	LCD_4b(0x30); //Afficheur en mode 8 bits
 	tpo_ms(5);
-	LCD_4b(0x30);
+	LCD_4b(0x30); //Afficheur en mode 8 bits
 	tpo_us(100);
-	LCD_4b(0x30);
+	LCD_4b(0x30); //Afficheur en mode 8 bits
 	tpo_us(100);
 	LCD_4b(0x20);
 	LCD_com(0x28);
 	LCD_com(0x06);
-	LCD_com(0x0E);
-	LCD_com(0x01);
+	LCD_com(0x0E); //Extinction de l'afficheur
+	LCD_com(0x01); //Réinitialisation de l'afficheur
 	tpo_ms(5);
 	}
 
 void LCD_char(unsigned char car){
-	LCD_RS = 1;
-	LCD_8b(car);
+	LCD_RS = 1; //Envoi d'une donnée
+	LCD_8b(car);  //Envoi d'un caractère
 	}
-void LCD_str(unsigned char *str){
+void LCD_str(unsigned char *str){//Envoi d'une chaine de caractère
 	int i = 0;
-	while(str[i] != '\0'){
-		LCD_char(str[i]);
+	while(str[i] != '\0'){ //Tant que l'on est pas à la fin de la chaine de caractère
+		LCD_char(str[i]); 
 		i ++;
 		}
 	}
 
+void init_keyboard(void){
+	    pd10 = 0x0F; //Configuration des broches du clavier en entrée/sortie
+		p10=0; //Mise des broches du port 1à à 0
+		pu31 = 1; //Activation des résistance de tirage à l'état haut
+		}
+
+void tpo_50ms(void){
+	tcspr = 0x8A;
+	ta0mr = 0x82;
+	ta0 = 50000;
+	ta0s = 1;
+	ta0os = 1;
+	ta0ic = 0x00;
+	while(ir_ta0ic != 1); 
+	ta0s = 0;
+}
+void decode_touche(unsigned char code_touche,unsigned char* valeur_touche){
+	
+	switch(code_touche){
+		case (0xBE): //Code de la touche du clavier
+		*valeur_touche = 0x31;//code de la touche en hexadecimale
+		break;
+	
+		case (0xDE):
+		*valeur_touche = 0x32;
+		break;
+		
+		case (0x7E):
+		*valeur_touche = 0x33;
+		break;
+
+		case (0xBD):
+		*valeur_touche = 0x34;
+		break;
+
+		case (0xDD):
+		*valeur_touche = 0x35;
+		break;	
+		
+		case (0x7D):
+		*valeur_touche = 0x36;
+		break;
+
+		case (0xEB):
+		*valeur_touche = 0x37;
+		break;
+		
+		case (0xDB):
+		*valeur_touche = 0x38;
+		break;					
+		
+		case (0x7B):
+		*valeur_touche = 0x39;
+		break;
+		
+		case (0xE7):
+		*valeur_touche = 0x2A;
+		break;					
+		
+		case (0xD7):
+		*valeur_touche = 0x30;
+		break;	
+		
+		case (0x77):
+		*valeur_touche = 0x23;
+		break;					
+						
+		
+		}
+}
+
 void main(void)
-{
-	char car[] = {'B','o','n','j','o','u','r',' ',};
-	LCD_init_port();
-	LCD_init();
-	LCD_str(car);
+{	
+	char car[] = {'B','o','n','j','o','u','r',' '};
+	LCD_init_port(); //Initialisation des broches
+	LCD_init(); //Initialisation de l'afficheur
+	while (1){
+	init_keyboard();
+	   
+	   
+		pd10 = 0x0F; //Mode entrée (colonnes) sortie (lignes)
+		p10=0; //Mise à 0 des sorties
+		pu31 = 1; //Activation des résistance de tirage à l'état haut (colonnes)
+		pu30 = 1;//Activation des résistance de tirage à l'état haut (lignes)
+
+			touche = p10; //Lecture de la valeur sur les sorties
+			tpo_50ms(); //anti rebond
+			while(p10 == 0xF0);
+			premier_code_touche = touche & 0xF0; //Stockage du premier code de la touche
+	
+			pd10 = 0xF0; ////Mode sortie (colonnes) entrée (lignes)
+			p10 = 0;
+			pu31 = 1;
+			
+			p10 = touche; //stockage du premier code la touche dans p10 pour l'appliquer sur les sorties du micro-controlleur
+
+			touche = p10;
+
+			deuxieme_code_touche = 0x0F & touche;//Stockage du deuxième code de la touche
+			
+			code_touche = deuxieme_code_touche+premier_code_touche;//Stockage des deux code de la touche
+			
+			while(p10 == 0x0F);
+	
+	  	   
+
+	   
+	decode_touche(code_touche, &valeur_touche);
+	
+	
+	LCD_char(valeur_touche);// Affichage de la valeur de la touche
 }
+	   
+}
