Вы находитесь на странице: 1из 37

Modelos de Programación.

Modelos de Programación.
Se le da el nombre de Modelo de Programación a programas estándar que
se repiten en las diferentes aplicaciones de microprocesadores y que dan
solución a cada sección de la aplicación.

Estos modelos pueden usarse como base para integrarlos en el diseño de


programas y forman parte de una metodología básica de diseño de
Software.

Modelos típicos:

• Programas de lazo o iterativos.


• Retardos de Tiempo.
• Series de Números.
• Tablas de Búsqueda.
• Algoritmos Aritméticos
Lazos.
Un programa de lazo, iterativo o repetitivo es una estructura
cuyo propósito es ejecutar repetidamente la tarea para la cual
fue creado.
Estructura lógica, Lazo

Inicio

Secciones: Tarea
Inicio.
Control
Tarea.
Control. Ultima
ejecución?
Conclusiones.

Conclusiones

Fin.
SECCIONES.

Inicio:
Establece las condiciones iniciales tales como, valores de variables, numero
de veces de ejecución, restablecimiento de buffers, contadores, banderas
indicadoras de operación, etc.

Tarea:
Efectúa el objetivo o propósito del programa, retardo de tiempo, algoritmo
aritmético o lógico, manipulación de datos, conversión de código, secuencia,
etc.

Control:
Actualiza el contador de número de veces de ejecución, obliga al lazo a la
ejecución repetitiva de la tarea y finalmente a la interrupción de esta.

Conclusiones:
Resume los resultados del lazo y los prepara para generarlos como
conclusión inmediata o como resultado para otros programas.
Sección de Control y concepto de controlador usando un contador ascendente o
descendente.

Control

Ultima recicla
ejecución?

continúa

Contadores?
A+1 A Ix+1 Ix M+1 M
B+1 B Iy+1 Iy
Contador ascendente.

Contador descendente.
contador+1 contador

compara al contador con el


contador-1 contador valor preestablecido

contador = 0
contador =
valor preestablecido
continúa

continúa
CONTADOR DE NUMERO DE VECES DE EJECUCION.

Contador descendente. Contador ascendente.

Establecer valor del contador+1 contador


contador
compara al contador con el
valor preestablecido
contador-1 contador

Cicla
contador = 0 contador = Cicla
valor preestablecido
si
Continúa con si
sección de Continúa con
conclusiones sección de
conclusiones
CONTADOR DE NUMERO DE VECES DE EJECUCION EN PIC.

Contador ascendente, usando una


Contador descendente, comparación mediante resta y
con BTFSC posteriormente un BTFSC.

Establecer valor del contador+1 contador


contador
Resta el contador al valor
preestablecido.
contador-1 contador

Cicla
BTFSC
contador = 0 BTFSC Cicla
contador = 0
si
GOTO si
Continúa con
Continúa con sección de GOTO
sección de conclusiones
conclusiones
Problema:
Usando un programa de lazo, idear un programa que cuente la cantidad de
bits igual a 1 de un registro.
Establecer como contador del numero de veces de ejecución al registro
indice IX, y como contador de bits igual a 1 al acumulador B.
Retardos de tiempo.

Un programa de retardo de tiempo es un programa de Lazo cuyo único


objetivo es efectuar un retardo de tiempo.

Lo anterior se logra ejecutando repetidamente alguna instrucción “inocua”,


por ejemplo incrementar o decrementar algún registro.

Cada instrucción tiene un “retardo de ejecución intrínseco”, resultado de la


multiplicación del numero de ciclos de maquina de la instrucción por la
duración de cada ciclo de maquina.

A su vez la duración de cada ciclo de maquina esta determinada por la


frecuencia de operación del MPU.
Retardo

IX FFFF

Ix - 1 Ix

BNE

Fin.
Retardo

A XX

IX FFFF

Ix - 1 Ix

BNE

A-1 A

BNE

Fin.
Retardos de tiempo en PIC.

Retardo con
un registro
de proposito
general

W FF

(W) 20

(20)-1 20

GO TO

BR o NOP
Retardos de tiempo en PIC dos registros anidados.

Retardo con
2 registros
de proposito
general

W FF

(W) 21

(W) 20

(20)-1 20

