Está en la página 1de 20

DESARROLLO DE SISTEMAS

BASADOS EN MICRONTROLADORES
Y DSPs
Operaciones Control de FLujo
PIC24FJ128GA010

FACULTAD DE CIENCIAS DE LA ELECTRNICA


Ingeniera en Sistemas Automotrices, Verano 2015
Control de Flujo
El control de flujo es una parte importante de
la ejecucin del programa en un
microprocesador, con esto tenemos la
posibilidad de decidir o seleccionar que
instruccin se debe ejecutar.
Considerando que la ejecucin de un
programa es secuencial, con el control se
puede alterar dicha secuencia.

FACULTAD DE CIENCIAS DE LA ELECTRNICA


Ingeniera en Sistemas Automotrices, Verano 2015
Control de Flujo
Existen 2 tipos de instrucciones de control de
flujo.
Incondicionales
Realizan brincos de cdigo incondicionalmente.
Condicionales
Realizan brincos de cdigo condicional a que se cumpla
una condicin
El brindo puede ser de 1 o mas instrucciones

FACULTAD DE CIENCIAS DE LA ELECTRNICA


Ingeniera en Sistemas Automotrices, Verano 2015
Incondicionales
Estas instrucciones mandan la ejecucin de un
programa de forma incondicional de una
direccin a otra.
.text
..
_main: ..
..
..
goto __main

FACULTAD DE CIENCIAS DE LA ELECTRNICA


Ingeniera en Sistemas Automotrices, Verano 2015
Incondicionales
Instrucciones
BRA EXPR
BRA realiza un brinco incondicional a la etiqueta escrita
mediante EXPR. (tamao pequeo)
Esta etiqueta puede hacer referencia una direccin de
dentro de la ROM de hasta 12bits
GOTO EXPR
GOTO realiza un brinco incondicional a la etiqueta
escrita mediante EXPR. (tamao grande)
Esta etiqueta puede hacer referencia una direccin de
dentro de la ROM de hasta 23bits

FACULTAD DE CIENCIAS DE LA ELECTRNICA


Ingeniera en Sistemas Automotrices, Verano 2015
Ejemplo
Este es un programa dummy
.text
__reset: nop
__main: nop
nop
clr W0
clr W1
sfin: bra sfin ; Se quedara aqu por siempre

FACULTAD DE CIENCIAS DE LA ELECTRNICA


Ingeniera en Sistemas Automotrices, Verano 2015
Salto computado
La instruccin BRA tiene una forma alterna de
ser convocado, dando origen al salto
computado.
Cuando el BRA va acompaado de Wn, se brinca a
la direccin: Direccin actual + 2 + 2*Wn.
Resulta muy til para leer tablas pequeas de
seleccin o datos.

FACULTAD DE CIENCIAS DE LA ELECTRNICA


Ingeniera en Sistemas Automotrices, Verano 2015
Ejemplo
Es un ejemplo dummy
.text
__reset: nop
__main: nop
mov W0, #2 ; Colocamos un 2 en W0
bra W0 ; Brincara al 2+1 inst siguiente
goto func_0
goto func_1
goto func_2 ; Aqui llega el flujo del programa y va a func_2
goto __main
func_0 ..
func_1 ...
func_2

FACULTAD DE CIENCIAS DE LA ELECTRNICA


Ingeniera en Sistemas Automotrices, Verano 2015
Condicionales
Como su nombre lo indica, dependiendo de
una evaluacin se hace o no un salto, se
clasifican por:
Tipos de salto, de 1 instruccin o mltiples
instrucciones.
Tipo de prueba, test de un bit, test de una
bandera, test entre valores

FACULTAD DE CIENCIAS DE LA ELECTRNICA


Ingeniera en Sistemas Automotrices, Verano 2015
Condicionales
Como se vio anteriormente, la instrucciones
de evaluacin de 1bit, pertenecen a las
instrucciones de control de flujo
condicionales.
btss
btsc
Son condicionales, de salto de 1 instruccin y
test de 1bit.

FACULTAD DE CIENCIAS DE LA ELECTRNICA


Ingeniera en Sistemas Automotrices, Verano 2015
Condicionales
Comparacin entre registros W, son
condicionales de salto de 1 instruccin y test
entre valores.
CPSEQ Wx, Wy salta 1 si se cumple Wx == Wy
CPSGT Wx, Wy salta 1 si se cumple Wx > Wy
CPSLT Wx, Wy salta 1 si se cumple Wx < Wy

FACULTAD DE CIENCIAS DE LA ELECTRNICA


Ingeniera en Sistemas Automotrices, Verano 2015
Ejemplo
Comparacin de valores
.text
__reset: nop
__main: clr W0
setm W1
cpseq W0, W1
cpslt W0, W1
goto __main
Sfin: goto Sfin

