Anda di halaman 1dari 53

UNIVERSIDAD AUTONOMA METROPOLITANA

UNIDAD IZTAPALAPA.

. .

PROYECTO TERMINAL.

"APLICACION DEUN MICROPROCESADOR 80188 PARA EL CONTROL DEUN HORNO DE CERAMICA".

ANDRADE GONZALEZEDGAR AWANDRO.


ZAYOLA OLVERA RICARDO JESUS.

PROF. M.C. AGUSTN SUAREZ FERNANDEZ

FIRMA DEL ASESOR

M.C. AGUSTIN SUAREZ FERNADEZ

INDICE
ANTECEDENTES............................................................. pag . 3 PLANTEAMIENTO DEL PROBLEMA.... ............................... pag. 3 TERMOPARES ................................................................ Paga 4 DATOS GENERALES DEL TERMOPAR ................................ p a g ~ 5 UNIONES INTERMEDIAS................................................... Pa& 8 MEDICION CON UN SOLO TERMOPAR................................ Paga 6 CONPENSACION DE LA "UNION FRIA" (COLD JUNCTION) ...p ag . 8 PRINCIPIO DEL CJC........................................................ Pa& 3 LT1025 COMPENSADORDE"UNION FRIA" DEL ......................... TERMOPAR DE MICROPODER ................................................ 9 ECUACIONES PARA EL TRANSDUCTOR TERMOPAR ............. ag. 13 p ECUACIONES DE APROXIMACION LINE AL............... ............pg 12 ~ . TECNICAS DE LINEARIZACION ...............................................
13

DESARROLLO DEL PROYECTO ............................................. g. 13 DISENO DEL CIRCUITO DE ACOPLO DE SEFIAL ..................p Rg. 14 OBTENCION DE LAS ECUACIONES DE LINEARIZACION ........p ag. 15 PROCEDIMIENTO DE OBTENCION ....................................... p ag. 15 CONSTRUYENDO LA GRAFICA LINEAL................................ p ag. 16 OBTENCIONDE LA APROXIMACION EN LAS ECUACIONES.,,,,,,,.,,.,,. DEL TERMOPAR TIPO J........................................................ 13 ECUACIONES DE LA INTERFASE ANALOCICA ...................... p ag . 20
LAS ECUACIONES PROGRAMABLES .......................,.,.,...............pag. 21

DESARROLLO DEL PROGRAMA.. .............................................

22

PROGRAMA .................................................................... ,.,pag, 24


ANEXO A .........................................................................pag. 25

ANTECEDENTES.
Se aplica el conocimiento yusodelmicroprocesador para el controlde un hornodeceramica,
80188 de lafamilia de INTEL,

el siguienteproyectoestaencaminado

ala el control

implementacin del control y de su interface condichohorno,pararealizar propiamente dicho. La interface opera en una region no-lineal, por torna un tanto ms al software,

lo que el problema se

PLANTIZAMENTO DEL PROBLEMA.


Se disefiar unsistemaparamedirtemperaturas centgrados, con las opcionesdecalentar desde O gradoshasta 500 grados
y continuarhasta

a unaciertatemperatura

llegar a otra, Las mediciones son almacenadas en la memoria (termopar)tieneunarespuesta


no linear.Por

del microprocesador y son sefial del transductor debe Dependiendo del tipo de a la elegida.

desplegadas en el display, Como se muestra en la figura 1, el transductor de temperatura


lo cual, la

hacerse Realizaremos linear. la linearizacin software, por

termopar que se elija puede realizarse la medicin de temperaturas mayores

iOOoC ANALOGICA

T -

INTERFASE

vo

FIGURA 1.

TERMOPARES.
Un termoparseformacuandodosmetalesdistintoshacencontacto,
Estos pueden

estartrenzados,soldados

o msfrecuentemente fusionados.Hierro(Fe) como en la figura

y alambresde

metal forman dos uniones de temopares, generaunvoltajetermoelctricoproporcional

2, Tericamente, cada union


a diferentes

a la temperatura a absoluta. Solo puede si estas se encuantran

medirseunadiferenciadevoltajeentredosuniones temperaturas,

Los termopares pueden ser utilizados para medir temperaturas exactas sobre
rango (-2'70*C a 1855*C).Datos exactosparacadatipo tablasreferenciatermopares de de Technology), del N.I.S,T.

un gran

de sensor son publicadosen las (National Institute of Standars and

Fe

I - +I vo = V m - V r

5.268m

FIGURA 2.

En la realidad, lo anterior solo es en teria y no tiene aplicaciones reales. En la prhdica,

solo se veri un solo termopar conectado,

Veamos la tabla que se utilizar: en nuestro continuo y forzadoaestar

CB.SO utilizaremos

el termopar tipo J [ironbafio fro


la

constantan), Una uninenlafigura2,seobservaqueseencuentraenun a unatemperaturade

O C Estaunin por definicin es

REFERENCIA o UNION FRIA(C0LD JUNCTION) y su voltajetermoelctrico de referenciaesta definidocomo Vr=O V, Las temperaturas son medidas con respecto a Tr, por la unin faltante de medida Tm. Si Tm es colocada en agua hirviendo con Tm=lOO*C,Vo ser6 igual

a 5,268mV con la polaridad mostrada en la figura


Estamedicidn nospermiteanosotros:(a)modelar (Vm) comounvoltajede

2. el voltajedela unindemedicin

DC en lafigura 2, (b)mostrarque

el alambredeaceroes

positivo con respecto al constantan, y (c) escribir la ecuacin del termopar como:

Con Vr=OV en la ecuacin (l), Vm

5.266mV. Observe la tabla de referencia parcial

en

la figura 3 localice Vm = 5.268mV con Tm=lOOC,

DATOS GENERALES DEL TERMOPAR


CODIGO ALEACION* CODIGO
ANSI

DE COLOR.

RANGO UTIL.

SENSIBXLDAD PROMEDIO.

ACEROCONSTANTAN

BLANCO

O*C a
150t

51* 5 V / l C

ROJO

UNIONES INTERMEDIAS.
Dos alambres de cobre conectan la configuracin de un termopar de dos uniones (fig.2)

a unvoltmetro,

Como semuestraenlafigura3(a),dosuniones

de cobreadicionales a la temperatura misma Si cadauninintermedia


y su

(intermedias) son creadas. Si estas se uniones colocan (isotrmica), sus voltajestermoelctricossecancelan, acompafiante estan a la misma temperatura los voltajes de voltaje de error se presenta.

unin se cancelan$ Si no, un

MEDICION CON UN SOLO TERMOPAR.


Se puede suponer que

la fig.3(c) representa un solo termopar de unin

Fe4

conectadas a unosconectoresdecobredeun

PC. La unindereferencia

no es obvia

inmediatamente. Sin embargo,tanprontocomo los conectoressehacenisotrmicos, su temperatura solo determina Tr de la union de referencia, Ambas uniones, Fe-Cu y Cu-C, son tratadas como una solauniondereferncia

Fe-C como el mostrado enlafig.3ld).


Vo.

Cualquier par adicional de unin intermedia isotrmica no tiene ninghn efecto sobre Las tablas del termopartipo
J son utilizadas revisar para

Vr, Vm, Tr, o "m, y la

ecuacin (I) es usada para calcular Vo.

Tm
1 OO.

-.---._.-I

! Ti

ISOTHERMAL
BLOCK
a)

