Autor Tema: PROBLEMA CON TECLADO MATRICIAL Y PIC 18F4550 (ME ESTA VOLVIENDO LOCO)  (Leído 2900 veces)

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

Desconectado cgardoni

  • PIC10
  • *
  • Mensajes: 4
PROBLEMA CON TECLADO MATRICIAL Y PIC 18F4550 (ME ESTA VOLVIENDO LOCO)
« en: 20 de Noviembre de 2016, 14:37:07 »
Hola como estan??
Antes de nada les agradezco por un monton de favores que me han hecho sin querer con mucha y muy buena informacion que he encontrado en este foro.
 
Ando complicado con el uso del teclado matricial en el 18f4550.
Hace muy poco que estoy con el tema de los PICs, solo unos meses, a partir de una materia de la facultad y la verdad que estoy muy enganchado con todo este mundo.
Para arrancar, y como no se assembler tome como libro "de cabecera" el "Compilador C Ccs Y Simulador Proteus Para Microcontroladores Pic", en el cual hice muchos ejercicios para el 16f87X en el compilador PIC c y los simule con bastante suerte en el PROTEUS
Luego de empaparme en la teoria, empece con la practica en prothoboard, armando esos ejemplos que hice, pero con la diferencia que por el hecho de ser mas grande y moderno, compre un 18f4550

La cuestion es que migrando un ejercicio con teclado matricial literalmente me estoy volviendo loco tratando de hacer andar el teclado en el 18f4550 en la simulacion de proteus, usando la libreria KBD.c que trae el compilador. En la simulacion el PIN RBO no se activa, me toma solo el 1 cuando apreto el 2 o el 3, y no hace nada mas.

Navegando en el foro vi q algunos tuvieron el mismo problema, tome info de esos post pero no he logrado superar este problema

Probe de todo:

- uso el puerto B para el teclado, configurando la libreria para esto
-probe con standard y fast io en el puerto b
-cambie el pin para la fila 1 del rb1 al rb0 en la libreria(tampoco arranca el RBO)
-uso el nopbaden, tanto desde el fuse como desde el registro config3h
para que too el puerto b arranque como digital
-use de las resistencias pullup del puerto b
-no use de las resistencias pullup del puerto b y poniéndole resistencias primero a las columnas y despues a todo....

pero naranja. :x

el codigo es:
Código: C
  1. [i]#include <18f4550.h>
  2. #fuses NOWDT, NOPROTECT, NOLVP,NOPBADEN
  3. #FUSES  PLL1,NOUSBDIV,CPUDIV1,INTRC_IO //PARA USAR RC INTERNO
  4. //#fuses XT
  5. #use delay (clock=8000000)
  6. #use standard_io(c)
  7. #use fast_io(b)
  8.  
  9.  
  10.  
  11. //#include <kbd_18f4550.c> //ESTA LIBRERIA TIENE LA DIFERENCIA
  12. //DE QUE LA FILA 1 SE CONECTA A RB0
  13. #include <kbd.c>//CON LA LINEA PARA USAR PUERTO B DESCOMENTADA
  14. //ESTO ES PARA QUE SE PUEDA USAR EL PUERTO C COMO SALIDA
  15. #define lcd_data_port getenv("sfr:portc")
  16. #include <lcd.c>
  17.  
  18.  
  19. #bit pbaden=0x300005.1
  20.  
  21. void main(){
  22. disable_interrupts(GLOBAL);
  23. setup_psp(PSP_DISABLED);
  24. setup_spi(SPI_SS_DISABLED);
  25. setup_oscillator(OSC_8MHZ|OSC_INTRC|OSC_PLL_OFF); //reloj interno
  26.  // setup_adc_ports(NO_ANALOGS);
  27.    char k;
  28.    pbaden=0;
  29.    int x;
  30.    lcd_init();
  31.    kbd_init();
  32.   set_tris_b(0b11111110);
  33. //  set_tris_b(0b11111101); //PARA USAR EL RB0 EN VEZ DE RB1 EN LA //FILA 1
  34.    port_b_pullups(TRUE);
  35.    lcd_putc("\fPRESIONE TECLA\n");
  36.    while (1)
  37.    {  k=kbd_getc();
  38.       x=k-48;
  39.       if (k!=0){if(k=='*')
  40.                   lcd_putc("\fTECLA??");
  41.             else
  42.                 printf(lcd_putc,"\fTECLA= %u",x);
  43.             delay_ms(1000);
  44.                }
  45.    
  46.    }//FIN DE WHILE
  47. }// FIN DE MAIN[/i]

espero que alguien me pueda dar una mano

adjunto el codigo y el esquema en proteus, el cual esta medio desprolijo por obvias toqueteadas que le pegue entre tante prueba :5]

Saludos

Cristian[/size]


 

anything