GO TO

(21)-1 21

GO TO

BR o NOP
SERIES DE NUMEROS.
TABLAS DE BUSQUEDA.

Se le da el nombre de Tabla de Búsqueda o look up table a un método


numérico,
consistente en la tabulación absoluta de variables y resultados de la
operación de estas variables,
en la que el resultado de una operación simplemente se busca en la tabla,
en vez de efectuar tal operación,
o ejecutar un algoritmo de manipulación numérica para obtener el resultado.
TABLA DE BUSQUEDA.

Variable Variable
independiente. dependiente.
Variables a operar. Resultado de la
operación.
°C °F
ángulo Función
trigonometrica.
Aplicaciones Típicas:

• Tablas de multiplicar. • Linearización de funciones.


• Logaritmos. • Interpolación.
• Funciones trigonométricas. • Operaciones de
• Conversión de código. procedimientos complejos.
• Conversión de grados • Generación de caracteres
centígrados a fahrenheit. alfanuméricos.
• Proceso de voz e imagen. • Tablas de diagnostico.
• Funciones booleanes.
Tabla de conversión de 900 0
Hexadecimal a Decimal.
901 1
902 2
903 3
904 4
905 5
906 6
907 7
908 8
909 9
90A 10
90B 11
90C 12
90D 13
90E 14
90F 15
Recomendación de uso de Tablas de Búsqueda como
Modelo de Programación.

• Una Tabla se define como un listado de datos, generalmente continuo, sin


restricciones de longitud y contenido.
• De la Tabla se conocen las direcciones final e inicial.
• Para manipular los datos de la tabla se recomienda leer y escribir en modo
indexado.
• Para tener acceso al siguiente dato incrementar el registro índice.
• El control de numero de veces de ejecución se efectúa usando como dato de
comparación la direccion final y el contenido del registro índice.
Manipulación de datos de una Tabla.

Ix 0800
TABLA

Dirección Contenido LEER

0800 dato A (Ix+00)


ACCA LDAA Indexado

dato ESCRIBIR
A (Ix+00)
STAA Indexado
Uso de una Tabla para conversión de un numero en Hexadecimal a Decimal.

Ejemplo:
900 0 Convertir un 0D a Decimal.
901 1
902 2
903 3 Zona donde esta
Ix 0900 la Tabla.
904 4
905 5
906 6 # Hex D 0D ACCB
907 7
D + Ix Ix 0900 + 0D = 090D
908 8
909 9 A ( Ix + 00 )
90A 10
90B 11
90C 12
90D 13
90E 14
13 ACCA
90F 15
Sacar una Tabla por un Puerto.

Inicio de la Tabla.
Dirección de Ix 0900
inicio. 900 Dato 0
901 Dato 1 LEER
ACCA
902 Dato 2 A (Ix+00)
903 Dato 3 LDAA Indexado
904 Dato 4
905 Dato 5 ESCRIBIR
906 Dato 6 A (00)
907 Dato 7 STAA Directo.
Puerto
908 Dato 8
909 Dato 9
90A Dato 10
90B Dato 11
90C Dato 12
90D Dato 13 Habilitar el puerto como salida, para ir por el
Dirección
90E Dato 14 siguiente dato incrementar el Ix, controlar
final. 90F Dato 15 mediante la direccion final, considerar un retado
de tiempo para cada dato.
Transfiere una tabla.
Inicio de la Tabla.
Ix 0900

Iy 0950 Destino de la Tabla.

Dirección de
inicio. Primer dato LEER
ACCA
A (Ix+00)
LDAA Indexado
en X

Dirección
final. Ultimo dato

ESCRIBIR

Dirección de A (Iy+00)
destino. STAA Indexado en Y

Para leer el siguiente dato incrementar el Ix,


para escribir el siguiente dato incrementar Iy,
controlar mediante la direccion final.
Programas de Tablas Propuestos.

1. Programa que borra una tabla.


