duda en programa de menu 18f452

Hola , buenas noches , espero y me puedan ayudar con algunas dudas que tengo .

estoy haciendo un menu con un pic 18f452 pero veo que no pasa de la primera pantalla en el lcd (puerto d), estoy usando un teclado de 4x3 como entrada en el puerto b, este es el programa que hice:

Código:
#include <18f452.h>    
#fuses NOWDT,HS, NOPROTECT, NOOSCSEN, NOBROWNOUT, PUT, STVREN
#use delay (clock=20000000)         //Fosc=20Mhz
// Direcciones en memoria
#BYTE TRISB = 0XF93
#BYTE PORTB = 0XF81
// Direcciones en memoria
#BYTE TRISD = 0XF95
#BYTE PORTD = 0XF83
#DEFINE use_portb_kbd TRUE  // definimos puerto B para teclado
#include <lcd.c>                   //libreria lcd por puerto D (default)
#include <kbd.c>                 //libreria teclado

void main()
{

char k;              //caracter teclado
int  x,i;             //tecla convertida a numero    
i=0;
  lcd_init();
  kbd_init();
  port_b_pullups(TRUE);        //Habilitacion Pull_up PUERTO B
 


   lcd_putc("\fVISCOSIMETRO\nCISR");
   delay_ms(2000);
   lcd_putc("\f1.- MEDIR");
   lcd_gotoxy(1,2);
   lcd_putc("2.- AJUSTAR");
while(i=0){                                         
               
      k=kbd_getc();        //lee el teclado
      x=k-48;              //Conversión numérica
      if(k!=0){//si se ha pulsado alguna tecla
      i=i++;}
     }
  
  switch (x) {
      case 1:
      lcd_gotoxy(1,1);
      lcd_putc("\fOPCION ");
      lcd_gotoxy(1,2);
      lcd_putc("MEDIR");
      delay_ms(3000);
     break;
      case 2:
      lcd_gotoxy(1,1);
      lcd_putc("\fOPCION ");
      lcd_gotoxy(1,2);
      lcd_putc("AJUSTE");
      delay_ms(3000);
      break;
         } 
}

y como ya dije no puedo escoger ninguna opcion porque simplemente el teclado pareciera que no funciona, alguien que me pueda orientar o corregir ???
 
Última edición por un moderador:
Atrás
Arriba