Autor Tema: Ayuda con programa de cerradura electronica-mikroC  (Leído 4585 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado metalpatriot

  • PIC10
  • *
  • Mensajes: 4
Ayuda con programa de cerradura electronica-mikroC
« en: 07 de Junio de 2014, 20:21:06 »
Saludos, estoy iniciandome apenas en esto y estoy realizando apenas mi primer programa en mikroC, estoy haciendo un programa que me permita introducir una clave de 4 digitos, y mostrar por una LCD si la contraseña es correcta o no pero tengo problemas con esta ultima parte



unsigned short cnt=1; // contador
unsigned short pos=0;
unsigned char kp; //Keypad press
unsigned short clave[4];
unsigned short memoria[4]={'1','2','3','4'};  //clave temporal
char txt[6];

// LCD module connections
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;

sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// End LCD module connections

// Keypad module connections
char keypadPort at PORTD;
// End of keypad module connections

void main() {
ANSEL  = 0;
ANSELH = 0;
TRISD=0xFF;
Lcd_Init();
Keypad_Init();
Lcd_Cmd(_LCD_Clear);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Out(1, 1,"Introduzca su clave:");



do{
kp= 0;
clave[0]='0';clave[1]='0';clave[2]='0';clave[3]='0';

    do{
    kp = Keypad_Key_Click();
    }while (!kp);

    
    switch(kp){
      case  1: kp = '1'; break; // 1 -49
      case  2: kp = '2'; break; // 2 -50
      case  3: kp = '3'; break; // 3 -51
    //case  4: kp = 90; break; // -
      case  5: kp = '4'; break; // 4 -52
      case  6: kp = '5'; break; // 5 -53
      case  7: kp = '6'; break; // 6 -54
    //case  8: kp = 90; break; // X
      case  9: kp = '7'; break; // 7 -55
      case 10: kp = '8'; break; // 8 -56
      case 11: kp = '9'; break; // 9 -57
    //case 12: kp = 90; break; // Z
    //case 13: kp = 81; break; // c/on
      case 14: kp = '0'; break; // 0 -48
    //case 15: kp = 90; break; // Z
    //case 16: kp = 90; break; // Z
    default: kp= 0;       //HAY QUE CAMBIAR AQUI
    }
    
    clave[pos]=kp;
    
    Lcd_Cmd(_LCD_BLINK_CURSOR_ON);
    Lcd_Chr(2,cnt,kp);
    cnt++;
    pos++;


    if (cnt==5) {
    delay_ms(1000);    //AJUSTAR LUEGO ?????
    Lcd_Cmd(_LCD_Clear);

    if (clave[0]==memoria[0] && clave[1]==memoria[1] && clave[2]==memoria[2] && clave[3]==memoria[3]){
    Lcd_Out(2, 1, "bien");
    }
    }
}while(1);

}


Si alguien pudiera guiarme un poco y quizas hacer alguna sugerencia se lo agradezco.
Y me disculpo si no estoy usando el foro de manera adecuada, es el primer post pero espero estar mucho por este foro a partir de ahora je


Editado:
Bueno ya yo mismo he solucionado luego de buen rato leyendo y revisando, solo era cuestión de definir las variables de la clave y memoria como tipos char.
« Última modificación: 07 de Junio de 2014, 21:41:32 por metalpatriot »