SISTEMAS ELECTRONICOS DIGITALES

Anuncio
SISTEMAS ELECTRONICOS DIGITALES
DIRECCIONAMIENTO INDEXADO(RELATIVO DE
REGISTRO)
El salto indexado(Direccionamiento) es una técnica que permite
resolver problemas que puedan ser representados mediante una tabla de
verdad. En el PIC16F84 se basa en la utilización de la instrucción
addwf PCL,F, de este modo, la dirección del salto se consigue sumando al
contador de programa (PCL, registro base) un valor de desplazamiento
almacenado en el registro de trabajo W(registro indice).
A este valor de desplazamiento se le denomina también offset. Al ejecutar
la instrucción addwf PCL,F el registro base (PCL) debe estar cargado con la
primera dirección de la tabla, apuntado de esta manera al origen de ésta.
1
EJEMPLO
; Implementar una tabla de la verdad mediante el manejo de tablas grabadas
en ROM.
Por ejemplo, la tabla será de 3 entradas y 6 salidas tal como la siguiente:
C B A | S5 S4 S3 S2 S1 S0
-----------|--------------------------0 0 0 | 0 0 1 0 1 0
0 0 1 | 0 0 1 0 0 1
0 1 0 | 1 0 0 0 1 1
0 1 1 | 0 0 1 1 1 1
1 0 0 | 1 0 0 0 0 0
1 0 1 | 0 0 0 1 1 1
1 1 0 | 0 1 0 1 1 1
1 1 1 | 1 1 1 1 1 1
; (Configuración 0).
; (Configuración 1).
; (Configuración 2).
; (Configuración 3).
; (Configuración 4).
; (Configuración 5).
; (Configuración 6).
; (Configuración 7).
; Las entradas C, B, A se conectarán a las líneas del puerto A: RA2 (C), RA1
(B) y RA0 (A).
; Las salidas se obtienen en el puerto B:
; RB5 (S5), RB4 (S4), RB3 (S3), RB2 (S2), RB1 (S1) y RB0 (S0).
;
; ZONA DE DATOS ***********
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON &
_XT_OSC
LIST
P=16F84A
INCLUDE <P16F84A.INC>
ORG 0
; El programa comienza en la dirección 0.
Inicio
bsf
STATUS,RP0
clrf
TRISB
como salida.
movlw b'00011111'
como entrada.
movwf TRISA
bcf
STATUS,RP0
Principal
movf
andlw
addwf
Tabla
goto
goto
goto
goto
goto
PORTA,W
b'00000111'
PCL,F
; Acceso al Banco 1.
; Las líneas del Puerto B se configuran
; Las 5 líneas del Puerto A se configuran
; Acceso al Banco 0.
; Lee el valor de las variables de entrada.
; Se queda con los tres bits de entrada.
; Salta a la configuración adecuada.
Configuracion0
Configuracion1
Configuracion2
Configuracion3
Configuracion4
2
goto Configuracion5
goto Configuracion6
goto Configuracion7
Configuracion0
movlw
b'00001010'
goto ActivaSalida
Configuracion1
movlw
b'00001001'
goto ActivaSalida
Configuracion2
movlw
b'00100011'
goto ActivaSalida
Configuracion3
movlw
b'00001111'
goto ActivaSalida
Configuracion4
movlw
b'00100000'
goto ActivaSalida
Configuracion5
movlw
b'00000111'
goto ActivaSalida
Configuracion6
movlw
b'00010111'
goto ActivaSalida
Configuracion7
movlw
b'00111111'
ActivaSalida
movwf PORTB
salida.
goto Principal
; (Configuración 0).
; (Configuración 1).
; (Configuración 2).
; (Configuración 3).
; (Configuración 4).
; (Configuración 5).
; (Configuración 6).
; (Configuración 7).
; Visualiza por el puerto de
END
TABLAS DE DATOS
Una tabla de datos en ROM de programa es una lista de constantes que el
programa puede tomar mediante la instrucción RETLW
Instrucción "retlw"
la instrucción retlw (Return with Literal in W), funciona de forma
similar que return, produce el retorno de una subrutina pero con
un valor en el registro W. Dicha caracteristica es de suma
importancia cuando se desea acceder a tablas de datos en la
memoria de programa.
retlw k
3
donde "k" es el valor de la constante que se carga en el registro
de trabajo W.
Una de las mayores aplicaciones del manejo de la tabla de datos, es
la resolución de tablas de verdad grabadas en ROM.
Ejemplo.
4
5
DIRECTIVA DT (DEFINE TABLA)
Simplifica el uso de las instrucciones retlw, el uso repetitivo de instrucciones
retlw..
Ejemplo:
DT “papa”, 0x15,12
GENERA LAS INSTRUCCIONES
RETLW 73 ;”P” EN ASCCI
RETLW 77 ;
RETLW 73 ;
RETLW 77 ;
RETLW 15 ; _________
RETLW 0C ; ____________
BUCLES
Otra aplicación de los saltos condicionales son los bucles o lazos, que son
fragmentos de progamas que se repiten un número finito o infinito de veces,
se muestran los tipos principales.
A) salto incondicional, (de repetición infinita) a una posición anterior del
programa, sin posibilidad de tomar otro camino, utiliza la instrucción goto.
Ejemplo
Principal
…….
……….
goto principal
6
B) lazo con condición de prueba o testeo.
Aquí se usa una instrucción de prueba o testeo para controlar la ejecución del
lazo, la repetición es finita, sin precisar el número de veces que se repite.
Ejemplo.
espera
btfss porta,4 : se lee el pin 4 del puerto A Y HASTA QUE NO
VALE 1, NO SALE DEL LAZO
goto espera
ejemplo. (diga que hacen las siguientes instrucciones, COLOQUE LOS
COMENTARIOS)
NOESIGUAL
Movf porta,W
;
Sublw 56h
;
Btfss status,z
Goto NOESIGUAL
ES IGUAL
;
C) LAZO QUE SE REPITE UN NUMERO CONOCIDO DE VECES.
En combinación con goto se usan generalmente las instrucciones incfsz y
decfsz, para diseñar lazos que deben repetirse una cantidad conocida de
veces, decrementando o incrementando un registro hasta que se llega a un
determinado valor
Ejemplo:
MOVLW
NUMERODEVECES ; numero de veces que se repite el
lazo
MOVWF
CONTADOR ;se carga una posición de la memoria de datos
interna.
LAZO
; lo que sigue se ejecuta NUMERODEVECES.
……………..
……………….; instrucciones que se ejecutan tantas veces como se cargo
CONTADOR
DECFSZ
GOTO
CONTADOR,F ; se decrementa CONTADOR hasta que llegue
a 0
LAZO ; sino llega a 0, se repite el lazo
7
INSTRUCCIONES cblock, endc y #define
Cblock ( define un bloque de constantes).
endc
(end constant block)
el propósito de las instrucciones anteriores es asignar direcciones a muchas
etiquetas
ejemplo:
CBLOCK
0c
Centenas
; centenas ocupa 0c
Decenas
; decenas ocupa 0d
Unidades
; unidades ocupa 0e de RAM.
ENDC
#DEFINE
Define una etiqueta en substitución de texto.
Ejemplo.
#DEFINE
LED PORTB,4
bsf
LED
QUIZ 5
1.Diga cual es la posición de memoria y el banco del PCL, y cual es su
función.
2. ¿Cuando se debe utilizar un display de 7 segmentos de catodo o ánodo
común?
3. ¿Cuál es la diferencia entre las instrucciones RETURN y RETLW?
4.Diga cual es la diferencia entre salto incondicional y condicional
5. Proporcione un ejemplo (fragmento de progama) para cada caso de
salto condicional, incondicional y repetición conocida.
6.De dos ejemplos para utilizar tablas grabadas en ROM en su actividad
diaria.(las tablas)
7.CBLOCK es una______
a)etiqueta
b)instrucción
c)directiva
d)tabla
8
Descargar