Sunteți pe pagina 1din 9

Profesor David Arturo Gutiérrez Begovich

IPN UPIITA Programación de Sistemas en Tiempo Real

Práctica 3: Uso de Subrutinas


Este documento te ayudará a realizar la Práctica 3, es acerca del uso de subrutinas, principalmente las
subrutinas de tiempo.

El circuito que debes armar es el mismo de la práctica 2.

Figura 1. Diagrama
Eléctrico para la práctica 3.
Profesor David Arturo Gutiérrez Begovich
IPN UPIITA Programación de Sistemas en Tiempo Real
Nota. Los datos van a ingresar a través del dip-switch conectado al puerto B. Es obligatorio usar
subrutinas anti-rebotes. Al iniciar el programa deben configurar los puertos y limpiarlos.

Lo que tiene que hacer el programa en conjunto con el circuito es lo siguiente:

1º. Esperar a que se oprima el Interruptor conectado a PORTC.0, y guardar en un registro de propósito
general (RPG) el Dato1 introducido a través del PORTB.

2º. Esperar a que se oprima el Interruptor conectado a PORTC.0, y guardar en otro RPG el dato2
introducido a través del PORTB.

3º. Esperar a que se oprima el Interruptor conectado a PORTC.0, y realizar la siguiente rutina (se
llama “luces” y comprende los pasos de la “a” a la “ag”):

a) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.

b) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.

c) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.

d) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.

e) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.


Profesor David Arturo Gutiérrez Begovich
IPN UPIITA Programación de Sistemas en Tiempo Real

f) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.

g) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.

h) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.

i) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.

j) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.

k) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.

l) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.


Profesor David Arturo Gutiérrez Begovich
IPN UPIITA Programación de Sistemas en Tiempo Real
m) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.

n) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.

o) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.

p) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.

q) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.

r) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.

s) Colocar el puerto D como:


Profesor David Arturo Gutiérrez Begovich
IPN UPIITA Programación de Sistemas en Tiempo Real

y llamar una subrutina con duración de 300ms.


t) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.

u) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.

v) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.

w) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.

x) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.

y) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.

z) Colocar el puerto D como:


Profesor David Arturo Gutiérrez Begovich
IPN UPIITA Programación de Sistemas en Tiempo Real

y llamar una subrutina con duración de 300ms.

aa) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.

ab) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.

ac) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.

ad) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.

ae) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.

af) Colocar el puerto D como:

y llamar una subrutina con duración de 300ms.


ag) Colocar el puerto D como:
Profesor David Arturo Gutiérrez Begovich
IPN UPIITA Programación de Sistemas en Tiempo Real

y llamar una subrutina con duración de 300ms.

3.1) Sumar el Dato 1 y el Dato 2.

Si el resultado generó acarreo, entonces realizar la siguiente rutina (se llama “parpadeo” y
comprende los pasos del número romano “i” al “x”):

i) Colocar el puerto D como:

y llamar una subrutina con duración de 500ms.

ii) Colocar el puerto D como:

y llamar una subrutina con duración de 500ms.

iii) Colocar el puerto D como:

y llamar una subrutina con duración de 500ms.

iv) Colocar el puerto D como:

y llamar una subrutina con duración de 500ms.

v) Colocar el puerto D como:

y llamar una subrutina con duración de 500ms.

vi) Colocar el puerto D como:


Profesor David Arturo Gutiérrez Begovich
IPN UPIITA Programación de Sistemas en Tiempo Real

y llamar una subrutina con duración de 500ms.

vii) Colocar el puerto D como:

y llamar una subrutina con duración de 500ms.

viii) Colocar el puerto D como:

y llamar una subrutina con duración de 500ms.

ix) Colocar el puerto D como:

y llamar una subrutina con duración de 500ms.

x) Encender el LED conctado en PORTC.7

3.1.1) Sacar el resultado de la suma por el PORTD.

Si el resultado NO generó acarreo, Simplemente sacar el resultado de la suma por el PORTD.

4º. Esperar a que se oprima el Interruptor conectado a PORTC.0, apagar el LED conectado a PORTC.7
y llamar a la rutina luces.

4.1. Realizar la resta del Dato1-Dato2

Si el resultado es NEGATIVO, deben mandar a llamar a la rutina parpadeo.


4.1.1. Sacar la magnitud del resultado de la resta por el PORTD

5º. Esperar a que se oprima el Interruptor conectado a PORTC.0, apagar el LED conectado a PORTC.7
y llamar a la rutina luces.

5.1. Realizar la multiplicación del Dato1*Dato2


Si el resultado es mayor a 8 bits, deben mandar a llamar a la rutina parpadeo.
Profesor David Arturo Gutiérrez Begovich
IPN UPIITA Programación de Sistemas en Tiempo Real
5.1.1. Sacar el resultado de la multiplicación por el PORTD.

6º. Esperar a que se oprima el Interruptor conectado a PORTC.0, apagar el LED conectado a PORTC.7
y llamar a la rutina luces.

6.1. Realizar la división del Dato1/Dato2


Si el resultado tiene residuo, deben mandar a llamar a la rutina parpadeo.
6.1.1. Sacar el resultado de la división por el PORTD.

(Para los siguientes pasos DEBEN tener la solución de las subrutinas de 3 variables.)

7º. Esperar a que se oprima el Interruptor conectado a PORTC.0, Cargar un nuevo dato 1.
8º. Esperar a que se oprima el Interruptor conectado a PORTC.0, Cargar un nuevo dato 2.
9º. Esperar a que se oprima el Interruptor conectado a PORTC.0, Cargar un nuevo dato 3.
10º. Indicar al profesor el tiempo que debe tardar la subrutina de 3 variables con estos valores
introducidos.
11º. Esperar a que se oprima el Interruptor conectado a PORTC.0
12º. Encender todos los LED’s.
13º. Cargar los valores de Dato1, Dato2 y Dato3 en la subrutina de 3 variables y llamarla.
14º. Apagar todos los LED’s.
15º. Cargar los valores de Dato1, Dato2 y Dato3 en la subrutina de 3 variables y llamarla.
16º. Regresar al paso 12.

S-ar putea să vă placă și