TODOPIC
Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: alexispovedag en 07 de Junio de 2014, 00:17:55
-
Hola a toda la comunidad, estoy manejando un programa que tome una clave, la compare y me diga mediante un LCD si esta correcta o no este es el codigo
#include <16f877A.h>
#use delay(clock=4000000)
#include <LCD.C>
#fuses XT,nowdt
char tecla,dato[2];
const char clave[]={'1','2','3'};
void main(){
int i=0;
while(true){
lcd_init ();
lcd_gotoxy(3,1);
printf(lcd_putc,"hola");
lcd_gotoxy(1,2);
printf(lcd_putc,"mundo");
delay_ms(1000);
lcd_init();
lcd_gotoxy(1,1);
printf(lcd_putc,"Digite la clave de acceso");
delay_ms(1000);
char clave[]={'1','2','3'};
port_b_pullups(true);
lcd_putc("\f");
while(true){
lcd_gotoxy(6,1);
printf(lcd_putc, "Digite la clave");
while(i<=2){
tecla= getc();
if(tecla!=0){
dato=tecla;
i++;
lcd_gotoxy(i,2);
printf(lcd_putc,"%c", tecla);
delay_ms(100);
}
}
i=0;
if((dato[0]==tecla[0]) && (dato[1]==tecla[1]) && (dato[2]==tecla[2]){
printf(lcd_putc, "Dato valido");
}
}
}//while
}//main
Alguien porfavor me dice que error tengo? tira error en el tecla=getc(); pero no se porque gracias por su atencion.
-
Si necesitas tres bytes, las variables las debes definir como "char variable[3]" o incluso "char variable[4]" ya que el último byte almacenará el caracter \0 que indica el fin de una variable tipo string.
A su vez, creo que la definición debería ser
Es decir, cada variable definida como un array.
¿getc() no es para recibir datos por USART? Pregunto porque no utilizo CCS, más allá que sea o no la función adecuada deberías leer "la tecla" de esta forma
-
Gracias por tu ayuda ya lo he resuelto :mrgreen: