Sei sulla pagina 1di 6

INICIO

CONF,
PB,PC,PD,INT,TMR1

PC <- 21

PD <- 12

RETARDO1

PC <- 11

PD <- 12

RETARDO2

PC <- 0C

PD <- 06

RETARDO1

PC <- 0A

PD <- 06

RETARDO2
SUB INT

RX <- PC

RY <- PD

PD <- 0C

PC <- 12

RETARDO3

PC <- 09

RETARDO3

PC <- 00

RETARDO3

PC <- 09

RETARDO3

PC <- 00

RETARDO3

PC <- 09

RETARDO3

PC <- 00

PC <-RX

PD <- RY

TMR1IF <- 0

RETURN
RETARDO1

RZ <- 00

RETARDO2

RZ <- RZ+1

NO

RZ=03

SI

RETURN

RETARDO2

TMR1L <- 00

TMR1H <- 00

NO

TMR1IF=1
SI

TMR1IF <- 0

RETURN
RETARDO3

TMR1L <- 5F

TMR1H <- 00

NO

TMR1IF=1
SI

TMR1IF <- 0

RETURN

Cálculos de Tiempo.

En este ejercicio se utilizó como dato inicial 0000 para el TMR1 utilizando el prescaler máximo
de 11=1:8 el cual su DF=8, f=5Mhz

Calculo de Tiempo Máximo del TMR1

DI=0000

Complemento a 2

FFFF - 0000 = FFFF --> FFFF + 1 = 10000 Hexadecimal

Hexadecimal a Decimal

65536

TRTMR 1=¿ CM x DF

4
TRTMR 1=(65536) x x DF
f
4
TRTMR 1=(65536) x x8
5 x 106
TRTMR 1=0,4194 segundos

lo que quiero 1
¿ Lazos= = 2.38 ≅ 3
lo que tengo 0.4194
Para lograr el retardo de 1 segundo se debe repetir tres veces el lazo del retardo2
Para el retardo de 0.3 segundos podemos tomar el retardo2 ya que es 0.4 aproximadamente

RETARDO3 DE LA INTERRUCION

Calculo de Tiempo Máximo del TMR1

DI=0000

Complemento a 2

FFFF – 5F00 = A0FF --> A0FF + 1 = A100 Hexadecimal

Hexadecimal a Decimal

41216

TRTMR 1=¿ CM x DF

4
TRTMR 1=(41216) x x DF
f
4
TRTMR 1=( 41216) x x8
5 x 106
TRTMR 1=0,26 segundos

-Explique los errores cometidos en el ejercicio realizado (si los tuvo) y la forma de
corregirlos.
Un error fue utilizar el mismo retardo para la subrutina de interrupción ya que al usar el mismo
se dañaba el retardo del programa principal por eso para mayor facilidad se creó un retardo
propio para la subrutina de interrupción de este ejercicio, otra opción también pudo haber sido
guardar las variables del retardo para poder utilizar el mismo en la subrutina de interrupción sin
que se dañe el retardo para el programa principal.
-En qué localidad de memoria debe estar el código de una subrutina de interrupción.
El código de la subrutina de interrupción debe estar desde la localidad 04, pero no se podrían
realizar ejercicios más grandes ya que no entrarían el programa principal en 3 líneas, es por
ello que usamos unos GOTO para engañar a la PC para que se vaya desde donde nosotros
queremos comenzar la subrutina de interrupción.

-Para qué sirve la instrucción RETFIE?


"RETFIE"(Return From Interrupt), Retorno de interrupción, sirve para que el flujo del programa
regresa al programa principal mediante el mismo mecanismo utilizado por las subrutinas
"CALL" convencionales, es decir recuperando la dirección de retorno previamente almacenada
en el STACK.
CONCLUSIONES:
 Usar subrutinas de interrupción en los ejercicios hace que sea complejo su
comprensión ya que la subrutina se atiende por medio de las banderas.
 Al utilizar el Timer 1 como temporizador se obtiene un retardo más exacto
 Necesitar más tiempo que el máximo que podemos tener usando los timer podemos
utilizar lazos para así lograr el tiempo necesario deseado mas exacto.

RECOMENDACIONES:
 Guardar y luego cargar las variables del programa principal en la subrutina de
interrupción para su correcto funcionamiento caso contrario no regresara el programa
donde se quedo
 Poner en cero siempre la bandera de interrupción luego de ser atendida caso
contrario el programa se quedara solo dentro de la subrutina de interrupción.
 Colocar la Instrucción RETFIE al final de la subrutina ya que es la encargada del retorno
de la subrutina

Potrebbero piacerti anche