You are on page 1of 4

;

****************************************************************

;
;

******** IMPLEMENTACION DE TAREAS PERIODICAS


******** TRABAJANDO EN FORMA CONCURRENTE - FCFS

;
;

****************************************************************
****************************************************************

LAS INTERRUPCIONES

UTILIZA EL TEMPORIZADOR 0

;
;

****************************************************************
****************************************************************

;
;
;

BANDERAS DE INDICACION DEL ESTADO DE LAS TAREAS PERIODICAS,


SE ENCUENTRAN DENTRO DEL ESPACIO DIRECCIONABLE BIT A BIT.
BYTE 20H

IMPLEMENTA UN MAXIMO DE 4 TAREAS PERIODICAS

=>

ACTIVADA.

FT0
FT1
FT2
FT3

EQU
EQU
EQU
EQU

00H
01H
02H
03H

;BIT
;BIT
;BIT
;BIT

****************************************************************

;
;

TEMPORIZADORES DINAMICOS Y ESTATICOS DE LAS TAREAS


PERIODICAS

TD0
TE0

EQU
EQU

30H
31H

;TEMPORIZADOR DINAMICO Y
;TAREA 0

ESTATICO DE LA

TD1
TE1

EQU
EQU

32H
33H

;TEMPORIZADOR DINAMICO Y
;TAREA 1

ESTATICO DE LA

TD2
TE2

EQU
EQU

34H
35H

;TEMPORIZADOR DINAMICO Y
;TAREA 2

ESTATICO DE LA

TD3
TE3

EQU
EQU

36H
37H

;TEMPORIZADOR DINAMICO Y
;TAREA 3

ESTATICO DE LA

;
;

****************************************************************
****************************************************************

***

****************************************************************

SUBRUTINA DE ATENCION AL RESET

*********
*********

EXTERNAS SE ENCUENTRAN LIBRES.

0H,
1H,
2H,
3H,

PARA LA GENERACION DE TICS

0
POSICION
POSICION
POSICION
POSICION

=>

EN ESPERA

20H.0
20H.1
20H.2
20H.3

VECTORES DE INTERRUPCION *

ORG

0000H

LJMP

INICIAL ;SALTA

A LA SUBRUTINA DE INICIALIZACION

****************************************************************

SUBRUTINA DE ATENCION A LA
ORG

0003H

LJMP

EXT0

INTERRUPCION EXTERNA 0

;SALTA A LA SUBRUTINA DE ATENCION A LA


;INTERRUPCION EXTERNA 0

****************************************************************

SUBRUTINA DE ATENCION A LA
ORG

000BH

LJMP

TEMP0

INTERRUPCION DEL TEMPORIZADOR 0

;SALTA A LA SUBRUTINA DE ATENCION AL


;TEMPORIZADOR 0

****************************************************************

SUBRUTINA DE ATENCION A LA
ORG

0013H

INTERRUPCION EXTERNA 1

LJMP

EXT1

;SALTA A LA SUBRUTINA DE ATEMCION A LA


;INTERRUPCION EXTERNA 1

****************************************************************

SUBRUTINA DE ATENCION AL PUERTO SERIAL


ORG

0023H

LJMP

SERIAL

;SALTA A LA SUBRUTINA DE ATENCION AL


;PUERTO SERIAL

;
;

****************************************************************
****************************************************************

INICIALIZACION DEL SISTEMA


ORG

2000H

INICIAL MOV
MOV

TE0,#01H
TD0,TE0

; Inicializa los temporizadores software 0 con el


; periodo de la tarea 0 en Tics

MOV
MOV

TE1,#02H
TD1,TE1

; Inicializa los temporizadores software 1 con el


; periodo de la tarea 1 en Tics

MOV
MOV

TE2,#04H
TD2,TE2

; Inicializa los temporizadores software 2 con el


; periodo de la tarea 2 en Tics

MOV
MOV

TE3,#08H
TD3,TE3

; Inicializa los temporizadores software 3 con el


; periodo de la tarea 3 en Tics

MOV

SP,#40H

;UBICACION DE LA PILA

MOV

TMOD,#22H

; Configura los temporizadores en modo 2 y los


; habilita para que siempre operen

MOV
MOV

TL0,#0A0H
TH0,#0A0H

; Reloj de tiempo real, posee una base de tiempo de


; 10 ms para un cristal de 12MHz

MOV

IP,#10H

; Establece los siguientes niveles de prioridad


; entre las distintas fuentes de interrupcin
; Puerto serie, Ext0, Temp0, Ext1, Temp1

MOV

IE,#10000110B

; Habilita todas las fuentes de interrupcin

MOV

TCON,#55H

; Activa los temporizadores y configura las


; interrupciones externas para que se activen
; por flanco

;
;

****************************************************************
****************************************************************

PROGRAMA PRINCIPAL

;
;

ES UN CICLO INFINITO QUE SE ENCARGA DE EJECUTAR


LAS TAREAS PERIODICAS

PPAL0

JNB
LCALL

FT0,PPAL1
TAREA0

;EJECUTA LA TAREA 0 SIEMPRE QUE LA


;BANDERA DE EJECUCION ASOCIADA A
;ESTA SE ENCUENTRE ACTIVADA

