Buenas tardes, es mi primer tema en este foro, estoy implementando en un código una manera de escribir nombres usando el estilo de escribir de los celulares de segunda generación 2(a,b,c),3(d,e,f),etc. Ya he logrado vincular cada numero a sus letras correspondientes, y estoy intentando que para validar la letra sea necesario pulsar * en el teclado, pero solo consigo que el programa se detenga al pulsarlo en vez de pedirme la siguiente letra.
El código lo llevo hasta acá:
#include <16f877.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock = 4MHz)
#include <lcd.c>
#include <kbd.c>
char Teclado(){
char k,l=0;
int x=0,a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,v=10;
do{
k=kbd_getc();
x=k-48;
if(x==2){
b=0;c=0;d=0;e=0;f=0;g=0;h=0;
l=97+a;
lcd_gotoxy(v,1);
lcd_putc(l);
a=a+1;
if(a==3)a=0;
}
if(x==3){
a=0;c=0;d=0;e=0;f=0;g=0;h=0;
l=100+b;
lcd_gotoxy(v,1);
lcd_putc(l);
b=b+1;
if(b==3)b=0;
}
if(x==4){
a=0;b=0;d=0;e=0;f=0;g=0;h=0;
l=103+c;
lcd_gotoxy(v,1);
lcd_putc(l);
c=c+1;
if(c==3)c=0;
}
if(x==5){
a=0;b=0;c=0;e=0;f=0;g=0;h=0;
l=106+d;
lcd_gotoxy(v,1);
lcd_putc(l);
d=d+1;
if(d==3)d=0;
}
if(x==6){
a=0;b=0;c=0;d=0;f=0;g=0;h=0;
l=109+e;
lcd_gotoxy(v,1);
lcd_putc(l);
e=e+1;
if(e==3)e=0;
}
if(x==7){
a=0;b=0;c=0;d=0;e=0;g=0;h=0;
l=112+f;
lcd_gotoxy(v,1);
lcd_putc(l);
f=f+1;
if(f==4)f=0;
}
if(x==8){
a=0;b=0;c=0;d=0;e=0;f=0;h=0;
l=116+g;
lcd_gotoxy(v,1);
lcd_putc(l);
g=g+1;
if(g==3)g=0;
}
if(x==9){
a=0;b=0;c=0;d=0;e=0;f=0;g=0;
l=119+h;
lcd_gotoxy(v,1);
lcd_putc(l);
h=h+1;
if(h==4)h=0;
}
}while(k!='*');
return l;
}
void main(){
lcd_init();
kbd_init();
port_b_pullups(TRUE);
Teclado();
}
De esa manera el programa solo me visualiza los números y se detiene luego de pulsar el *.
¿'Que me recomiendan para poder digitar palabra por palabra?
Gracias de antemano.
Adjunto el archivo de Proteus.