COPPER LEADS FORM TWO INTERMEDIATE JUNCTIONS LABELED T1 SINCE BOTH ADDED JUNCTIONS ARE AT EQUAL TEIMPERATURES,
THEIR THERMOELECTRIC VOLTAGES CANCEL OUT. Tr=25*C

ISOTHERMAL BLOCK

(b) SINCE Tr-TI THE (HEAVY UNE) CONSTANTAN BECOMES WIRE AN INTERMEDIATE METAL. IT HAS NO EFFECT UPON THE
OUTPUTVOLTGE.

AND CAN BE ELIMINATED.

REFERENCE JUNCTION Tr ISOTHER&UL& 25.C


i r '

Tr=25*C

10o.c

Tm

(d) THIS MODEL IS THE ELECTRICAL EQUIVALENT O (e) F (c) SINGLE THERMOCOUPLE CONNECTS TO VOLMETER Vo VIA COPPER LEADS

L"-J

( c ) AND (d) THE CONSTANTAN WIRE IN (b) IS REMOVED TO ELIMINATE ONE THERMOCOUPLE. THE TWO ISOTHERMAL JUNCTIONS FORMED BY COPPER LEADS IN (c) BECOME THE N W REFERENCE JUNCTION. TO CALCULATE E Tm. Vr AND Vo USE THE BASIC EQUIVALENT MODELIN (d).

FIGURA 3.

En un sistema prcticomedicintermopares, de de igual Vr, entonces no habra necesidad de medir

la salida Vo de un

par de en serie e

termopares (fig.3) deberaser iguala Vm. pudiesemosinsertarunvoltaje Si

Tr, revisar Vr, y utilizar la ecuacidn (1)

paracalcular Vm. La salida Vo serla igual a Vm. Dicho esquema es llanladopuntofrlo (ice-point) o compensacin de "unin fria" (cold junction compensation (CJC)).

PRINCIPIO DEL GJC.


Si un voltajeigual puedeconectarse en serie al voltajede referencia Vr, el voltaje de salida Vo delaredde figura4(a)donde temperatura referencia de termoparessera iguala Vm, Esteprincipio un a valor esmostrado enla el voltaje Vc compensa y cancela el efectode

Vr, En laprictica, la
determinado, una Para

Tr, no ser constante

r compensacin ms precisa, Vc debe variar V como cambios de Tr con el ambiente. Por lo


cual, el voltaje de compensacin generar, debe que alcance a Vr,
Un circuito es mostrado en la figura 4(b), Un IC, el LT1025 cornpensador de "unin fra",
8

por un circuito transductor es que

isotrmico, desde la temperatura de la unin de referencia

Tr, hasta una salida de voltaje

debemantenerexactamente unin de referncia formada por

a la mismatemperaturacomo

la queseencuentra

la

las uniones Cu-C y Fe-C. Su tipo J de salida de


=

compensacih de voltaje Vc alcanza y cancela V por lo que Vo r

Vm,

Tr

3NCE VOLTAGE Vr IS CANCELLED BY INSEF JD OPPOSITECOMPENSATINGVOLTAGE SO


r""""" """"""
1

+
vc I I I
L"""~ """" """"

I I

Vo=Vr

1 5 GENERATES A 2

COMPENSATING VOLTAGI T H E REFERENCE VOLTAGE S O THAT VO=VI

El diagrama funcional

se observala en figura

5(a) y 5(b),

La temperatura de

referencia Tr, es convertidaa

10mV/'C por un circuitotransductor,corregidoparalas

caracteristicas del terrnopar, y aplicado a un amplificador operacional que funciona como buffer. La salida del amplificador operacional es igual a 10mV/'C por lo cual el LT1025

puedeserusadoparamedir

su propia temperaturaambiente con unasensibilidadde

I rV .Vo es escalado por un divisor de precisin para ofrecer cuatro salidas de voltaje O r nC
de compensacih como se muestra. Las sensibilidades de salida son elegidas para igualar cada pendiente del voltaje de salida del termopar a 25'C