PPAL1

JNB
LCALL

FT1,PPAL2
TAREA1

;EJECUTA LA TAREA 1 SIEMPRE QUE LA


;BANDERA DE EJECUCION ASOCIADA A
;ESTA SE ENCUENTRE ACTIVADA

PPAL2

JNB
LCALL

FT2,PPAL3
TAREA2

;EJECUTA LA TAREA 2 SIEMPRE QUE LA


;BANDERA DE EJECUCION ASOCIADA A
;ESTA SE ENCUENTRE ACTIVADA

PPAL3

JNB
LCALL

FT3,PPAL0
TAREA3

;EJECUTA LA TAREA 3 SIEMPRE QUE LA


;BANDERA DE EJECUCION ASOCIADA A
;ESTA SE ENCUENTRE ACTIVADA

SJMP

PPAL0

;
;

****************************************************************
****************************************************************

***

SUBRUTINAS DE ATENCION A LAS INTERRUPCIONES

****************************************************************

PROCEDIMIENTO ASOCIADO A LA TAREA PERIODICA 0

TAREA0

PUSH
PUSH

ACC
PSW

CLR

FT0

INC

R0

POP
POP

PSW
ACC

;GUARDA EL CONTEXTO DEL MICROCONTROLADOR

;RECUPERA EL CONTEXTO DEL MICROCONTROLADOR

RET
;

****************************************************************

PROCEDIMIENTO ASOCIADO A LA TAREA

TAREA1

PUSH
PUSH

ACC
PSW

CLR

FT1

INC

R1

POP
POP

PSW
ACC

PERIODICA 1

;GUARDA EL CONTEXTO DEL MICROCONTROLADOR

;RECUPERA EL CONTEXTO DEL MICROCONTROLADOR

RET
;

****************************************************************

PROCEDIMIENTO ASOCIADO A LA TAREA

TAREA2

PUSH
PUSH

ACC
PSW

CLR

FT2

INC

R2

POP
POP

PSW
ACC

PERIODICA 2

;GUARDA EL CONTEXTO DEL MICROCONTROLADOR

;RECUPERA EL CONTEXTO DEL MICROCONTROLADOR

RET
;

****************************************************************

PROCEDIMIENTO ASOCIADO A LA TAREA

TAREA3

PUSH
PUSH

ACC
PSW

CLR

FT3

INC

R3

POP
POP

PSW
ACC

PERIODICA 3

;GUARDA EL CONTEXTO DEL MICROCONTROLADOR

;RECUPERA EL CONTEXTO DEL MICROCONTROLADOR

RET
;

****************************************************************

PROCEDIMIENTO ASOCIADO A LA INTERRUPCION EXTERNA 0

EXT0

PUSH
PUSH

ACC
PSW

;GUARDA EL CONTEXTO DEL MICROCONTROLADOR

POP
POP

PSW
ACC

;RECUPERA EL CONTEXTO DEL MICROCONTROLADOR

RETI

****************************************************************

PROCEDIMIENTO ASOCIADO A LA INTERRUPCION DEL TEMPORIZADOR 0

Actualiza los temporizadores software y activa las banderas de ejecucin

TEMP0

DJNZ

TD0,TEM01

MOV
SETB

TD0,TE0
FT0

DJNZ

TD1,TEM02

MOV
SETB

TD1,TE1
FT1

DJNZ

TD2,TEM03

MOV
SETB

TD2,TE2
FT2

DJNZ

TD3,TEM04

MOV
SETB

TD3,TE3
FT3

TEM01

TEM02

TEM03

; Recargar temporizador dinmico 0 con temporizador


; esttico 0 y habilitar la bandera de ejecucin de la
; tarea 0

; Recargar temporizador dinmico 1 con temporizador


; esttico 1 y habilitar la bandera de ejecucin de la
; tarea 1

; Recargar temporizador dinmico 2 con temporizador


; esttico 2 y habilitar la bandera de ejecucin de la
; tarea 2

; Recargar temporizador dinmico 3 con temporizador


; esttico 3 y habilitar la bandera de ejecucin de la
; tarea 3

TEM04

RETI

****************************************************************

PROCEDIMIENTO ASOCIADO A LA INTERRUPCION EXTERNA 1

EXT1

PUSH
PUSH

ACC
PSW

;GUARDA EL CONTEXTO DEL MICROCONTROLADOR

POP
POP

PSW
ACC

;RECUPERA EL CONTEXTO DEL MICROCONTROLADOR

RETI
;

****************************************************************

PROCEDIMIENTO ASOCIADO A LA INTERRUPCION DEL PUERTO SERIAL

SERIAL

PUSH
PUSH

ACC
PSW

;GUARDA EL CONTEXTO DEL MICROCONTROLADOR

POP
POP

PSW
ACC

;RECUPERA EL CONTEXTO DEL MICROCONTROLADOR

RETI
;

****************************************************************
END

;
;

****************************************************************
****************************************************************

;
;
;

DIEGO MARTINEZ C.
DEPARTAMENTO DE AUTOMTICA Y ELECTRNICA
U.A.O.

;
;

****************************************************************
****************************************************************

You might also like