2. Programa que escribe una tabla ascendente.
3. Programa que inserta un dato en una tabla.
4. Programa que transfiere una tabla.
5. Programa que saca una tabla por un puerto, usando el
mismo retardo para cada dato.
6. Programa que saca una tabla por un puerto, usando un
retardo diferente para cada dato, el retardo correspondiente
a cada dato deberá formar parte de la tabla.
7. *Programa que carga una tabla que entra por un puerto.
SUBRUTINAS.
Se le da el nombre de Subrutina a un programa que cumple alguna tarea
específica y que puede ser ejecutada una o mas veces por o desde el Programa
Principal.

Programa Subrutina
Principal

Instrucciones
de la
Subrutina

Instrucciones
del P.P.
Retornar al P.P.
Ir a la subrutina

Fin o
Recicla
Las instrucciones asociadas a las Subrutinas son BSR instrucción en modo
relativo Branch to Subroutine, JSR instrucción en modo extendido o indexado
Jump to Subroutine y RTS instrucción en modo inherente Return from
Subrutine.

Programa Subrutina
Principal

Instrucciones
de la
Subrutina

Instrucciones
del P.P.
RTS
JSR o BSR

Fin o
Recicla
Al ir a ejecutar una subrutina se presentan cambios en el contenido del PC
Contador del Programa.

Programa
Principal

Subrutina

JSR o BSR
PC

Dirección de la RTS
siguiente
instrucción del P.P. Fin o
Recicla
Al ir a ejecutar una subrutina se presentan cambios en el contenido del PC
Contador del Programa.
Guarda el contenido
del PC en el Stack
PCH Stack
Programa PCL
Principal

Subrutina

JSR o BSR
PC

Dirección de la RTS
siguiente
instrucción del P.P. Fin o
Recicla
Al ir a ejecutar una subrutina se presentan cambios en el contenido del PC
Contador del Programa.
Guarda el contenido
del PC en el Stack
PCH Stack
Programa PCL
Principal

?
Subrutina

JSR o BSR
PC

Dirección de la RTS
siguiente
instrucción del P.P. Fin o
Recicla
Al ir a ejecutar una subrutina se presentan cambios en el contenido del PC
Contador del Programa.
Guarda el contenido
del PC en el Stack
PCH Stack
Programa PCL
Principal

Subrutina

JSR o BSR PC
PC
Carga el PC con
la dirección de la
Dirección de la primer instrucción RTS
siguiente de la subrutina.
instrucción del P.P. Fin o
Recicla
Al ir a ejecutar una subrutina se presentan cambios en el contenido del PC
Contador del Programa.
Guarda el contenido
del PC en el Stack
PCH Stack
Programa PCL
Principal

Subrutina

JSR o BSR PC
PC
Dirección de la
primer instrucción
Dirección de la de la subrutina. RTS
siguiente
instrucción del P.P. Fin o
Recicla
?
Al ir a ejecutar una subrutina se presentan cambios en el contenido del PC
Contador del Programa.
Guarda el contenido
del PC en el Stack
PCH Stack
Programa PCL
Principal

Subrutina

JSR o BSR PC
PC
Dirección de la
primer instrucción
Dirección de la de la subrutina. RTS
siguiente
instrucción para Fin o
continuar Recicla
ejecutando el P.P.
PC
PCH Stack
Recobra el anterior
contenido del PC del
PCL
Stack
Dado que en la ejecución de ambos, Programa Principal y Subrutina, se utilizan
los registros del MPU como herramienta de manipulación, es necesario efectuar
un diseño de la subrutina considerando proteger la información que se mantiene
en los registros del MPU.

Programa
Principal
Subrutina
Instrucciones
previas del P.P. Guardar contenido
Establecimiento de registros
de paramentos Instrucciones
de la subrutina de la
JSR o BSR Subrutina

Recobrar contenido de
registros
Instrucciones
posteriores del Retornar al P.P.
P.P.
Fin o
Recicla
Problema:
a) Convertir en subrutina el programa de retardo de tiempo que usa el IX.
b) Convertir en subrutina el programa de retardo de tiempo que usa el IX y el
Acumulador A.
Sub
Retardo

Programa
IX Maux
Principal

JSR o BSR IX FFFF

SWI Ix - 1 Ix

BNE

IX Maux

RTS
SUB
Programa Retardo
Principal

IX Maux
A XX

IX FFFF
JSR o BSR
Ix - 1 Ix
SWI

BNE

A-1 A

BNE

IX Maux

RTS

Вам также может понравиться