Autor Tema: comando serout  (Leído 2061 veces)

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

Desconectado sandra_rcb2000

  • PIC12
  • **
  • Mensajes: 92
comando serout
« en: 31 de Julio de 2003, 22:07:00 »
hola
tengo una rutina con un teclado matriarcal 4*4 y quisiera generar una clave de cuatro digitos.
pero no se como ya que tengo varias dudas.
intentare explicarme un poco mejor,esta es la parte de la rutina  donde envio el valor de la tecla serout,b0,t300,[key] supongamos que en este momento key=1 entonces
boy a recibir en b0 un 1 en codigo ascii,ahora supongamos que la siguiente tecla que presiono es 0;
my pregunta es b0 va a cambiar su valor de 1 a cero o va a pasar a tomar el valor de 10.
sino toma el valor de 10 como lo ago ya que es esto mismo lo que pretendo presionar en el teclado1,2,3,4 y obtener una variable con el valor [1234].
el comando serout  envia el valor de [key] en codigo  ascii
puedo trabajar directamente con estos valores por ejemplo una igualdad if b0=1 then.... o tengo que convertir el valor ascii a su equivalente en decimal.
lei por ahi que para poder trabajar con la informacion transmityida en serie primero ay que convertirla a su equivalente en exadecimal y despues a su eqivalente en decimal es esto cierto.
espero puedan ayudarme ya que por mas pruevas que intento no logro la funcion para esta parte del programa que como ya mencione es convertir la informacion en serie del teclado en una clave de 4 digitos.

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1685
    • winpic800
RE: comando serout
« Respuesta #1 en: 01 de Agosto de 2003, 13:20:00 »
Si almacenas el valor del teclado en una variable Word por ejemplo podria ser asi .

key var word  ; valor del  buffer del teclado


; si lo quieres mandar en decimal
serout b0,t300,[key dig 3,key dig 2,key dig 1,key dig 0]  

; si lo quieres en ascii
serout b0,t300,[key dig 3+48,key dig 2+48,key dig 1+48,key dig 0+48]

; 48 es el  0 en ascii [ fijate que primero manda el digito mas significativo ] .



No se si esto aclara un poco tus dudas .

Desconectado Ledroj

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 159
RE: comando serout
« Respuesta #2 en: 02 de Agosto de 2003, 08:02:00 »
Hola, por lo que he entendido uno de tus problemas consiste en tener en una sola variable una secuencia de cuatro teclas pulsadas 1,2,3,4, para luego operar con ella en algun calculo.
A ver si este ejemplo te sirve de algo:
Partimos de que en estas variables estan contenidos los 4 digitos, a=1: b=2: c=3: d=4
El valor de la concatenacion de caracteres la queremos en x, es decir queremos en x=1234,
Aplicamos esta formula
a=a*1000: b=b*100: c=c*10
x=a+b+c+d
obtenemos en x el valor 1234 deseado. (por supuesto X,A,B variables word)
Tambien se puede hacer todo en un bucle FOR I = 1 to 4,  lees el valor de tecla en key, cuando I sea 1 multiplica key*1000 y pasalo a la variable del resultado, cuando I=2 key*100 y sumas key a la variable del resutado y asi sucesivamente ...
Espero que esto te pueda aclarar un poco.
Un saludo.


 

anything