PIC programmtion

poste22 Messages postés 16 Statut Membre -  
poste22 Messages postés 16 Statut Membre -
Bonjour,
j'ai un exercice avec PIC et afficheur LCD et clavier numérique de type"keypad-phone "
il me demande d'écrire une boucle répétitive while 1 qui consista a afficher un message <<tape code de 4>>aux(1,1)
ensuite la saisie d'un code de 4 chiffres a afficher a partir des coordonnées (6 ,2) et l'affichage de message << on to restart>> apres 2 secondes de la fin de la saise , l'apui de la touche <<on>> permet de recommancer
j'ai fais ce programme mais il ne sort pas de la boucle , il reste de me damder de taper un code 4

#include<16F877.h>
#use delay(clock=20000000)
#fuses HS,NOWDT
#byte port_b=6
#byte port_d=8
#include"lcd_4bits.C"
#include"kbd.c"
int s;
int i;

void initial()
{
lcd_init();
kbd_init();
set_tris_b(0);
set_tris_d(0XFF);
}
void main()
{
initial();
lcd_gotoxy(1,1);
lcd_putc("Taper ON!");

do
{
s=kbd_getc();
}
while(s!='a');
lcd_putc("\f");
while (1)
{
lcd_gotoxy(1,1);
lcd_putc("Tape code de 4");
for (i=0;i<4;i++)
{
do
{
s=kbd_getc();
}
while(s==0);
lcd_gotoxy(6+i,2);
lcd_putc(s);
}
delay_ms(2000);
lcd_putc("\f");
lcd_gotoxy(1,1);
lcd_putc("On to restart");
}
}
A voir également:

2 réponses

Utilisateur anonyme
 
Ça reste à demander de taper le code de 4 car il est dans la while 1 : donc toujours vraie, donc ça te fait une boucle infinie.

C'est tout ce que je peux te dire parce que je n'ai pas compris ton problème puisque tu le dis toi même dans l'énoncé de ton problème...
0
poste22 Messages postés 16 Statut Membre 5
 
bonjour merci bizu53
while (1) // la boucle répétitive
{
lcd_gotoxy(1,1);//les cordonnées de message tape code de 4!
lcd_putc("Tape code de 4");
for (i=0;i<4;i++)
{
do// la structure de la
{
s=kbd_getc();//boucle d'attente de l'appui d'une touche
}
while(s==0);sur le clavier numérique
lcd_gotoxy(6+i,2);
lcd_putc(s);
}
delay_ms(2000);//attend un temps avant effacer
lcd_putc("\f");//effacer taper code de 4 et le code
lcd_gotoxy(1,1);
lcd_putc("On to restart"); afficher ce message sur l'écran

j'essaye depuis hier mais j'ai pas trouver la solution
0