Qu va a hacer el programa? Lo puedes


explicar?
FACULTAD DE CIENCIAS DE LA ELECTRNICA
Ingeniera en Sistemas Automotrices, Verano 2015
Condicionales
3ra variante del BRA, es un salto de mltiples
instrucciones, ya sea mediante el test de una
bandera o de teste de mltiples banderas.
El la instruccin de control de flujo mas
completa y por lo tanto su correcto manejo
resulta una poderosa herramienta.

FACULTAD DE CIENCIAS DE LA ELECTRNICA


Ingeniera en Sistemas Automotrices, Verano 2015
Condicionales
BRA C,Expr Brinca a Expr, si Acarreo
BRA GE,Expr Brinca a Expr, si Mayor o igual
BRA GEU,Expr Brinca a Expr, si Mayor o igual sin signo
BRA GT,Expr Brinca a Expr, si Mayor que
BRA GTU,Expr Brinca a Expr, si Mayor que sin signo
BRA LE,Expr Brinca a Expr, si Menor o igual
BRA LEU,Expr Brinca a Expr, si Menor o igual sin signo
BRA LT,Expr Brinca a Expr, si Menor que
BRA LTU,Expr Brinca a Expr, si Menor que sin signo
BRA N,Expr Brinca a Expr, si Negativo
BRA NC,Expr Brinca a Expr, si Sin acarreo
BRA NN,Expr Brinca a Expr, si No Negativo
BRA NOV,Expr Brinca a Expr, si No Desbordamiento
BRA NZ,Expr Brinca a Expr, si No Cero
BRA OV,Expr Brinca a Expr, si Desbordamiento

FACULTAD DE CIENCIAS DE LA ELECTRNICA


Ingeniera en Sistemas Automotrices, Verano 2015
Condicionales G y L
Test de multiples banderas
BRA GE,Expr Brinca a Expr, si Mayor o igual
BRA GEU,Expr Brinca a Expr, si Mayor o igual sin signo
BRA GT,Expr Brinca a Expr, si Mayor que
BRA GTU,Expr Brinca a Expr, si Mayor que sin signo
BRA LE,Expr Brinca a Expr, si Menor o igual
BRA LEU,Expr Brinca a Expr, si Menor o igual sin signo
BRA LT,Expr Brinca a Expr, si Menor que
BRA LTU,Expr Brinca a Expr, si Menor que sin signo

FACULTAD DE CIENCIAS DE LA ELECTRNICA


Ingeniera en Sistemas Automotrices, Verano 2015
Funcionamiento
El empleo de estas instrucciones es muy
simple.
Previo a ser usadas se debe realizar la operacin
Aritmtica de resta (tmb puede ser suma), no es
necesario que sea la instruccin previa.
Dependiendo de la pregunta que se desea saber
es la condicional, GE, GT, LE, LT, etc.

FACULTAD DE CIENCIAS DE LA ELECTRNICA


Ingeniera en Sistemas Automotrices, Verano 2015
Ejemplo
Empleando este tipo de condicionales
.text
__reset: nop
__main: clr W2
setm W1
sub W2, W1, W0
nop
nop
bra LT, Sfin
goto __main
Sfin: goto Sfin

FACULTAD DE CIENCIAS DE LA ELECTRNICA


Ingeniera en Sistemas Automotrices, Verano 2015
Condicionales SR
Estas solo checan 1 bandera
BRA C,Expr Brinca a Expr, si Acarreo
BRA N,Expr Brinca a Expr, si Negativo
BRA NC,Expr Brinca a Expr, si Sin acarreo
BRA NN,Expr Brinca a Expr, si No Negativo
BRA NOV,Expr Brinca a Expr, si No se Desbordo
BRA NZ,Expr Brinca a Expr, si No Cero
BRA OV,Expr Brinca a Expr, si se Desbordo

FACULTAD DE CIENCIAS DE LA ELECTRNICA


Ingeniera en Sistemas Automotrices, Verano 2015
Funcionamiento
Bastante similar a la estructura anterior, solo
que ahora la pregunta va sobre algunos bits
de SR (bits de estado del ALU).
Cualquier instruccin que altere los bits Z, N, C o
OV debe ser usada previamente al uso del BRA.
Se debe tener cuidado de la operacin(es) previas
para que la evaluacin sea exactamente de lo que
se busca.

FACULTAD DE CIENCIAS DE LA ELECTRNICA


Ingeniera en Sistemas Automotrices, Verano 2015
Ejemplo
Usando este tipo de condicionales
.text
__reset: nop
__main: clr W0
setm W1
and W0, W1, W2
bra Z, Sfin
goto __main
Sfin: goto Sfin

FACULTAD DE CIENCIAS DE LA ELECTRNICA


Ingeniera en Sistemas Automotrices, Verano 2015