1OmV/o(
6 0 . 9 VQC ~

Tr

51.7pV/

40.6pV/
6 p V/oC

(a) BLOCK DIAGRAM

OF TH L T 1 0 2 5 .

(b) PINOUT FOR HERMETIC J OR MOLDE


N DUAL-IN-LINEPACKAGE
FIRGURA 5.

10

ECUACIONES PARA EL TRANSDUCTOR TERMOPAR


Las caracteristicasdeentrada-salidadeuntermopartipo comosemuestraenlafigura6(b)porlalineaslidaenlagrbficade embargo, tomando los datos de la tabla correspondientes
J pareceranserlineales,

Vm vs. Tm. Sin


a Vm y Tm de la figura 6(a), el

incremento en Vm, o OVm, se encuentra en la columna 3 para incrementos iguales de Tm de IO'C. Si el termopar fuese linear, UVm serla igual a cada incremento igual en UTm, La sensibilidad o pendiente b = ~ m / l O ' C e scalculada en la columna 4. Las pendientes en la columna 4 se incrementan cuando la temperatura se incrementa para indicar la no-lineridad de Vm vs, Tm an sobre un rango limitado de

O a 5O'C.

(a) TYPE J REFERENCE DATA

FIGURA B.

11

Vm[mVJ 3

TYPE J THERMOCOUPLE 3 SLOPE=8Vm

AE$j VV.
2

1gIEAR APPROXI
Vm:.=51.7~V/*C

dTUAL V m VS

Tm

1 0

20

30

40

50

Trn[*CJ

} TYPE J THERMOCOUPLE CHARACTERISTIC V m VS APROXIMATION V m l VS T m

T m AND LINEAR

FIGURA 6

ECUACIONES DE APROXIMACION LINEAL.


Vml vs. Tm une los puntos extremos

Una llnea punteada

enfigura la

6(b), para

construir un intento de aproximacin lineal de la lnea slida de la grfica de Vm vs, Tm, La aproximacintieneunincrementode UV,1 = (2.585 - 0)mW para unintervalode OTm = (50 - O)'C, para dar comoresultadounpendientepromedio pasa a traves del origen, existe trmino indique offset no un que un aproximada del transductor es: de S~.~JPJ/'C, Como
y la ecuacin

12

TECNICAS DE Ll"IZACION.

Las caracteristicas de un transductor no-lineal pueden ser linealizadas en tiempo real por una cuatro de tcnicas las analgicas. Estas son: 1)Linearizacicin de offset,
y

2)aproximacin lineal(amp1ificadores operacionales

diodos), 3)aproximaciones
y, 4)aproximaciones

polinomiales(multipiicadores y amplificadores operacionales)

exponenciales, logaritmicas o de potencias(ciruitos integrados logaritmieos o aritmeticos),

DESARROLLO DEL PROYECTO.

La figura 7 muestra el diagrama a bloquesdeunsistemapara,medir


en intervalosdetiempodesde puede ser como miximo 500'C.

le temperature.

la temperatura ambiente hasta la temperatura finel, que

SYTEM ECUATION R E A D O U T = ' h


-.

0.C

+HERMOCOUPLE
TRANSDUCER
CIRCUIT
_ I

%*o2

5V

PROGRAM

50

PA L

5 OFFSET LINEAR Vo= 182.0VT WROXIMATION ECUATIONS \ TABLA 1. / JALOG INTERFACE. 3 APPROX. EQUATIONS TABLA 2

FIGURA 7.

El bloque del circuitotransductordetermoparrepresenta


circuito asociado de CJC (cold junction compensation)

un termopar tipo J y su

LT1025, La entrada es la

temperatura Tm con un rango de O hasta 500'C y la salida es el voltaje Vm = Vt con un

13

rango no-lineal desde

O hasta 27.388mT La caracteristica del transductor debera

dividirse (arbitrariamente) en segmentos cinco de aproxima.da sederivaraparacadasegmentodeacuerdo Estasecuacionessernamplificadasporuncircuitodeacoplo cincoecuacionesdeinterfaceanlogas. programa de linearizacin,
NOTA: Debe hacerse notar que las ecuaciones

tenperatura iguales, URR ecuacin con la tcnicalineal de offset, desena1 queentregar el

Las ecuaciones son requeridaspararealizar

no tienen nada que ver

con el disenodel

circuito de acoplo,

DISEfiO DEL CIRCUITO DE ACOPLO DE SEAL


La seAal de acoplo debe amplificar
duracin de la conveniencia, escogemos un rango para tener una ganacia de: Pendiente = OVo/llVt = (5-fl)V/(27.388-O)mV = 182.6
Vt, en la figura 7, para alcanzar ms de 5.12V en la

seAal de de entradaconvertidor un

anhlogico digital

(ADC). Por

Vo de O a 5V. E circuito de acoplo de l

sefial debe

y la ecuacin de diseho del circuito de acoplo de sePlal (CAS) es:

VO = 182.6 * Vt
Si utilizamosunamplificador cuya ecuacin es:

(38)

no inversor, como se muestra en la figura 8, Anexo A,

14

VofVt

(1 + Rf/Ri)

Eligiendo arbitrariamente Ri = IkO, se obtiene:

1 t Rf/lkO

182d :

Rf = 181,6kO
la ganancia se8

Una resistenciavariable,comosemuestraen

la figura,permitir6que

sjustads desde 170 ha.sta 190. Ahora, cincoecuacionesdeaproximacindebenderivarse programador para que se esciba el programa de linearizacidn.
p w a la interfaceanilogica.
por el

Esto completara el disefio de le. interface anlogics y los datos requeridos

OBTENCION DE L A S ECUACIONES DE LINEARIZACION,

PROCEDIMIENTO DE OBTENCION.
1. Se construy una grfica de

Vt vs, Tm no lineal del termopar tipo J sobre un rango


los incrementos

de O a 5OO0C. Se dividi lagrficaencincosegmentoslinealesiguales, cada segmento, Obtener una ecuacin de aproximacin lineal cada segmento. deoffsetde

son de 100C. Se localizaron los puntos de operacin en unsexto y encincosextosen

Vt vs, Tm para

2. Multiplicar las ecuaciones de Vt por la ganancia de


ecuacin de aproximacin de la interface

la SAC de 162d para obtener una

antilogica, Yo vs. Tm, para cada segmento.

15

3. Resolver la ecua.cindeaproximacionde
en querangode Vo laecuacinesvlida, realizar el programa de linearizacin,

Vo vs, Tm de ca.da segmento para Tm

jr

ver

Estas serin las ecua.cioncs requeridaspara

CONSTRUYENDO LA GRAFICA LINEAL.


Arbitrariamente se divide la distancia de Trn de O a 500.C en 5 incrementos iguales be
1 0 0 C Los valorescorrespondientes de Vt sonbuscados enla tabla del termopar tipo J .

(tabla 1) paraobtener las coordenadasdecincopuntos

deoperacilin

grhficados como

puntosrellenos en la figura 9(a). Parapropositosconceptuales,estospuntos

son unidos

alternamente por llneas segmentas y slidas para forriiar cinco segmentos. Los segmentos seidentifican por su rango de temperatura comose muestra en la columna 1 de de la figura 9(b),

Si sesegmentar
ejecucin.

en maspartes,nosdaraunamejor

aprojrimacilin peroestonos de memoria y tiempo de

costara un incremento en

la complejidad del programa, espacio

16

FIGURA 9.

OBTENCION DE LA APROXIMACION EN LAS ECUACIONES DEL TERMOPAR TIPO J.

Ahora obtendremos una euacin para determinar un offset para cada segmento figura 9(a), La lista de temperaturas de un-sexto latabla

e la n

y cinco-sextos para cada segmento se


e la n
=

muestra en la columna 2 de la figura 9(b), Se encuentran los valores correspondientes en

1 y secolocanen

la columna 3, y se calcul OVt paracadaentrada

columna 4. En cadaincrementoenlatemperatura,porejemplo pendiente de cada segmento lineal columna 5. Una revision a lacolumna iguales.Estaevidenciade

(83-1?)*C

68*C,la

de offset es calculado como OVt/WC y colocadoenla

5 muestraquelaspendientesdecadasegmento

no son

no linealidad, no estanaparentedesdelagraficalineal

del

termopar tipo J en la figura 9(a).


Solo realizaremos los calculos para un ejemplo

y se seguiran los mismos pasos en los

dems colocando solo el resultado, Paraobtener la ecuacindeaproximacinlinealdeoffset,en el segmento de 200 a

300*Cde la figura $a):


Las coordenadas para

los puntos de finales

un sexto y cinco sextos

son 2 P C ,

11,?20mV, y 283*C, 15.383mVt De acuerdo al segmento 3 de la figura 9(a), Evaluando la pendiente con los datos de coordenadas:

En forma general para un punto(Tm,Vt):

Igualando las pendientes y forzandola a ser de la forma y=mxtb:

Vt

11,720mV
- 55.5flv/.c -

"

"""_
-

Tm

217.C

Vt - 11.720mV = (55.5pVFC) * Tm - 12,044mV


Vt
=

(55.SV/.C)

* Tm - 0.324mV = Ecuacin de aproximacin


de offset para (200-300)-C

19

De la misma manera se calculan para los dembs segmentos encuentran enla tabla 1.

y los resultados se

T B l. AU

ECUACIONES DE LA INTERFACE ANALOGICA.


Como semuestra en la figura 7, el circuito acoplo de de seRal (CAS) aplica una de aproximacin. De la ecuacin

ganacia de 182.6 a la salidadelcircuito

transductor Vt, La salida de la interface anloga

Vo puede tambin ser representada por cinco ecuaciones


162,6. Los resultados son colocados en la tabla

(3a),simplementemultiplicamoslasecuacionesdeaproximacinde

Vt de la tabla 1 por

2 y grficados en la figura IO,

TABLA 2.

20

n (DISPLAY)
100-c ...............................................................................................................

.oo-c

PIECEWISE-LINEAR PROGRAM

ioo*c

Tm-98.08Vo+6.838=C

:oo.c

ov

1v

2v

3V

4v

5v

VC

FIGURA 10.

LAS ECUACIONES PROGRAMABLES.


La ecuacin programable para cada segmento en
su ecuacininterface de analgica para

la figura 10, es encontrada resolviendo

Tm. Por ejemplo,ecuacininterface la de

analgica para el tercer segmento (200--300*C) la tabla es: en


Vo = 10.134 mV/.C

* T m - 59,16mV

Resolviendo para Tm: Vo t 59,lBmV

Tm =

" " "

" " "

, para Vo = 1.981 a

2,981V

1O.134mV/*C

21

El restodelasecuacionespara

los demssegmentos se encuentran en latabls 3, y

siguen los mismos procedimientos para obtenerse,

ThML 3.

DESARROLLO DELPROGRAMA.

EL programa se desarrollar en baseal modelo presentadoanteriormente, en el cual

por medio del ADC 0009, que es un convertidor analgico digital se tomaran las muestras entregadas por el circuito transductor, el cal toma por medio del termopar las muestras de temperaturatura y estas, de acuerdo a los calculas re8hzados, estan espaciadas dentro de un rango de O a 5V. Por lo cual, tendremos una relacin coma la siguiente:

Xvolts = (5V * lectura)

/ 256

De la cual, obtenemos resultados como los siguientes de la tabla 4,

22

TABLA 4.

De acuerdo a los resultados podemos ahora realizar la lgica del programa.

23

El objetivo del controladores que d8.da unacierta


valvula conectadaaunalneade

ternpera.tur-a 1, esteabrira

una

los perifericoslacualpermitira

el paso de gaspara medio del


la

calentar el horno, llegando a esta temperaratura, que se esta actualizando por temperatura 2, proporcionadapor el usuario al iniciodelciclo, valvula, Se le permite en cualquier momento al usuario la interrupcin barra espaciadora del teclado, Tambin, el programatienela

ADC, se mantendr cierto tiempo y despus aumentar la temperatura hasta llegar a una

AI termino,secierra

del proceso mediante la

opcin decolocar el tiempo durante el cualsedesea

calentar el horno, sin llegar a una temperatura especifca, solo durante cierto tiempo, la cual se da segundos, al termino de la cul se cerrar la valvula.
A continuacin se da el programa que realiza la simulacin del proceso, y en el anexo A, se muestra el diagrama total del controlador del horno de ceramica.

PROGRAMA

24

PROGRAMAFRIIVCIPAL TAMRAM TAMROM .186


page ,132

EQU EQU

1FFFH 1 FFEH

;Tamao de la RAM y :de la EPROM

STACK SEGMENTSTACK PARA


segmento

;Definition del

DB ENDS STACK EXTRA


variables

19 DUP SEGMENT DB DB DB DB DB DB DB DB

('STACK')

;de stack
;Definition de

TTECLA LOC TTECLAl LOCl TTECLA2 LOC2 TTECLA3 LOC3 AUX TTECLAS LOCS TTECLAlS LOClS TTECLA2S LOC2S TTECLA3S LOC3S ORG (12*4H) INTOIP DW ? ORG (12*4H+2H) INTOCS DW ? ORG (8*4H) INTIMEROIP DW ? ORG (8*4H+2H) INTIMEROCS DW ?

? ? ? ? ? ? ? ?

DW ? DB DB DB DB DB DB DB DB
? ? ? ? ? ? ? ?

;Vector interrupcion de ;para teclado

INTO

;Vector interrupcion de del ;Timer O

ORG (19*4H) INTIMER2IP DW ? ORG (19*4H+2H) INTIMER2CS DW ? TAMANOCAD LINEA DB DB


? ?

;Vector de interrupcion del ;Timer 2

LINEAS CADENA CONTIMER INDTIMER INDINT TECLADO DB CANTIDADNUMl DW CANTIDADSEG DW NUMOPRIMI CONTSEGUNDOS DW ENDS EXTRA CODE SEGMENT

DB

DW ? DW ? DB ? DB ?
? ? ?

DB 7 DUP
?

'

ASSUME CS:CODE,ES:EXTRA,SS:STACK ORG MOV MOV MOV MOV MOV MOV MOV

OH AX, OH ES,AX AX, 1FAH SS,AX SP,56H AX, 10H DS,AX

;Cambiar el stack ; y ver las otras intr's

;PERIFERICOS MOV MOV


OUT

MOV MOV OUT MOV MOV OUT


;

DX,OFFA2H AX, OlFCH DX,AL DX,OFFA4H AX, 023CH DX,AL DX,OFFA8H AX,813CH DX,AL

LMCS

;PACS

;MPCS

PANTALLA CX, 03H DX,2082H AL,DX AL,80H AL,80H ANS 1 DX,2080H ;FUNCTION SET AL, 30H DX,AL FUNCIONSET DX,2082H AL,DX

MOV FUNCIONSET: MOV IN ANSl : AND CMP JZ MOV MOV OUT LOOP
MOV

ANS4 :

IN

ANS5 :

AND CMP JZ MOV MOV OUT MOV IN AND CMP JZ MOV MOV OUT MOV AND CMP JZ MOV MOV
OUT

INANS6:

MOV ANS7 : AND CMP JZ MOV MOV


OUT

IN

AL, 80H AL,80H ANS4 DX,2080H ;FUNCTION AL, 38H DX,AL DX,2082H AL,DX AL, 80H AL, 80H ANS5 DX,2080H ;DISPLAY ON AL,OEH DX,AL DX,2082H AL, DX AL, 80H AL, 80H ANS6 DX,2080H ;CLEAR DISPLAY AL, 01H DX,AL DX,2082H AL, DX AL, 80H AL, 80H ANS7 DX,2080H;ENTRYMODE AL, 06H DX,AL
;

SET AND-491

SET

;PANTALLA PREPARADA MOV DX,2082H ANSlOO: IN DX AL, AND AL, 80H CMP AL, 80H JZ ANSlOO MOV DX,2080H MOV OCH AL, OUT DX,AL MOV DX,2082H ANSlO: DXIN AL, AND AL, 80H CMFJ AL, 80H JZ ANSlO MOV DX,2081H MOV 43H AL, OUT DX,AL MOV DX,2082H ANSll: IN DX AL, AND AL, 80H CMP AL,80H

PANTALLA

;Borro cursor

'C'

ANSll JZ DX,2081H MOV MOV 4BH AL, OUT DX,AL MOV DX,2082H ANS12: DXIN AL, AL, 8OH AND CMP AL, 80H JZ ANS12 MOV DX,2081H AL,44H MOV OUT DX,AL MOV DX,2082H QNSl3: DXIN AL, AND AL,80H CMP AL, 80H JZ QNSl3 MOV DX,2081H MOV 52H AL, OUT DX,AL MOV DX,2082H ANS13: AL,DX IN AND AL, 80H CMP AL, 80H JZ ANS13 MOV DX,2081H MOV AL, 41H DX,AL OUT MOV DX,2082H ANS14: AL,DX IN AND AL, 80H CMP AL, 80H JZ ANS14 MOV DX,2081H MOV AL, 4DH DX,AL OUT XOR AX,AX MOV DI,AX MOV AL,OAAH MOV CX,TAMRAM CLD CICL02: STOSB LOOP CICLO2 STD DEC DI MOV CX,TAMRAM REPE SCASB JNZ ERROR SALTE JMP ERROR : T" I: MOV MOV DX,OlCH CX, OFFFFH

; 'K'

'D'

'R'

'A'

; 'M'

;Checo

RAM

TIMEM DX,01H DX,OH TIMM DX,2082H AL, IN DX AL, 80H CMP AL, 80H JZ ANS2 MOV DX,2081H MOV AL, 20H OUT DX,AL MOV DX,2082H ANS17: IN AL,DX AND AL, 80H GMP AL, 80H JZ ANS 17 MOV DX,2081H MOV AL, 45H OUT DX,AL MOV DX,2082H ANS18: AL, IN DX AND AL, 80H CMP AL, 80H JZ ANS18 MOV DX,2081H MOV AL, 52H OUT DX,AL MOV DX,2082H AL, IN DX ANS19: AND AL, 80H CMP AL, 80H JZ ANS19 MOV DX,2081H MOV 52H AL, OUT DX,AL MOV DX,2082H ANS20: AL, IN DX AND AL, 80H CMP AL, 80H JZ ANS2O MOV DX,2081H MOV AL, 4FH OUT DX,AL MOV DX,2082H ANS21: IN AL, DX AND AL, 80H CMP AL, 80H JZ ANS21 MOV DX,2081H MOV AL, 52H OUT DX,AL HLT
LOOP

TIMEM : SUB CMP JNZ MOV ANS2 : AND

;'

E'

'R'

'R'

'O'

'R'

.,.

..

"" ,. .-

."_""" "

SALTE : MOV WORD PTR ES:INTIMEROIP,OFFSET(SEGUNDOS) MOV WORD ES:INTIMEROCS,CS PTR MOV PTR WORD MOV PTR WORD
ES:[28H*4H],OFFSET(INTR28) ES:[28H*4H+ZH],CS

MOV PTR WORD ES:INTOIP,OFFSET(INTRO) MOV PTR WORD ES:INTOCS,CS MOV PTR WORD ES:INTIMER2IP,OFFSET(INTIMER) MOV WORD ES:INTIMERZCS,CS PTR ;INTERRUPCIONES (INTO ) MOV AX,11H MOV
OUT

DX,OFF38H ;INTO-Teclado
;por nivel

DX,AL

;INTERRUPCIONES PREPARADAS ;INTERRUCIONES (TIMER1) MOV DX,OFF32H AX,OOH ;POR NIVEL MOV OUT DX,AL ;INTERRUPCIONES PREPARADAS ;timer O MOV MOV OUT INC INC OUT
;

;INTIMER

DX,OFF52H AX, OFFFOH DX AL DX DX DX,AL 2 DX,OFF6 2H AX,OFFFOH DX,AL DX,1CH TIM DX,2080H ;Retardo ;limpio 01H AL, display DX,AL ES:LINEA,80H ES:LOC,06H BX,OFFSET(RAMBEl) 28H ES:LINEA,OCOH ES:LOC,02H BX,OFFSET(RAMBE2)

timer MOV MOT


OUT

MOV CALL MOV MOV


OUT

y limpio

MOV MOV MOV INT MOV


MOV

MOV

INT MOV MOV OUT MOV CALL


;CKSUM

28H DX,2080H AL,OCH DX,AL DX,1CH TIM

;BORRO CURSOR ;OPCIONAL

MOV MOV
OUT

MOV MOV MOV INT MOV FORMAR MOV XOR XOR MOV CLD DIRECCION

DX,2080H ;LIMPIO 01H AL, DISPLAY DX,AL ES:LINEA,80H ES:LOC,OOH BX,OFFSET(CKSUM) 28H

AX, OFEOOH
DS, AX AX,AX BX ,BX S1,AX

;CARGAR ;LA ;LA

REGISTROS

PARA COMIENZA

DIRECCION DONDE EPROM FEOOOH BANDERA DE SUMAR ONES CHECKSUM EN

;AJUSTAR ;CICLO
;

MOV CX,TAMROM DIREC CICLO: LODSB ADD BX,AX LOOP CICLO LODSB ACUMULADOR MOV AH,AL LODSB CMP BX,AX CHECKSUM JNZ ERRORl SALTEROM JMP ERRORl : ERROR JMP SALTEROM : MOV DX,1CH CALL TIM MOV DX,2080H MOV AL, 01H OUT DX,AL MOV AX, 10H MOV DS,AX MOV ES:LINEA,80H MOV ES:LOC,O6H BX,OFFSET(ROMBEl) MOV 28HINT MOV ES:LINEA,OCOH MOV ES:LOC,02H

PARA
CI

1FFEH

;CARGAR

;COMPARAR

SUMA

TOTAL CON

;RETARDO Y LIMPIO ;LIMPIO DISPLAY

BX,OFFSET(RAMBE2) MOV 28HINT MOV DX,1CH CALL TIM


;

;TWO KEY DX,2001H AL,OH ;LOCKOUT OUT DX,AL AL,MOV ;PROGRAMAR 3FH OUT DX,AL ;RELOJ ;TECLADO PREPARADO DX,2001H ;COMANDO PARA MOV AL, MOV 40H ;LEER TECLADO OUT DX. AL

TECLADO MOV MOV

;MENU

PRINCIPAL MOV DX,2080H DISPLAY ;CLEAR AL, 01H DX,AL ES:LOC,OOH ES:LINEA,OCOH BX.OFFSET(MENUP2) 28H BX,OFFSET(MENUPl) ES:LINEA,BOH ES:LOC,OOH 28H

ANS9E : MOV OUT MOV MOV MOV INT MOV MOV MOV INT

OPCIONMENU: ST1 ;Activa banderad e interrupcion HLT CLI ; y la limpia CMP ES:TTECLA,31H ;Como quieres sea? que ;lo controlas JE MANUAL1 manualmente? CMP ES :TTECLA, 32H ; o automaticamente? JE AUTOMATICO OPCIONMENU JIW MANUAL1: JMP ;MENU ADQUISICION
: ,

MANUAL

;Automatic0 DX,2080H AUTOMATICO: MOV MOV 01H AL, DX,AL OUT ES:LOC,OOH MOV ES:LINEA,OCOH MOV BX.OFFSET(AUTO1) MOV INT 28H

CLEAR

DISP 'LAY

;Escribe submenus

MOV MOV MOV INT OPCION: HLT CLI


alguna

BX,OFFSET(AUT02) ES:LINEA,80H ES:LOC,OOH 28H ST1 ;Dependiendo de la


;opcion saltara a

CMP JE CMP JE CMP JE JMP TIEMPOS: ANS9EE :

ES:TTECLA,31H TEMPERATURA ES:TTECLA,32H TIEMPOS ES:TTECLA,33H ANS9EE OPCION TIEMPO JMP

;de las subrutinas ;temperatura,


;de tiempos, o
;de sal ida

de:

ANS9E JMP DX,2080H DISPLAY ;CLEAR

TEMPERATURA: MOV MOV01H AL, DX,AL OUT


;temperatura?

MOV MOV MOV MOV MOV INT MOV MOV MOV MASDIGITOS: HLT CLI CMP JE CALL MOV AND MOV INC CMP JE INC JMP FORMANUMl : HLT CLI

ES:TAMANOCAD,OOH ES:TECLADO,OOH ES:LINEA,80H ES:LOC,OOH BX,OFFSET(TEMPERA) 28H ES:LINEA,OCOH ES:LOC,OOH BX.OFFSET(NUMOPRIM1) ST1 ES:TECLAD0,6FH FORMANUM LCDINC AL,ES:TTECLA AL, OFH ES: [BX] ,AL ES:TAMANOCAD ES:TAMANOCAD,3H FORMANUMl BX MASDIGITOS ST1

CMP JE JMP
;Subrutina para

ES:TECLAD@,6FH FORMANUM FORMANUMl

CMP FORMANUM : ES:TAMANOCAD,OOH JE MOV


dependiendo

TEMPERATURA BX,OFFSET(NUMOPRIMI)

. :

formar 1 a cant idad

AX,AX XOR WORD PTR ES:AUX,AX MOV ES:TAMANOCAD,OlH CMP SON203 JNE DX,OOH MOV ESUNO JMP ES:TAMANOCAD,02H CMP SON203: SON3 JNE DX,OOH MOV SON2 JMP XOR AX, AX SON3 : AL,ES:[BXI MOV CX, 64H MOV cx MUL WORD PTR ES:AUX,AX MOV BX INC AX,AX XOR SON2 : AL,ES: [BXI MOV CX,OAH MOV cx MUL
son?

;de 1

numero ;de digitos ;introducidos

;Cuantos digitos

MOV MOV ADD MOV INC ESUNO : MOV MOV MOV ADD MOV CMP JE JMP
comienza comenzar con

DX,AX AX,WORD PTR ES:AUX AX,DX WORD PTR ES:AUX,AX BX XOR AX,AX AL,ES:IBXl DX,AX AX,WORD PTR ES:AUX AX,DX WORD PTR ES:CANTIDADNUMl,AX

AX, OOH TEMPERATURA1 COMIENZA

;Si la temperatura es ;distinta de O salta a


;si vuelve no

TEMPERATURAl: JMP TEMPERATURA COMIENZA: MOV


OUT

;la temperatura.

DX,2101H DX,AL

MOV MOV MOV MOV OUT MOV MOV OUT MOV MOV OUT XOR MOV MOV MOV MOV MOV

AX,OFFFFH WORD PTR

ES:CANTIDADSEG,AX
DISPLAY

DX,2080H ;CLEAR AL, 01H DX., AL DX,OFF66H;PRENDO AX, OEOOlH DX,AL DX,OFF56H AX,OE003H DX,AL

EL TIMER 2

INT
MOV MOV MOV CALL MOV MOV MOV CALL MOV MOV CALL MOV MOV CALL MOV MOV CALL MOV MOV MOV CALL MOV MOV CALL MOV MOV CALL MOV

AX,AX WORD PTR ES:CONTSEGUNDOS,AX WORD PTR ES:CONTIMER,AX ES:LINEA,80H ES:LOC,04H BX,OFFSET(GRADOS) 28H
ES:TTECLA,3AH ES:LOC,02H ES:LINEA,OCOH LCD ES:LINEA,80H ES:LOC3,00H ES:TTECLA3,30H LCDC ES:LOC2,01H ES:TTECLA2,30H LCDB ES:LOC1,02H ES:TTECLA1,30H LCDA ES:TTECLA,30H ES:LOC,03H LCD ES:LINEAS,OCOH ES : LOC3S, OOH ES:TTECLA3S,30H LCDCS ES:LOC2S,OlH ES:TTECLA2S,30H LCDBS ES:LOClS,03H ES:TTECLAlS,30H LCDAS ES:TTECLAS,30H

MOV CALL

ES:LOCS,04H LCDs

XOR AX,AX ES:INDTIMER,AL MOV REVISA: AL,ES:INDTIMER MOV AL, 08H CMP CHECA JNE CONMUTA JMP CHECA : ST1 HLT CLI ES:INDINT,02H CMP REV I SA JE CMP ES:INDINT,OlH JE CONMUTA JMP REVISA CONMUTA : MOV
OUT

MOV MOV OUT MOV OUT ST1 HLT JMP TIEMPO : MOV OUT MOV MOV MOV MOV MOV INT MOV MOV MOV

MOV DX,OFF66H ;APAGA EL AX,4001H DX,AL DX,OFF56H AX,4003H DX,AL DX,2101H DX,AL AUTOMAT1 CO

TIMER 2

MOV DX,2080H DISPLAY ;CLEAR AL, 01H DX,AL ES:TAMANOCAD,OOH ES:TECLADO,OOH ES:LINEA,80H ES:LOC,OOH BX,OFFSET(SEGUNDO) 28H ES:LINEA,OCOH ES:LOC,OOH BX,OFFSET(NUMOPRIMI)

MASDIGITOSl: ST1 HLT CLI ES:TECLAD0,6FH CMP JE FORMANUMS LCDINC CALL AL,ES:TTECLA MOV ANDOFH AL, ES: [BXJ ,AL MOV

INC CMP JE INC JMP FORMANUMlS : HLT CLI CMP JE JMP

ES:TAMANOCAD ES:TAMANOCAD,3H FORMANUMlS BX MASDIGITOSl ST1 ES:TECLAD0,6FH FORMANUMS FORMANUMlS

CMP FORMANUMSES:TAMANOCAD,OOH : TIEMPO JE BX,OFFSET(NUMOPRIMI) MOV XOR AX,AX MOV WORD PTR ES:AUX,AX CMP ES:TAMANOCAD,OlH SON203S JNE MOV DX,OOH JMP ESUNOS SON203S: ES:TAMANOCAD,02H CMP JNE SON3S MOV DX,OOH SON2S JMP SON3S: XOR AX,AX MOV AL,ES: [BX] MOV CX, 64H MUL cx MOV WORD PTR ES:AUX,AX INC BX SON2S: AX,AX XOR MOV AL,ES:[BXI MOV CX,OAH MUL cx MOV DX,AX MOV AX,WORD PTR ES:AUX ADD AX,DX MOV WORD PTRES:AUX,AX INC BX ESUNOS : XOR AX,AX MOV AL,ES: [BX] MOV DX,AX MOV AX,WORD PTR ES:AUX ADD AX,DX MOV WORD PTR ES:CANTIDADSEG,AX CMP AX, OOH JE TIEMPO1 JMP COMIENZAS TIEMPO1 :TIEMPO JMP

COMIENZAS : OUT MOV MOV MOV MOV OUT MOV MOV OUT MOV MOV OUT XOR MOV MOV MOV MOV MOV INT MOV MOV MOV CALL MOV MOV MOV CALL MOV MOV CALL MOV MOV CALL MOV MOV CALL MOV MOV MOV CALL MOV MOV CALL

MOV DX,2101H DX,AL

AX,OFFFFH WORD PTR ES:CANTIDADNUIVLl,AX


DX,2080H ;CLEAR DISPLAY AL, 01H DX,AL DX,OFF66H;PRENDOELTIMER2 AX, OEOOlH DX,AL DX,OFF56H

AX,OE003H
DX,AL

AX,AX WORD PTR ES:CONTSEGUNDOS,AX WORD PTR ES:CONTIMER,AX ES:LINEA,OCOH ES:LOC,O4H BX,OFFSET(GRADOS) 28H
ES:TTECLA,3AH ES:LOC,02H ES:LINEA,80H LCD ES:LINEA,OCOH ES:LOC3,00H ES:TTECLA3,30H LCDC ES:LOC2,01H ES:TTECLA2,30H LCDB ES:LOC1,02H ES :TTECLAl ,30H LCDA ES:TTECLA,30H ES:LOC,03H LCD ES:LINEAS,80H ES:LOC3S,OOH ES:TTECLA3S,30H LCDCS ES:LOC2S,OlH ES:TTECLA2S,30H LCDBS

ES:LOClS,03H MOV MOV ES:TTECLAlS,30H CALL LCDAS ES:TTECLAS,30H MOV MOV ES:LOCS,04H LCDs CALL XOR AX,AX MOV ES:INDTIMER,AL MOV REVISAR : AL,ES:INDTIMEH AL, 09H CMP JNE CHECAR JMP CONMUTAR ST1 CHECAR : HLT CLI CMP ES:INDINT,04H JE REVISAR CMP ES:INDINT,OlH JE CONMUTAR JMP REVISAR CONMUTAR : MOV
OUT

MOV MOV OUT MOV OUT ST1 HLT JMP


;Manua 1

MOV DX,OFF66H ;APAGA EL TIMER AX, 4001H DX,AL DX,OFF56H AX,4003H DX,AL DX,2101H DX,AL AUTOMATIC0 MOV DX,2080H DISPLAY ;CLEAR AL, 01H DX,AL DX,2101H DX,AL

MANUAL : MOV OUT MOV OUT

MOV AX, OFFFFH MOV PTR WORD ES:CANTIDADNUMl,AX MOV WORD ES:CANTIDADSEG,AX PTR MOV MOV01H AL,
OUT

DX,2080H DISPLAY ;CLEAR DX,AL DX,OFF66H ;PRENDO EL TIMER AX, OEOOlH DX,AL
2

MOV MOV OUT

MOV MOV

OUT XOR
MOV MOV MOV MOV MOV

DX,OFF56H AX, OE003H DX,AL

INT
MOV MOV MOV

AX,AX WORD PTR ES:CONTSEGUNDOS,AX WORD PTR ES:CONTIMER,AX ES:LINEA,OCOH ES:LOC,04H BX,OFFSET(GRADOS) 28H
ES:TTECLA,3AH ES:LOC,02H ES:LINEA,80H LCD ES:LINEA,OCOH ES:LOC3,00H ES:TTECLA3,30H LCDC ES:LOC2,01H ES:TTECLA2,30H LCDB ES:LOC1,02H ES:TTECLA1,30H LCDA ES:TTECLA,30H ES:LOC,03H LCD ES:LINEAS,80H ES:LOC3S,OOH ES:TTECLA3S,30H LCDCS ES:LOC2S,OlH ES:TTECLAZS,3OH LCDBS ES:LOClS,03H ES:TTECLAlS,30H LCDAS ES:TTECLAS,30H ES:LOCS,04H LCDs
ST1

CALL
MOV MOV MOV

CALL
MOV MOV

CALL
MOV MOV

CALL
MOV

MOV CALL
MOV MOV MOV

CALL
MOV MOV

CALL
MOV MOV

CALL
MOV MOV

CALL CHECAM : HLT CLI CMP JE


JMP

ES:INDINT,OlH CONMUTAM CHECAM

CONMUTAM : MOV OUT MOV MOV OUT MOV OUT ST1 HLT JlW
;

MOV DX,OFF66H AX,4001H DX,AL DX,OFF56H AX,4003H DX,AL DX,2101H DX,AL ANS9E

:APAGA EL TIMER 2

Llamada para checar la "busy flag del LCD MOV DX,2082H BUSY : AL, IN DX ANS : AND AL,80H CMP AL, 80H JZ ANS RET

;Llamada que realiza un retardo de tiempo hasta que DX sea cero ;utilizada para el "busy flag" del display TIM : CALL SEG 1 SUB DX,01H CMP DX,OH TIM JNZ RET ;Llamada que se utiliza en la llamada anterior para realizar el ;retardo CX, OFFFFH MOV SEGl : TIME LOOP TIME : RET

;Llamada para escribir en el Display LCDINC : CALL LCD INC ES : LOC RET

NEAR PROC LCD

PUSH

AX

PUSH PUSH PUSH PUSH PUSH


MOV

BX

cx
DX SI DI DX,2082H AL, DX AL, 80H AL, 80H LCD1 DX,2080H AL, ES: LINEA CL,AL AL,ES:LOC AL, CL DX,AL DX,2082H AL,DX AL, 80H AL, 8OH LCD2 DX,2081H AL,ES:TTECLA DX,AL DX,2082H AL, DX AL, 80H AL, 80H LCD3 DI SI DX

LCD1: IN AND CMP JZ


MOV MOV MOV MOV

ADD OUT
MOV

LCD2: IN AND CMP

JZ
MOV MOV

OUT
MOV

LCD3: IN AND CMP JZ POP POP POP POP POP POP RET ENDP LCD NEAR PROC LCDA PUSH PUSH PUSH PUSH PUSH PUSH
MOV

cx

BX AX

AX
BX

cx

ALCDl : AND CMP JZ


MOV MOV

DX SI DI DX,2082H IN AL,DX AL, 80H AL, 80H ALCDl DX,2080H AL,ES:LINEA

MOV

MOV

ADD OUT MOV ALCD2: IN AND CMP JZ MOV MOV OUT MOV ALCD3: IN AND CMP JZ POP POP POP POP POP POP RET ENDP LCDA NEAR PROC LCDB

CL,AL AL,ES:LOCl AL, CL DX,AL DX,2082H AL, DX AL, 80H AL, 80H ALCD2 DX,2081H AL,ES:TTECLAl DX,AL DX,2082H AL,DX AL, 80H AL, 80H ALCD3 DI SI DX

cx

BX AX

PUSH AX PUSH BX PUSH cx PUSH DX PUSH SI PUSH DI MOV DX,2082H BLCDl: AL, IN DX AND AL, 80H CMP AL, 80H JZ BLCDl MOV DX,2080H MOV AL,ES:LINEA MOV CL,AL MOV AL,ES:LOC2 ADD AL, CL OUT DX,AL MOV DX,2082H BLCD2: IN AL,DX AND AL, 80H CMP AL, 80H JZ BLCD2 MOV DX,2081H MOV AL,ES:TTECLA2 OUT DX,AL MOV DX,2082H

BLCD3: IN AND CMP AL, JZ DI POP POP DX POP POP BX POP POP RET ENDP LCDB NEAR PROC LCDC

AL,DX AL, 80H


80H

BLCD3
SI

cx
AX

PUSH AX PUSH BX PUSH cx PUSH DX PUSH SI PUSH DI MOV DX,2082H CLCDl : AL, IN DX AND AL, 80H CMP AL, 80H JZ CLCDl MOV DX,2080H MOV AL,ES:LINEA MOV CL ,AL MOV AL,ES:LOC3 ADD AL, CL OUT DX,AL MOV DX,2082H CLCD2: IN AL, DX AND AL, 80H CMP AL, 80H JZ CLCD2 MOV DX,2081H MOV AL,ES:TTECLA3 OUT DX,AL MOV DX,2082H CLCD3: IN AL, DX AND AL,80H CMP AL, 80H JZ CLCD3 POP DI POP SI POP DX POP cx POP BX POP AX RET ENDP LCDC

LCDs

PROC

NEAR

PUSH PUSH PUSH PUSH DX PUSH PUSH DI MOV SLCD1: AL, DX IN AND CMP JZ
MOV

AX BX

cx
SI

DX,2082H AL, 80H AL, 80H SLCDl DX,2080H AL,ES:LINEAS CL,AL AL,ES:LOCS AL, CL DX,AL DX,2082H AL,DX AL, 80H AL, 80H SLCD2 DX,2081H AL,ES:TTECLAS DX,AL DX,2082H AL, DX AL, 80H AL, 80H SLCD3 DI SI DX

MOV MOV MOV ADD OUT


MOV

SLCD2: IN AND CMP JZ MOV MOV OUT


MOV

SLCD3: IN AND CMP JZ POP POP POP POP POP POP RET ENDP LCDs LCDAS PROC PUSH PUSH PUSH PUSH PUSH PUSH MOV SALCDl : AND CMP JZ MOV

cx

BX AX

NEAR

AX BX

cx

DX SI DI DX,2082H IN AL,DX AL, 80H AL, 80H SALCDl DX,2080H

MOV MOV MOV ADD OUT MOV SALCD2 : IN AND CMP JZ MOV MOV OUT MOV SALCD3 : IN AND CMP JZ POP POP POP POP POP POP RET LCDAS ENDP

AL,ES:LINEAS CL ,AL AL,ES:LOClS AL, CL DX,AL DX,2082H AL, DX AL, 80H AL, 80H SALCD2 DX,2081H AL,ES:TTECLAlS DX,AL DX,2082H AL,DX AL, 80H AL, 80H SALCD3 DI SI DX

cx
BX AX

LCDBS PROC NEAR AX PUSH PUSH BX PUSH cx PUSH DX PUSH SI PUSH DI MOV DX,2082H SBLCDl : AL, IN DX AND AL, 80H CMP AL, 80H JZ SBLCDl MOV DX,2080H MOV AL,ES:LINEAS MOV CL,AL MOV AL,ES:LOC2S ADD AL, CL OUT DX,AL MOV DX,2082H SBLCD2 : IN AL, DX AND AL,80H CMP AL, 80H JZ SBLCD2 MOV DX,2081H MOV AL,ES:TTECLA2S OUT DX,AL

MOV DX,2082H SBLCD3: AL,DX IN AND AL, 80H CMP80H AL, JZ SBLCD3 DI POP POP SI DX POP POP cx BX POP AX POP RET LCDBS ENDP LCDCS PROC NEAR PUSH PUSH PUSH PUSH PUSH PUSH MOV SCLCDl : AND CMP

AX BX

cx

DX SI DI DX,2082H IN AL,DX AL, 80H AL, 80H JZ SCLCDl MOV DX,2080H MOV AL,ES:LINEAS MOV CL,AL MOV AL,ES:LOC3S ADD AL, CL OUT DX,AL MOV DX,2082H SCLCD2 : IN AL,DX AND AL, 80H CMP AL, 80H JZ SCLCD2 MOV DX,2081H MOV AL,ES:TTECLA3S OUT DX,AL MOV DX,2082H SCLCD3: IN AL,DX AND AL, 80H CMP AL, 80H JZ SCLCD3 POP DI POP SI POP DX POP cx POP BX POP AX RET LCDCS ENDP

;Procedimiento para leer teclado NEAR PROC TOMA XOR AH, AH MOV DX,2050H ;LEER TECLADO DX AL, IN ES:TECLADO,AL MOV ES:TECLAD0,6FH CMP JE NOTTECLA ADD SI,AX MOV AL,CS: [SI] MOV ES:TTECLA,AL ;CAPTUROASCII EN NOTTECLA : MOV PTR WORD ES:CADENA,BX BIT MOV DX,OFF22H ;DESABILITAR MOV AX,OCH ;EN SERVICIO OUT DX,AL MOV BP,01H ES:INDINT,OlH MOV RET ENDP TOMA

;Procedimiento de interrupcion INTO, utilizado de ;para el teclado EVEN CLI INTRO: SI,OFFSET(TECLA) MOV TOMA CALL IRET

;Procedimiento de interrupcion utilizado ;para el timer 2 EVEN INTIMER :CLI AX PUSH PUSH BX PUSH cx PUSH DX SI PUSH PUSH DI MOV AX,WORD ES:CONTIMER PTR INC AX MOV WORD ES:CONTIMER,AX PTR AX, 23H CMP CHANCE JNE INC ES :TTECLA CMP ES :TTECLA, 3AH DESPLIEGADIG JNE

ES:TTECLA,30H MOV ES :TTECLAl INC ES:TTECLA1,3AH CMP DESPLSEGDIG JNE ES:TTECLA1,30H MOV ES: TTECLA2 INC ES:TTECLA2,3AH CMP DESPLTERCER JNE ES:TTECLA2,30H MOV ES: TTECLA3 INC ES:TTECLA3,3AH CMP JNE DESPLTERCE~DIG MOV ES:TTECLA,30H DESPLTERCERDIG: LCDC CALL DESPLTERCER: CALL LCDB DESPLSEGDIG: CALL LCDA DESPLIEGADIG: CALL LCD MOV AX,WORD PTR ES:CANTIDADNUPIl DEC AX MOV WORD PTR ES:CANTIDADNUfVIl,AX CMP AX, OOH JNE SALTATELO MOV AL, 08H MOV ES:INDTIMER,AL JMP CHANCE SALTATELO: XOR AX,AX WORD PTR ES:CONTIMER,AX MOV CHANCE: MOV ES:INDINT,02H MOV DX,OFF22H MOV AL, 08H OUT DX,AL POP DI POP SI POP DX POP cx POP BX POP AX IRET

;Procedimiento de interrupcion utilizado ;por el Timer O EVEN SEGUNDOS: CLI PUSH AX PUSH BX PUSH cx PUSH DX PUSH SI PUSH DI MOV AX,WORD ES:CONTSEGUNDOS PTR INC AX

WORD PTR ES:CONTSEGUNUOS,AX MOV AX, 17H CMP CHANCES JNE ES :TTECLAS INC ES:TTECLAS,3AH CMP SESPLIEGADIG JNE ES:TTECLAS,30H MOV ES:TTECLAlS INC ES:TTECLAlS,36H CMP SESPLSEGDIG JNE ES:TTECLAlS,30H MOV ES:TTECLA2S INC ES:TTECLA2S,3AH CMP SESPLTERCER JNE ES:TTECLA2S,30H MOV ES:TTECLA3S INC ES:TTECLA3S,36H CMP SESPLTERCERDIG JNE ES:TTECLAS,30H MOV LCDCS SESPLTERCERDIG: CALL LCDBS SESPLTERCER: CALL LCDAS SESPLSEGDIG: CALL LCDs SESPLIEGADIG: CALL AX,WORD PTR ES:CANTIDADSEG MOV AX DEC WORD PTR ES:CANTIDADSEG,AX MOV AX,OOH CMP SALTATELOS JNE AL, 09H MOV ES:INDTIMER,AL MOV CHANCES JMP SALTATELOS: XOR AX,AX WORD PTR ES:CONTSEGUNDOS,AX MOV MOV ES:INDINT,04H CHANCES : DX,OFF22H MOV AL, 08H MQV DX,AL OUT DI POP SI POP DX POP cx POP BX POP POP AX IRET

;Procedimiento de interrupcion utilizado ;por el DMA O, interrupcion 28H EVEN INTR28: CLI MOV SI,OOH REPITE : MOV AL,CS: [BX] [SI]

ES : TTECLA . AL CMP ES:TTECLA,3CH JE SALIR CALL LCDINC INC SI JMP REPITE SALIR : NOP MOV DX,OFF22H MOV AX,28H OUT DX,AL IRET
MOV

;'

< '

TECLA

TABLA DB DB DB DB DB DB DB DB DB DB DB DB DB
;

MENUPl DB ' l-Manual ' , ' < ' MENUPZ DB '2-Automatico1,'<' RAMBEl DB 'RAM',< ' ' RAMBE2 DB 'BUEN ESTADO','< ' CKSUM DB 'CKSUM', ROMBEl DB 'ROM', PRENDID DB 'PRENDIDO'< ' ,' APAGADO DB 'APAGADO','<' AUTO1 DB '2-Tiempo 3-Salir','<' AUTO2 DB 'l-Temperatura','<' TEMPERA DB 'Temperatura? ' GRADOS DB ODFH, C ' ,< ' ' ' SEGUNDO DB 'Segundos?','<'
' < I
I < '
I , ' <

1FFOH ORG MOV 8KB


MOV

DX,OFFAOH
AX, OFE3CH

;RESET ;CONFIGURAR

UMCS

PARA

DX.AL OUT DB DW DW

OEAH OOOOH OFEOOH

SALTO

CODE END

ENDS