Manejo De Puertos Y Tablas

  • October 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Manejo De Puertos Y Tablas as PDF for free.

More details

  • Words: 786
  • Pages: 10
Cómo sacar varios datos por un puerto? Hasta el momento hemos utilizado la instrucción BSF o BCF para Sacar un uno o un cero en determinado pin de un puerto, pero muchas ocasiones es necesario sacar varios al mismo tiempo. Esto se puede realizar mediante el uso de dos instruciones ya conocidas: MOVLW

B’11111111’

MOVWF

PORTB

Como se observa se carga el acumulador con la secuencia de bits deseados y luego se carga su valor al puerto B, de igual forma pudo ser el pueto A.

Cómo Leer un dato de un puerto? Las instruciones BTFSS y BTFSC se han utilizado para ver si en un determinado pin de un puerto existe un uno o un cero, pero en el caso que se quieran leer un grupo de instrucciones a la vez debe utilizarse una nueva instrucción (MOVF ). Por ejemplo supóngase que por medio de un diswitch se programa un codigo de 4 bits en los pines del pueto A de RA0 a RA3, entonces para poder leer el dato se deben utilizar las sigientes instrucciones. MOVF

PORTA,W

;Se carga el valor del dato en el ;registro del puerto A

ANDLW

B’00001111’ ;Está instrucción realiza una ;operación and entre el acumulador y el valor estupulado, con el fin de poder ;utilizar solo los 4 primeros bits que ;son los que nos interesa

Una vez realizado lo anterior el Acumulador queda con el valor del dato que nos interesa.

Cómo comparar si el valor contenino en un registro es el deseado?. En estos casos se utiliza la propiedad de la operción lógica Xor, la cual cuando los bits que copmpara son iguales da cero, una vez realizado esto solo falta verificar la bandera del Cero en el registro status. MOVLW

.2 ;Numero con que se quiere comparar

XORWF

REG,W ; Se realza la Xor con el registro y el dato se ;guarda en el acumulador

BTFSC

STATUS,Z ; Se mira labandera de cero en el registro ;de estado, si está es uno entonces el dato es ;igual, al deseado.

GOTO

IGUAL ;Salta a la etique ta de igual.

En caso de no ser igual (la bandera del cero=0) sigue por aquí.

Cómo realizar varias comparaciones.

Una forma es la siguiente: MOVLW

.2

; numero que quiera el usuario

XORWF

REG,W

BTFSC

STATUS,Z

GOTO

IGUAL1

MOVLW

.3 ; numero que quiera el usuario

XORWF

REG,W

BTFSC

STATUS,Z

GOTO

IGUAL2 ;en caso que sea igual

;en caso que sea igual

Caso en que W contenga el dato

En este caso debe guardar el dato en un registro axiliar primero y luego sí se prosigue a la comparación: MOVWF

REG_AUX

MOVLW

.2

XORWF

REG_AUX,W

BTFSC

STATUS,Z

GOTO

IGUAL1

MOVLW

.3 ; numero que quiera el usuario

XORWF

REG_AUX,W

BTFSC

STATUS,Z

GOTO

IGUAL2 ;en caso que sea igual

; numero que quiera el usuario

;en caso que sea igual

Manejo de tablas.

Las tablas en estos microcontroladores pueden considerarse como una rutina, ya que se llaman con la instrucción Call, sin embargo difieren un poco ya que no terminan exactamente con la Return sino con un conjunto de instruciones RETLW (Esta instrucción sale de la tabla (Rutina) pero antes de regresar carga al acumulador con un numerp específico. Cabe destacar que ante de llamar la tabla hay que cargar el acumulador con un numero que le indicara a la tabla cuantos posiciones salta. La tabla siempre comienza con la instrucción ADDWF PC,F La cual suma al contador de programa el numero dado al acumulador y de ahí que se produzca el salto. Ej:

PROGRAMA

MOVLW CALL

.3 ; VALOR DEL SALTO TABLA

Aquí va el resto del programa . . . TABLA

ADDWF

PC,F

RETLW

.5 ; Si se la suma 0 retorna 5 y sale

RETLW

.6 ; Si se la suma 1 retorna 6 y sale

RETLW

.7 ; Si se la suma 2 retorna 7 y sale

RETLW

.8 ; Si se la suma 3 retorna 8 y sale

RETLW

.9 ; Si se la suma 4 retorna 9 y sale

Sin embargo una tabla no siempre es una rutina, y en caso de ser llamada con un goto estás puden saltar a diferentes lugares de acurdo al valor cargado en el acumulador. Ej: PROGRAMA

MOVLW .3 GOTO TABLA

. . . TABLA

ADDWF GOTO GOTO GOTO GOTO GOTO . .

PC,F SITIO1 ; si suma 0 salta a SITIO1 SITIO2 ; si suma 1 salta a SITIO2 SITIO3 ; si suma 2 salta a SITIO3 SITIO4 ;si suma 3 salta a SITIO4 SITIO5 ;si suma 4 salta a SITIO5

Por el momento es importante saber que una tabla no debe sobrepasar los 255 elementos y que conviene siempre ponerlas lo más cerca del inicio del programa.

Related Documents

Manejo De Puertos Y Tablas
October 2019 15
Manejo De Tablas
May 2020 5
Puertos
October 2019 22
Puertos
October 2019 29