Autor Tema: Rutinas para teclado  (Leído 2208 veces)

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

Desconectado dunolin

  • PIC10
  • *
  • Mensajes: 2
Rutinas para teclado
« en: 12 de Julio de 2005, 12:16:00 »
Un saludo a todos. Estoy empezando con los PIC y tengo un problema que no se como resolver. Hice un teclado matricial de 4*4 y ya tengo la rutina para recibir los datos. Lo que quiero hacer es que los datos que se reciben se almacenen en algun registro para ser usados posteriormente como parametros para controlar un proceso (temperatura, dosificacion de una electrovalvula), lo que no se es como recibir los datos digitados y convertirlos a formato binario para luego ser almacenados en el registro. Me explico, el usuario digita las teclas 123, el microcontrolador debe interpretar esta secuencia de teclas como el numero ciento veintitres y logico para almacenarlo debe estar en formato binario 01111011. Otro problema es si el numero excede la capacidad de un byte (128), cómo hacer para almacenar dicho numero en dos o mas bytes. No se si tenga que utilizar algun tipo de codigo porque es imposible hacerlo por tablas, creo yo. (Estoy trabajando con 16f877 en assembler).

Gracias

Dunolin Enfurruñado

Desconectado RaDoN

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1498
RE: Rutinas para teclado
« Respuesta #1 en: 12 de Julio de 2005, 13:49:00 »
Se me ocurre una forma de hacerlo, claro que en C seria mucho mas sencillo, se trata de ir multiplicando por 10 y sumando. Pero en ASM va ser complicado, y por lo del tamaño y demas hay rutinas para multiplicar numeros de 2 bytes, 3, 4 ...

En la página de microchip creo recordar que tienes para hacer estos menesteres las rutinas.
Si juegas contra el mejor, pierdes como los demás.

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
RE: Rutinas para teclado
« Respuesta #2 en: 12 de Julio de 2005, 19:16:00 »
Hola, creo que lo mas simple seria que lo trabajes en tres registros... unidad, decena y centena...
eso solo te ocupara 4 bits, es decir medio byte por cada numero...
y si quieres, con swapf, podrias colocar dos numeros en un byte.... y el otro numero en 1/2 byte...

podrias ir cargando con indf y fsr dichos datos, de acuerdo al numero de las pulsaciones de las teclas...

suerte!

Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado fenix_jn

  • PIC18
  • ****
  • Mensajes: 418
RE: Rutinas para teclado
« Respuesta #3 en: 13 de Julio de 2005, 23:33:00 »
Otra opcion seria q escrbieses una rutina de lectura de teclado y el resultado final lo direcciones con el FSR y el INDF, de tal forma que el FSR apunte a otra direccion (a la siguiente) por cada vez q llames el teclado y el resultado lo guardes en el INDF... puede q suene un poco raro pero miralo de esta forma:

Codigo:

indf       equ 00h
fsr        equ  04h
unidad  equ  1Ch
decena equ  1Dh
centena equ 1Eh
resl         equ 1Fh  ;Variable de salida del key_rd
key_rd               ;Rutina del teclado aki, no la pongo porq no se q configuracion tiene el tuyo...

main                  ;Declaras tus puertos, valores iniciales bla bla...
         movlw         unidad
         movwf         fsr                  ;Apuntamos al primer registro a llenar...
nx_r  call              key_rd
         movf            resl, w
         movwf         indf
         incf              fsr, f
         movf            fsr, w
         xorlw           centena+1         ;Verifica si ya llegamos al ultimo registro a llenar
         btfss            status, z
         goto             nx_r                  ;NO: Sigue con la lectura del tecldo
         goto             <alguna rutina q haga algo con los valores...> ;SI: Va a la rutina de tratamiento de datos o lo q siga despues
         end