SoloCodigo

Programación Específica => Microcontroladores => Mensaje iniciado por: Mars en Lunes 10 de Abril de 2006, 22:23

Título: Identificar Un Caracter Recivido Via Usart
Publicado por: Mars en Lunes 10 de Abril de 2006, 22:23
Holaa!!

Soy nuevo en el foro aunque llevo unos dias leyendolo. Este es mi primer post!

El problema que tengo es que tengo que recibir un caracter enviado desde un PC via serie RS232 por el interfaz USART. Una vez recibido el caracter, tengo que identificar cual es, ya que segun esto el programa reaalizara una tarea u otra.

 Lo que no se muy bien es como hacer esta identificacion, supongo que se tendra que hacer por comparación, pero no se como.

Si alguien tiene alguna idea o algun codigo que lo haga me resualtaria de gran ayuda...soy bastante nuevo en este tema.

Muchas gracias a todos y un saludo!!!

Marçal
Título: Re: Identificar Un Caracter Recivido Via Usart
Publicado por: Kain589 en Martes 11 de Abril de 2006, 00:15
Supongo que programas en ensamblador, la comparacion la puedes realizar haciendo una resta entre el caracter recibido y con el que quieres comparar y despues comprobar si el resultado es cero.
Esto puede ser util de cara a comparar entre unos pocos caracteres, si son muchos tendrias que intentar hacer algo con el direccionamiento pero este tema me suena solo de haber leido algo no se como podrias hacerlo, o hacerlo a lo bestia realizando cada resta y comprobando si es cero con cada caracter posible
Título: Re: Identificar Un Caracter Recivido Via Usart
Publicado por: Mars en Martes 11 de Abril de 2006, 10:51
Hola

Me olvidé decirlo, pero si, programo en ensamblador. Pues muchas gracias, la verdad esq creo que este sistema me va a ser util. Solo tengo que recibir un caracter y diferenciarlo entre tres posibles opciones, asi que al no ser muchas creo que sera un buen sistema!

De todos modos, si alguien tiene alguna otra opcion que me lo diga.

Muchas gracias!
Título: Re: Identificar Un Caracter Recivido Via Usart
Publicado por: Mars en Miércoles 19 de Abril de 2006, 12:57
Ahora me surge otra duda...

Una vez hecha la resta, cual es la mejor manera de comprovar si el resultado es cero? hay que comprovar bit a bit, o hay alguna forma de hacerlo con el registro entero??

saludos

Marçal
Título: Re: Identificar Un Caracter Recivido Via Usart
Publicado por: jpaler en Miércoles 19 de Abril de 2006, 20:07
con la instruccion btfsc f,b se salta si el bit b del registro f es cero.

sugerencia:
una ves conocido el lenguaje c, no me quedaron mas
ganas de seguir rompiendome el coco con el asm.
en c seria:
if (letra=='A')
  ...
else if (letra=='B')
  ...
Título: Re: Identificar Un Caracter Recivido Via Usart
Publicado por: Toph en Jueves 20 de Abril de 2006, 22:31
Citar
Una vez hecha la resta, cual es la mejor manera de comprovar si el resultado es cero? hay que comprovar bit a bit, o hay alguna forma de hacerlo con el registro entero??

debes utilizar la bandera Z del registro STATUS, que se pone a 1 si el resultado de una operacion es cero

 :) yo no utilizo resta para hacer las comparaciones, sino la funcion xor asi  :comp: :

Código: Text
  1. movlw 0x45&#59;supongamos que quiero saber si el numero es 45
  2. bcf STATUS,2&#59;borro la bandera Z (que indica si una operacion es cero)
  3. xorwf NUM,W&#59;realiza la funcion xor, si el numero es 45 da cero
  4. btfss STATUS,2&#59;verifica si se puso la bandera Z, si fue asi salta a la rutina igual
  5. goto DESIGUAL
  6. goto IGUAL
  7.  

espero te sirva  :)
saludos :hola:
Título: Re: Identificar Un Caracter Recivido Via Usart
Publicado por: Dextrom en Lunes 24 de Abril de 2006, 20:10
La mejor forma de saber si un dato es igual a otro es  como dice Tania  D  con su ejemplo publicado aqui, verificando en Z del estatus (bit 2 )  , otra es usando xor en ves de la resta ! es casi lo mismo.