Sie sind auf Seite 1von 22

UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA

c,8 * T .

REPORTE FINAL DE SEMINARIO DE PROYECTOS INGENIERIA BIOMEDICA

DESARROLLO DE UN METRONOMO DIGITAL BASADOEN EL MICROCONTROLADOR COP8780CJ

ALUMNO: ENRIQUE RIOS AMEZCUA mat. 88327311

ASESOR:PROF. SALVADOR CARRASCO SOSA

Julio de 1997 Mxico D.F.

INTRODUCCION En el laboratorio de fisiologa Humanq se realizan muchas pruebas que involucran parmetros, generalmente de tipo cardiopdmonares.
Una de las prueba que se realiza es la que involucra un fenmeno conocido, como Arritmia respiratoria.

la medicin de diversos

Durante el desarrollo de la prueba se utilizaba un metrnomo. El cual es un aparato que, medianteun mecanismo de relojera, hace mover una varilla en forma de pndulo invertido, con un contrapeso que puede deslizarse a lo largo de ella y colocarse frenteal nmero que se desee de una escala verticalfija en el aparato. Sirve para medir el tiempo, el sonido que produceel @ndulo, que oscila en el metrnomo al ponerlo en movimiento, indica de manera exacta la medicin del tiempo.El intervalo de tiempo seleccionableenun metrnomo comn variadesde 40 hasta
208 ciclodminuto. Con ayuda de este metrnomo se le peda al paciente que controlara su frecuencia respiratoria.

Lo cual resultaba dificil la mayora de las veces para el paciente, no logrando sincronizar su frecuencia
respiratoria conla frecuencia seleccionada enel metrnomo. Se propuso el desarrollo de un metrnomo digital, que ayudara mas fcilmente a sincronizar al paciente a una frecuencia requerida, para lo cual se p r o p usar una barra de 60 leds, colocados en forma vertical y continua, con lo que se propone, que esta barra de leds, funcione en ciclos de encendido-apagado, logrando que el paciente
e d controlada con ayuda deun siguiera este estimulovisual, para sincronizar su respiracin, esta barra de leds s

microcontrolador, el microcontroladorCOP878OCJ de National Semiconductor.

METODOS
Debido a los requerimientos mencionados anteriormente, el instrumento (Metrnomo digital), se desarrollo en dos mdulos, un modulo consisti6 enel desarrollo del sistema mnimobasado en el microcontrolador COP878OCJ, y el otro modulo consisti enla barra de 60 leds. Descripcin del instrumento Metrnomo digital, el metrnomo digital genera un tren de pulsos, cuya frecuencia puede ser seleccionada. Este tren de pulsos entra a la barra de leds, generando ciclos de encendido-apagado.Para lograr este trende pulsos se utiliza la funcin timer del microcontrolador COP878OCJ. Se dispone de un teclado para seleccionarla frecuencia

I
<
3

i
Teclado

Despliegue

Mcrmntrolador COPSOS7CJ
1

>

Barra de leds

de 1 a 120 ciclodminuto, de encendido-apagado de la barra de leds, la frecuencia seleccionada se visualizara en

una pantalla de 4 displays de7 segmentos. (Ver diagrama a bloques del instrumento).
El modulo del sistema mnimo esta basado en el COP878OCJ que cuenta conlas siguientes caractersticas: El COP878OCJ esun miembro de la familia de microcontroladores de8 bits "COPS", de National Semiconductor. El dispositivo usado esta disponible enuna versin DIP de 40 patas borrable mediante W. Este microcontrolador de bajocosto, es una microcomputadoracompleta,conteniendotodoslossistemasde reloj, lgica de interrupcin, memoria Epromy R a m , y puertos YO necesarios para el control de funciones dedicadas. Otras de sus caractersticas generales son; Memorias internas Eprom de 4KBytes, y Ram de 128Bytes. Velocidad de reloj de lMHz hasta D C . Contiene 6 puertos YO (Bidireccionales) de un Byte de ancho, y ademas cuenta con otras patas de funciones especiales; Vcc, GND, RESET, y para entradas de Reloj CKO, y CM. Los dispositivos perif&icos que se conectaron al microcontrolador, fueronun teclado de 12 botones enun arreglo matricial de 3 *4, y un sistema de visualizacin que consisti en 4 displays7 de segmentos denodo comn. El modulo de la barra de leds se realizo medianteun arreglo en cascada de 15 circuitos74LS194, que son registros de corrimiento bidireccionales de 4 bits, 60 leds, y una pequea lgica de control para manejar los registros de commiento. Descripcin del modulo del sistema mnimo Como se ha mencionadoanteriormente, el sistemamnimoesta

basado alrededordel micrmntrolador


se

COPS78OCJ, se selecciono este microcontrolador, debido a su costo y a la ventaja de que este microcontrolador contiene internamente todos los dispositivos necesarios. Esto comparndolo con los microcontroladores que utilizan en la UAM-1, como son el 68HC11 de Motorola, y el 80188 de Intel.

Para trabajar con el COF%78OCJ, se adcpri la Unidad de evaluacin y programacin C O R , esta unidad esta
conformada con los siguientes elementos: Una tarjeta EPU-COPS, un cable para conectar la tarjeta al puerto serial
de la PC, una fuentede poder para alimentar la tarjeta, 3 disquetes conteniendo el
manuales de referencia. El material empleado enla realizacin del sistema mnimo h e el siguiente: SEMICONDUCTORES U1 - microcontrolador, COPS78OCJ. U2 - 74LS1264 buffers de 3 estados.
U3 - 74LS04, inversores.

s o -

para la tarjeta, y

D l - 1N914, diodo de silicio. DISP1-DISE - ODR-2044 display doblesde 7 segmentos de nodo comn. RESISTENCIAS (Resistencias f i j a s a 1/4 Watt,y 5% tolerancia) R 1 - 47000-0hm.

M-R5 - 180-0hm.
R6-RS - 1OOO-Ohm. R9 - 1 megaOlyn.

CAPACITORES

c1-0.1 M F , poliestet.
C2-C3 - 82 pF, ~ e r m i ~ a .

MATERIAL Y PARTES ADICIONALES S1 - switch, SPST.

XTAL - cristal de cua~zo, a 530 K H z .


I C E 3 teclado, de 12 teclas arreglo matricial de 3*4.

Tablilla perforada para wire grap,bases para wire grap, alambre wire grap. Seanexael

diagrama delsistema mniqo

(Ver diagrama "Modulo de sistemamnimo

basado en el

COP878OCJ").Comopuedeobservarseen

eldiagrama,elsistemamnimoescompacto,nonecesitndose controlador de perifricos de control, o algn La

adicionarcircuitosexternoscomo,memorias,lgica

conexi6n al microcontrolador se realizo de la manera siguiente: Se conecto la circuiteria de reloj del sistema, a las entradas CKI, G7KKO (patas7 y 8 del COP878OCJ). Se conecto el circuito de reset a la entrada RESET (pata 34 COP878OCJ). Se conecto el puerto L a la parte de visualizacin, losdos displays dobles (puertoL, LO-L7, patas de la 17 a la 24 del COP8780CJ). Se conecto el circuito74LS126A al puerto C, este parte se encarga de la seleccin del display que se va a encender (puerto C, CO-C3, patas 39, 40, 1, 2 del COP878OCJ). Se conectaron al teclado

los puertos D e I, el puerto D se encarga de escanear el teclado, el puerto I se utiliza para retorno (puerto D,
DO-D7, patas de la 25 a la 32, y puerto I, 10-17, patas de la 9 a la 17, del COP8780C.l). y el puerto G se conecto con circuitos inversores implementadoscomoW e r s , 74LS04 (puerto G, GO-G3, patas 35 y 38, del COP878OCJ

para controlar el borrado CLEAR (pata 37, G2),yelcorrimientode


35 GO/INT).
Descripcin del modulo de la barra de leds

la barra de leds SOB1 (pata 36, Gl), se

utilizo para la sefial de reloj CLOCK (pata 38 G3TTIO): y para la interrupcin va hardware se utilizo INT (pata

El modulo de la barra de leds, esta basada en 15 circuitos de corrimiento direccional(74LS194A), que controlan
60 leds, estabarra de leds es controlada por el modulo del sistema mnimo,se necesitan 4 sefIalespara controlar a

la barra de leds. Esta seiiales son: CLOCK; Esta seal nos da el tren de pulsos para encender los leds, dependiendo de la frecuencia de la sem, esa
s e d la velocidadde encendido apagadode los leds.

CLEAR; Esta s e w nos limpia todos los registros de los circuitos de corrimiento.

SO/Sl ; Esta sefal se encarga de indicar un corrimientohaciaa

la derecha o hacia la izquierda,aunque se

requieren dos seales diferentes SO y S 1, con una sola seal nos basta ya que S 1 es la negacin deSO.
I N T ; Esta sefal nos da la interrupcin del microcontrolador,se conectacon los leds60 y 1

de la barra, con esto ek

microcontrolador, sabe que hacer ya que el led 6 0 , indicara que toda la barra esta encendida, y se procederaa realizar un corrimiento hacia la izquierda para apagar los leds, para lo cual se modifica SO/Sl, el led 1 indicaria~ que se apagaron todos los leds,y se debe iniciar un corrimiento hacia la derecha, para volver a encender los leds se modifica SOQl. El material que fue empleado en la barra de leds fue el siguiente:
SEMICONDUCTORES U1 - U1 5 - 74LS194, Registros universales bidireccionalesde 4 bits. U16 - U18 - U19- 74LS04, Inversores. U20 74LS126A, buffers de 3 estados.
L1 - L60 -1eds standar de alta luminosidad, rojos.

MATERIAL Y PARTES ADICIONALES

Tablilla perforada para wire grap, bases para wire gap, alambre wire grap.

Se anew el diagrama de la barra de leds (ver diagrama "Modulo de la barra de leds"). En el diagrama puede observarse,laconexindeloscircuitos de corrimiento bidireccional (74LS194), se conectanen cascada, para permitir un corrimiento serial hacia la izquierda o hacia la derechg por lo que se observa que las patas de las entradas en paralelo 3 - 6, no se utilizan ,las salidas 12 - 15, si se utilizan para conectar los leds, no se colocaron
resistencias de carga en los leds, por,que se ha ledo que este tipo de aplicacin no es necesario colocar

una

resistencia de carga para limitar la corriente del led Como se puede ver se necesitaron 15 circuitos de corrimiento
74LS194, y para poder controlarlos, se necesitan 4 seales externas, para poder manejarlos se hizo un manejo de

bloques de 5 , 74LS194, Las seiIales de control son las siguientes:


CP: Seal de entrada de pulso de reloj, pata 1 1 del 74LS194.

M R : SeiIal de borrado activa baja, pata 1 del 74LS194.


SO y S1: Seales para indicarcorrimientohacialaderecha

o hacialaizquierda,

SO pata 9 y S1 pata 10 del

74LS194.

Estas sefialesde control se generan en el sistema mnimoy se designaron como,CLOCK, CLEAR, y SO/S l .
Estas seales de control se conectan aun 74LS04, configurado como 3 buffers para esto se conectaron las patas 2 y 3, 6 y 9, 12 y 1 1 , esto para conectar 2 inversores en serie y lograr una mayor comente de salida. l a

CLOCK se conecto a la pata 1 del 74LS04 y se tomo la salida pata 4, para conectarla a la

pata 1 1 , CP del

74LS194. La sefal CLEAR se conecto a la pata 13 del 74LS04 y se tomo la salida de la pata 10, para conectarla a

la pata 1, M R del 74LS194. La sefal SO/S1 se conecto a la pata 5 del 74LS04 y se tomaron las salidas, SO pata 8,

y S 1 pata 6, que se conectaron a las patas 9, SO y 10, S 1 del 74LS194, se observa que S1 es la negacin de SO, por

eso solo se genera una seal SOB1 en el sistema mnimpy se usa un inversor para tener las dos seilales SO y S1
I

para el74LS194.

Se observa que se tienen 3 circuitos 74LS04, conectados de la misma forma (como se describi anteriormente), y
cada uno de estos controla 5 a circuitos 74LS194, esto se hizo para evitar problemas de cada de seilal, al tomar la
seial de salida directamente del sistema mnimo y conectarla 15 a circuitos los 74LS 194.

Se observa que la n i c a seal queva del la barra de leds al sistema mnimo es la de INT. Esta seal se toma de los leds 60 y 1, estas seales se metieron a 2 M e r s , 74LS04 cortocircuitando las patas 2 y 3, y 11 y 12, se toma la entrada a led 60 y se conecto a pata 13 del 74LS04, la salida pata 10 se conecto a la entrada del M e r de 3 estados, 74LS126, este M e r su s e a l de habilitacin pata 10 se conecto con la seal SO, la salida delM e r va conectada conla pata de INT del COP878OCJ. El led 1 se conecto ala pata 1 del 74LS04, y la salida se tomo de la pata 4, esta se conecto a la entrada del M e r de 3 estados, pata 12 del 74LS126, la seal de habilitacin del buffeE pata 13 se conecto con la seal S1, y la salida delM e r pata 11 se conecto tambin a la seal INT,pata 35 del
COp8780CJ.

11 '

I/

7a

-2 P

c1

'S

Desarrollo del programa en ensamblador El desarrollo delsoftware en ensamblador delCOP8780CJ se implement de la siguiente forma:
1.- Asignacin de las 12 teclas de ControI:
O a 9 - Representan los dgitos.

C - Representa teclapara borrar e inicializarde nuevo el sistema.


E - Representa teclapara iniciar el funcionamiento de la barra de leds.

N ) . El sistema trabaja a base de Poling (poleo),y de interrupciones (


2.- Inicializacin de parmetros: Se habilitan puertos, se limpian registros, se inicializanvalores para el timer. se habilitan displays para mensajes,
y se habilita el teclado.

3 .- Despliegue de mensajes:

Los mensajes desplegados sonlos siguientes:


i) VEL?" ;Este mensaje nos da la relacin que entre el intervalo de subida y bajada de la barra de leds. ii) "=l-ln;Este mensaje nos indica que es el mismo tiempo de encendido para intervalo de subida y de bajada.

iii) "FrEC"; Este mensaje nos indica que podemos introducir el valorde la frecuencia deseada.
iv)
"

? '; Este mensaje permanecer hastaqueno se presione un dgito.

4.- Espera teda:

La frecuencia seleccionada solo puede tomar un valor entre 1 y 120, La frecuencia que se introduce nos indica el

nmero de veces en un segundo, que se realiza un ciclo de encendido apagado de la barra de leds. UM vez que se selecciono la frecuencia se presiona la tecla E, (Enter) y se empieza a generar el tren de
pulsos en el sistema

mnimoqueva a controlar a la barra deleds. Si se presiona la tecla C (Clear), se limpia la barra deleds (se

Diagrama a bloques del programa general


~~ ~~ ~

apaga), y se vuelve a inicializar el sistema, empezando a desplegarlos mensajes de nuevo.

.................................................................................
.*********I**C*****a**Crr*C*******~************************~*******~*****~***********

P R O G M EN LENGUAJE E N S M L A D O R PARA ELMETRONOE40 DIGITAL, SE UTILIZO **** EL A W O P PARA ENSAMBLAR EL PROGRAMA, EL LNCOP PARA LIGARLO Y SE **** OBTUVIERON PROGRAMASCON EXTENSION .COF Y .HEX, LA PRIMERA SIRVIO PARA **** PARA EMULAR Y COMPROBAR EL PROGRAMA LA Y SEGUNDA SIRVIO PARA QUEMAR * * * * . * * * * EPROMS. LAS ****

;**** ;**** ;**** ;****

.************~*~*********~***************************~*************~*~**********~ .................................................................................
Y

;ESTE PROGRAMA GENERA UN TREN DE PULSOS, SEL,ECCIONABLE MEDIANTE UN TECLADO ;VISUALIZADA LA FRECUENCIA EN DISPLAYS DE I SEGMENTOS DE ANODO COMUN. .TITLE DISPLAYLED'BATA TABLE' .CHIP 880 .SECT MAIN,ROM,ABS=O

. *************.*****~**********~******************
;

*LOCALIDADES DE REGISTROS Y LAS BANDERAS USADAS*

................................................
PORTLD PORTLC PORTLP PORTGD PORTGC PORTGP PORTIP PORTCD PORTCC PORTCP PORTDD TMRLO TMRHI TAULO TAUHI
CNTRL
= =
=

= = = = =
=

= = =

=
= = = =

PSW

;REGISTRO DATOS PTO. L ;REGISTRO DE CONFIGURACION PTO. I , OD2 ;PINS DE ENTRADA DE P T O . L OD4 ;REGISTRO DE DATOS PTO. G OD5 ;REGISTRO DE CONFIGURACION PTO. G OD6 ;PINS DE ENTRADA DE P T O . G OD7 ;PINS DE ENTRADA DE PTO. I OD8 ;REGISTRO DE DATOS PTO. C OD9 ;REGISTRO DE CONFIGURACION T O .C QDA ;PINS DE.ENTRAIlA PTO. C ODC ;REGISTRO DE DATOS PTO. D OEA ;REGISTRO DEL BYTE LOW DEL TIMER OEB ;REGISTRO DEL BYTE UPPER DEL TIMER OEC ;REGISTRO DEL AUTOLOAD TIMER BYTE LOW OED ;REGISTRO DEL AUTOLOAD TIMER BYTE UPPER OEE ;REGISTRO DE CONTROL CNTRL OEF ;REGISTRODEL PSW OD1

OD0

.................................................................
*CONSTANTES Y LOCALIDADES DE RAM USADAS COMO REGISTRO AUXILIARES*

.................................................................
DIVLOW DIWPP
=
=

soBi%% = o 0 2
DISOR DIGIT2 BCD? DIGIT1 BCDl DIGITO BCDO JOKER CNTRG CNTR7
AUX
= 003
=

O00 001

030
032

= 031
=
=

= =
=

033 O34
035 OF0 OF1 OF2 OF3 OF4 OF5 OF6 OF^ OF8

VALIDO =
=
=

LETRA DIGI

= = =
=

nrm

COUNT = DIGITO = OF9 BCD = OFA TORNA = OFB TRUN = 4

; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;

........................................
*INICIALIZACION START:
LD C O U M J N T ,
x000

.........................................
; ; ; ; ; ; ;
i

DE

PUERTOS

PARAMETROS*

LD PORTGC, #QUE LD PORTGD, #O00 LD DIVLOW, # O 4 4 LD DIWPP, %O35 L D DIGI, it002 LD DIGIT2, #OFF LD DIGIT1, #OFF

LD VALIDO, # O 0 0 LD SP, # 0 6 E
LD CNTRL, #OAO LD PSW, #O00 IQ TMRLO, # O 0 0 LD TMRHL, #a00 LD TAULO, #O00 LD TAUHI, #O00 LD B, # O 4 0 LD [Btl, # O 2 6 LD [ B t l , # O 4 7 LD [B+l, #O06 LD I B + I#, 0 2 F LD [ E + ] , # O 7 9 LD [ B + ] , # 0 3 F LD [ B + l#, O 7 9 LD [ B + l , # O 3 7 LD [ B t l# , O46 LD LB+], #O06 LD [ s t ] # , 02F [ L B D l, #OOE LD X , # O 3 0
.-

. \

;PUNTERO PARA CARGAR MENSAJES 10H LA LETRA ? ;CARGO EN DLRECCION DF, RAM ;CARGO EN DIRECCIUN DE: R4M 11H LA LETRA L LETRA E ;CARGO EN DIRECCION DE RAM 1 2 H LA ;CARGO EN DIRECCION DE RAM 1 3 H LA LETRA P ;CARGO EN DIRECCION. DE: RAM 1 4 H LA LETRA 1 ;CARGO EN DIRECCION DE RAM 1 5 U LA LETRA ;CARGO EN DIRECCION DE RAM 16H LA LETRA 1 ;CARGO EN DIRECCION DE RAM 1 7 H LA LETRA ;CARGO EN DIRECCION DE RAM 1 8 H LA LETRA C ;CARGO EN DIRECCION DE RAM 1% LA LETRA G ;CARGO EN DIRECCION DE: RAM 1AH LA LETRA r ;CARGO E N DIRECCION DE: RAM lJ3H LA LETRA F ;CARGO EN X POINTER DIRECCION DE D I G I T 2

**C**********************C*

* C U E R PP OR I N C I P A L

...............................

DEL PROGRAMA*

MAIN :
#O40 ; I N I C I O DE DIRECCION DE MENSAJES PARA VER "rEL?* LD LETRA, O JP SC R;I SO U A N B A LR TO U TO IN PC AI O N LD LETRA # ,O 4; 4 INICIO DE DIRECCION DE MENSAJES- PARA VER "-1-1" O JP SC R;I SO U A N B A LR TO UTINA OPCION LD LETRA, #O48 ; I N I C I O DE DIRECCION DE MENSAJES PARA VER "FrEC" J S RO P C I O N ;SALTO A SUBRUTINA OPCION JSR KEYSCAN ;SUBRUTINA -KEYSCAN PAPACAPTURARINFORMACIONDELTECLADO I F B I T I , AUX O E ;SE PRESIONO TECLA C J P CHECO ;SALTOA CHECO VUELTA: JSR DISPLAY ;SUBRUTINA DE DESPLIEGUE DE SELECCION JSR KEYSCA ;SALTO A KEYSCA IFBIT 7, AUX O E ;SE PRESIONO TECLA C J P CHECO ;SALTOA CHECO JP W E L T A ; S A L T OAW E L T A CHECO: I F B I T 6, AUX ;SE PRESIONO ENTER J P ENTRO ;SALTO A ENTRO T E S T : R B I T TRUN, CNTRL ;DETENGO TIMER J S R CLEAR ;SUBRUTINA DE I N C I A L I Z A C I N DE PARAMETROS CLEAR RC ACARREO ;BORRO JMP;SALTO MAIN A FBAIN ENTRO: X A, BCD2 #O00 IFEQ A, J P TEST X A, BCD2 J S R ENTER SUBRUTINA ;SALTO A ENTER I F BV 7 IT A , LIDO ; J P TEST SBIT o, PSW SBIT l . PSW R B I T 2 , CNTRL ; LD PORTGD, # O 0 6 S B I T TRUN, CNTRL ;INICIA TIMER RC ;BORRO ACARREO JMP W EW ;L SE T AA L LT TA O
x************************************************

*SUBRUTINA OPCION DESPLIEGA MENSAJES * DE L A S OPCIONES DISPONIBLES

EN PANTALLA*

.................................................
OPCION:
LD CNTR6, #OFF LD CNTR7, #O06 LD EORTCC, #O0 LD PORTLC, #O00 LD PORTCD, #O0 LD PORTLD, #OFF INIMEN: LD A, LETRA 6 X A, LD A, [B+]
T.n

PORTCn.

;CUENTA PAFG'. TIEMPO DE DESPLIEGUE DE M E N S A J 6 ; H A B I L I T OP T 0 . L COMO ENTRADA ; H A B I L I T OP T 0 . C COMO ENTRADS ;NO SACO DATOS POR PTO. C ;NO SACO DATOS POR P'I'O. L ;CARGO EN B P Q I N T E R EL CODLGO DEL.MENSAJE ;INTEACAMBIO CONTENIDO DE A CON B POINTER ;CARGO ACUMULADOR CON CONTENIDO DE B POINTER
:COMANnO PARA HAAT1,TTAR nTSPT,AY

#O1

LD A, [B+l LD PORTCD, # O 0 LD PORTLD, #OFF LD PORTCD, #O2 X A, PORTLD LD A, [Btl LD PORTCD, #O0 LD PORTLD, #OFF LD PORTCD, # O 4 X A, PORTLD LD A, L B 1 LD PORTCD, # O 0 LD PORTLD, #OFF LD PORTCD, #O8 X A, FQRTLD LD PORTCD, # O 0 LD PORTLD, #OFF DRSZ CNTR6 JHP INIMEN DRSZ CNTRI JMP INIMEN RET
; ;

;CARGO ACUMULADOR COhl CONTENIDO DE B POINTER ;DEJO DE SACAR DATOEOR PTO. C ;DEJO DE SACAR DATOPOR P M . L ;COMANDO PARA HABILITAR 2 LED ;DATO DEL DIPLAY 2 ;CARGO ACUMULADOR CON CONTENIDO DE B POINTER ; DEJO DE SACAR DATO fOR ?TO. C ;DEJO DE SACAR DATO EOR PTO. L ;COMANDO PARA HABILITAR3 LEI) ;DATO DEL DIPLAY 3 ;CARGO ACUMULADOR COM CONTENIDO DE B POINTER ;DEJO DE SACAR DATO E I O R PTO. C ;DEJO DE SACAR DATO POR PTO- L ;COMANDO PARA HABILITAR 4 LED ;DATO DEL DISPLAY 4 ;DEJO DE SACAR DATOE O R PTO. C L ;DEJO DE SACAR DATO POR PTO. ;SALTO A I M I U D ;RETORNO A MAIN

. .........................................................
.

*SUBRUTINA- KEYSCAN PARA DETECTAR SI SE OERIMIO UMA TECLA* *SE GUARDA ELCODIGO Y POSTERIORMENTE SE DECODIFICA EN * * KEYS SUBRUTINA *

.........................................................
;BORRO ACARREO ;DATO PARA HABILITAR 2 DISPLAY ;SACO DATO
I?

KEYSCAN : RC AGAIN z LD PORTCD, # O 2 LD PORTLD, #02C NOP LD PORTCD, #O0 LD PORTLD, #OFF LD B r #DIGIT0 LD [Bl, #O08 JMP SCAN *VECTOR DE

;DESABILITO DISPLAY ;APAGO DISPLAY DE DIGIT0 ;CARGO EN B POINTER DIRECCION E:N DIRECCION DE B POINTER ;CARGO EL VALOR 08H ;ESTE VALOR ES PARA ESCANEAR ULTIMO RENGLON CONTROLA EL CORRIMIENTO DELA BARRA DE LEDs*

....................................................................
INTERRUPCION
;
......................................................................

RBIT TRUN, CNTRL

IFBIT 5, PSW JP TMRINT I F B I T 3, P S W JP EXTINT SBIT O, PSW SBIT TRUN, CNTRL ; RETSK THRINT: RBIT 5, PSW SBIT TRUN, CNTRL ;VECTOR DE INTERRUPCTON, LA INTERRUPCION SE REALIZA RETI ;VIA HARDWARE, ESTO ES SE ACTIVA, MEDIANTE EL ENCENDIDO EXTINT : IFBIT 2, PORTGD ;DEL LED 60 (ESTANDO APAGADO ELLED 60). Y MEDIANTEEL JP BAJO ;APAGADO DEL LED 1 (ESTANDO LED 1.ENCENDIDO). JP s u m ;AL INZCIARSE INTERRUPCIOW, SE EVALUA LA CONDICION DEL BAJO : RBIT 2, PORTGD ;DATO S O / S l , PARA CAMBIAR ESTE VALOR PARA CAMBIAR LA RBIT 3 , PSW ;DIRECCION DEL CORRIMIENTO DE LA BARRADE LEDS. , CNTRL SBIT 2 SBIT TRUN, CNTRL ; RETI sum: S I T 2, POATGD W I T 3, PSW RBIT 2, CNTRL ; SBIT TRUN, CNTRL RET1

.........................

*CONTINUA
SCAN :

.........................

RUTINA

KEYSCAN*

RC LD A, IBI X A, PORTDD NOP


NOP

;BORRO ACARREO ;CARGO A CON VALOR DE B POTNTER ;SACO VALOR DE A POR PTO.D ;ESPERA
; ESPERR

NOP NOP

;ESPERA ;ESPERA
PORTTP

T,n

A.

: C A R G O VAT,OR

nF. P T O .

T F,N A

JP DECOD ;SI SE PRESIONO SALTO DECOD A

WEXDIG: LDA, RRC A

IBI

X Av fB1

X A, COUNT IFBIT O, COUNT JP AGAIN JP SCAN DECOD: AND A, #O07 X A, ILINE LD A, [BI AND A, #OOF SWAP A ADD A, ILIME XOR A+ #OFF AND A, #07F JSR KEYS

;CARGOA CON EL V A W R DE B POINTER ;ROTO A DERECHA VALOR DE A VALOR PARA ESCANEAR ;OTRO RENGLON ;GUARDO VALOR DE A EN B ;GUARDO VALOR DE A EN REGISTRO COUNT O UNO, SE TERMINO DE ESCANEAR RENGLONES ;ES EL BIT ;SI SE TERMINO DE ESCANEAR SALTO A AGAIN ;NO SE TERMIMU DE ESCANEARSALTO A SCAN ;ENMASCARO 3 LSB DE E'TO. I ;GUARDO EN ILINE VALOR DE I ;CARGO EN A VALORDE B POINTER ;ENMASCARO 4 LSB DE A ;INTERCAMBIO 4 LSB POR 4 MSB ; S W A CON ILINE ;COMPLEMETO A1 DE A ;ENMASCARO BITS PONGO O ABIT 7 ;SALTO A KEYS ; PONGO ACARREO ;RETORNO A MAIN PARA DESPLEGAR EN DISPLAY VALOR DE TECLADO* SELECCIONADO *

sc
RET *SUBRUTINA

..............................................................
*
DISPLAY
************X********************~******X*******~*****~*******

DISPLAY: CLR A X A, DIGI IFGT A, #O00 JP GUARDO JP VEO GUARDO: IF l $ C JP VEO X A, DIGI X A, AUX X A, [X+] CLR A X A, BCD X A, [X+] LD CNTRG, #OFF LD CNTR7, # O 0 1 VEO: X .A, DIGI VEA: LD PORTCD, #O0 LD PORTLD, #OFF LD A, #OFF X 7A., DIGITO LD PORTCD, #O1 X A, PORTLD NOP LD PORTCD, # O 0 X A, PORTLD LD PORTLD, #OFF X A, DIGITO LD A, #OFF. X A, DIGITl LD PORTCD, #O2 X A, PORTLD NOP LD PORTCD, # O 0 X A, PORTLD LD PORTLD, #OFF X A, DIGITl LD A, #OFF X A , DIGIT2 LD PORTCD, # O 4 X A, PORTLD NOP LD PORTCD, # O 0
X A.

;LIMPIO A ;INTERCAMBIO A POR DIG1 ;ES IGUAL A OH DIGI ;RUTINA PARA GUARDAR DATOS ;RUTINA PARA VER DATOS DE GUARDO ;NO HAY ACARREO ;SE TIENE TECLA ;VUELVO A GUARDAR EN DIGI SU VALOR ;INTERCAMBIO CONTENIDO DE AUX CON ;INTERCAMBIO A CON X ;LIMPIO A ;INTERCAN310 A POR BCD ;INTERCAMBIO VALOR BCD EN X

;GUARDO DE NUEVO VALOR DIG1 ;NO SACO DATOS POR PTO, C ;NO SACO DATOS POR P'IO. L ;LIMPIO A ;INTERCAMBIO CONTENIDO DE A DIGITO CON ; C @ " J D O P A M HABILITAR DISPLAY1 ;DATO DEL DIPLAY 1 ;ESPERA ;NO SACO DATO DE PTO. L ;INTERCAMBIO DATO DISPLAY1 CON A ;NO SACO DATO DE PTO. C ;VUELVO A GUARDAR EN DIGITO ;LIMPIO A ;INTERCAMBIO CONTENIDO DE A CON DIGITl ;COMANDO PARA HABILITAR DISPLAY 2 ;DATO DEL DIPLAY 2 ;ESPERA ;NO SACO DATO DE PTO. L ;INTERCAMBIO DATO DISPLAY1 CONA ;NO SACO DATO DE PTO. C ;VUELVO A GUARDAR EN DIGITI ;LIMPIO A ;INTERCAMBIO CONTENIDO DE A CON DIGIT2 ;COMANDO PARA HABILITAR DISPLAY 3 ;DATO DEL DIPLAY 1 ;ESPERA ;NO SACO DATO DE PTO. L
: T N T E R C A M R T O n A T O n T S P T . A Y 1 CON A

PORTT,n

" " " , " _ _ _ _ L "

"

1_11_"_

....

JP CHANCE JP FIN CHANCE: DRSZ CNTRG JMP VEA


DRSZ iXiT.7

;SALTO A CHANCE ;SALTO AFIN

RC MAIN

JMP VEA FIN: A ;RETORNO RET

CARRY ;RESET

.
;

...................................................

. ...................................................

*SUBRUTINA PRRA ESCANEAR T E C L A W PARA 2 Y 3 DIGITW


;TBORRO ACARREO ;CARGO EN B POINTER DIRECCION DE DIGIT0 ;CARGO EL VALOR 08H E : N DIRECCION DE B POINTER ;ESTE VALOR ES PARA ESCANEAR ULTIMO RENGLON

KEYSCA: RC LD E, #DIGIT0 LD [B], #O08

SCANN: RC LD A, LB1 X A, PORTDD NOP NOP


NOP

NOP LD A, PORTIP AND A, #O07 IFEQ A, #O00 JP NEXDG JP DECO

;BORRO ACKRREO ;CARGO ACON VALOR DE B POINTER ;SACO VALORDE A POR PTO. D ;ESFERA ;ESPERA ;ESPERA ;ESPERA ;CARGO VALOR DE PTO. I EN A ;ENMASCARO 3 LSB DE ETO. I ;SE HA PRESIOBADO ALGUNA TECLA ;NO SE PRESIONO SALTO A NEXDIG ;Si SE PRESIQNO SALTO A DECOD

NEXDG: LD A, [B] RRC A A, [Bl X A, COUNT I FBIT O, COUNT JP ADIOS JP SCANN ADIOS: RC RET DECO: AND A, #O07 X A, ILINE LD A, [Bl AND A, #OOF SWAP A ADD A, ILINE XQR & #OFF AND A, #07F JSR KEYS CLR A X A, DIGI DEC A X A, DIGI
X

POINTER ;CARGO A CON EL VALORB DE ;ROTO A DERECHA VALOR DE A VALOR PARA ESCANEAR ;OTRO REWGLON ;GUARDO VALORDE A Eh B ;GUARDO VALOR DE EN A REGISTRO COUNT ;ES EL BIT O UNO, SE TERMINO DE ESCANEAR RENGLONES ;SI SE TERMINO DE ESCANEAR SALTO A ADIOS ;NO SE TERMINO DE ESCWEAR SALTO A SCAN ;BORRO ACARREO ;RETORNO A MAIN ;ENMASCARO 3 LSB DE PTO. I ;GUARDO EN ILLNE VALOR DE.1 DE B POINTER ;CARGO EN A VALOR ;ENMASCARO 4 LSB DE P. ;INTERCAMBIO 4 LSB PORMSB 4 ;SUMO A CON ILINE ;COMPLEMETO A 1 DE A ;ENMASCARO BITS PONGO A O BIT 7 ;SALTO A KEYS ;LINPIO A ;INTERCAMBIO A POR DIGI ; DECREMENT0 A ;VUELVO A GUARDAR DIGI ;PONGO ACARREO ;RETORNO A MAIN

sc
RET

.
;

..................................................................
*SUBRUTINA PARA FUNCIOld TECLA CLEAR, LIMPIO E INCIALI~O REGISTROS*

..................................................................
PORTGD,

CLEAR : LD LD LD LD LD LD LD LD LD

b D DIGI,

#O00 #O02

DIGIT2, DIGITl, DU;ITO, =DO, BCD1, BCD2. VALJDO, DIVLOW,


nTTIT1PP.

#OFF #OFF #OFF


#O00

#O00 #O00
$000

i.n

itn35

#O44

LD T N H I , #O00 Ln CNTRL, #GAO LB PSW, #SO0

; ; ;

LD AUX, #O00 LD B, # O 4 0 ;PUNTERO PARA CARGAR MENSAJES LD X, #O30 ;CARGO EN X POINTER DI.RECCION DE DIGIT2 RET SUBRUTINA ;RETORNO DE

...........................................................
*SUBRUTINA PARA FUNCION TECLA ENTER, GENERA TREN DE PULSOS*

...........................................................
;BORRO

ENTER: RC
LD CNTRG, #OFF LD CNTRl, bolA

ACARREO

LOOP : DRSZ CNTR6 JP LOOP DRSZ CNTR7 JP LOOP CLR A IFBIT 7, DIGIT0 JP OTROS JP XCIEN OTROS : IFBIT 3 , DIGIT1 JMP XUNO JMP XDIEZ XCIEN: RC CLR A X A, BCD2 IFGT A, # 1 JMP ALFIN X A, BCD2 LD A, #O64 X A, BCD2 CLR A X A, BCDl JSR MULTIlO X A, BCDl JSR SUMA J P FINAL XDIEZ : X A, BCD2 JSR MULTIlO X A, BCD2 JSR SUMA JP FINAL XUNO: JSR sum FINAL : CLR A x A+ llLSOB IFGT A, #I20 JP ALFIN X A, DISOR JSR FDV168 CLR A X A, DIVUPP X A, TAUHI X A, DIVLOW TAULO X LD AUX, #O00 RET ALFINz SBIT 7 , VALIDO RET

;LIMPIO A ;SE TIENEN 3 NUMEROS ;SE TIENE 2 NWEROS ;BORRO ACARREO

;CARGO 100 EN A ;GUARDO 100 EN BCD2 ;LIMPIO A .

;SALTO A SUBRUTINA DE DIVISION ;LIMPIO A ;INTERCAMBIO APOR D I W P P ;GUARDO EN AUTO R E L O A 0 UPPER ;INTERCAMBIO A POR DIVLOW ;GUARDO EN AUTO RELOADLob3 ;RETORNO A CHECQ

*****************
*****************
SUMA:
CLR A X A, BCD2 A D D A, B c D l ADD A, BCDG X A, DISOR RET

*SUBRUTINASUMA*

;8

;SUBRUTINA PARA SUMAR BJTS

2 NUMEROS DE

*******************
*SUBRUTINA MULTI10*

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

IFEQ A, #O08 JMP SUM8 I E A, Q #O03 m SLIM7 IFEQ A, #O06 JMP SUM6 IFEq A, # O 0 5 JME SUM5 IFEQ A, #O04 JMP SUM4 IFEQ A . , #O83 JMP SUM3 IFEQ A, #O02 JMP SUM2 JMP SUM1 SUM9: LD A , 605A RET SUM8: LD A, #O50 RET sw71 LD A, ti046 RET SUM6 : LD A, #03C RET s t 1 1 4 5.c LD A, #O32 RET SUM4 : LD A, #O28 RET S U M 3 1 LD A, #01
RET

;SUBRUTINA PARA MULTIPLICAR ;POR EL VALOR DE 10

UN

DIGITO(1-9)

SUM2 : LD A, #O14 RET SUM1 : L D A, # W A RET

FDV168 :

**********.**x**********

*SUBRUTINA DE DIVISION*

.......................

LD CNTR7, #16 LE B, #2 LD FBI, # O FD168S: LD B, #O


FD168L: RC LD A, iB1 ADC A, [BI X A, [B+l A, [El A K A, fB1 X A, [Bfl LD A, IBI ADC Ar LB1 X A, [Bl LD A, [B+] IFC JP FD168B

sc
SUBC A, [B] IFNC JP FD168T FLU 68R.: LD B, #2 X A, [El LD B, #O SBIT O, [B] DRSZ CNTR7 JP FD168L RET FD168T: DRSZ CNTR7 JP FD168S RET FD168B: SUBC A, [Bl JP FD168R *SUBRUTINA

CNTR7 CON 16 ;CARGO B ELNTER CON 3 ;CARGO VALORO EN 5 ;CARGO B CON O ;BORRO ACARREO ;CARGO A CON UALOR B ;SUMO CON ACARREO A CON B ;INTERCAMBIO A CON B ;CARGO A CONVALOR B ;S W O CON ACARREQA COW B ;INTERCAMBIO A CON B ;CARGO A CON VALORB ;SUMO CON ACARREO A CON B ;INTERCAM%IO ACON B ;CARGO A CONB ;SI HAY ACARREO ;SALTO A FD168B ;PONGO ACARREO ;SUSTRAIGO CON ACARREO A CON B :SI NO ACARREO ;SALTO A FD168T ;CARGO B POINT333 CON 2 ;INTERCAMBIO A POR B ;CARGO B CONO ;PONGO BIT O DE B :SALTO A FD168L ;RETORNO A ENTER ;SALTO AFDlBAS ;RETORNO A ENTER ;SUSTRAIGO CON ACARREO ;SALTO A FD168R

;CARGO

A BCON

.........................................................
.........................................................
KF,YS :

KEYS

PARA

DECODIFICAR

VALOR

DE

TECLA

OPRIMIDA*

.= 053A

.ADDR KEY8 ADDR KEY7 .ADDR R .ADw R

. A m R
.ADDR R .ADDR R .ADDR R .ADDR R .ADD5 R .ADDR R .ADDR R .ADDR R .ADDR R .ADDR R .ADDB R .AmR R .ADDR R .ADDR R .ADDR R .ADDR R .ADDR R ADDR R .ADDR R .ADDR R .ADDR R .ADDR R .ADDR R .ADDR R .ADDR R .ADDR K e y 6 .ADDR R .ADDR K E Y 5 .ADDR KEY4 .ADOR R .ADDR R .ADQ R .ADDR R .ADDR R .AWR R .ADDR R .ADDR R .ADOR R .ADDR R .ADDR R .ADDR R .ADDR K E Y 3 .ADDR R .ADDR KEY2 ADDR K E Y 1 .ADDR R .AWR R .ADDR R .ADDR R .AWR R .AlJUR R .ADDR R .ADD5 R .ADDR R .ADDR R ADDR.R .ADMI U .ADDR KEYE .ADDR R . A m KEY0 .ADDR KEYC

KEY9 : LD AUX,

LD BCD,
RET
R:

#O18 #O09

-;GUARDO E N AUX VALOR DE TECLA ;GWI4RDO EN BCD VALOR 9 ;RETORNO

RET
KEY 8 :

;RETORNO #O00 #O08 #O78 ;GUARDO EN AUX VALOR DE TECLA ;GUARDO EN BCD VALOR 8 ;RETORNO
;GUBRDO EN AUX VALOR DE TECLA :GIIARnO F.N R C n VAT,OR 7

LD AUX,

LD BCD,
RET

KEY7 : LD AUX,

T.n

Am.

#on7

LD BCD, RET KEY5 : LD AUX, LD BCD, RET KEY 4 : LD AUX, LD BCD, RET KEY 3 : LD AUX, LD BCD, RET KEY 2 : LD AUX, LD BCD, RET KEY 1 : LD AUX, LD BCD, RET KEY E : L D AUX, RET KEY O : LD AUX, LD BCD, RET KEYC: LD AUX, RET

#O06
#O12 #O05

;GUARDO EN BCD VALOR 6 :RETORNO ;GUARDO EN AUX VALOR DE TECLA ;GUARDO EN BCD VALOR 5 ;RETORNO ; G U A R W EN AUX VALOR DE TECLA ;GUARDO EN BCD VALOR 4 ;RETORNO ;GUARDO EN AUX VALOR DE TECLA ;GUARDO EN BCD VALOR 3 ;RETORNO ;GUARDO EN AUX VALOR DE TECLA ;GUARDO EN BCD VALOR 2 ;RETORNO ;GUARDO E N AUX VALOR QE TECLA ;GUARDO EN BCD VALOR 1 ;RETORNO ;GUARDO EN AUX ;RETORNO VALOR DE TECLA

#O19 #O04

#O30 #O03

#O24 #O02

#O79 #O01

# O O

#O40 #O00

;GUARDO EN AUX VALOR DE TECLA ;GUARDO EN BCD VALOR O ;RETORNO ;GUARDO EN AUX VALOR DE TECLA ;RETORNO

#O80

.END START

RESULTADOS
El metrnomo digital cumple con los requisitos originalmente planteacEos, como ayuda

para las pruebas

cardiopulmonares, ya que los pacientes pueden seguir mas ficilmente el estimulo visual de la barra de leds, que el del metrnomo mecnico, obtenindose a s un control mas adecuado de la frecuencia respiratoria. Ya se ha aplicado el instrumento a mas de 50 sujetos, con la finalidad de estudiar la arritmia respiratoria, para esto se registran simultneamente la frecuencia cardiaca

a partir d e l ECG, y la respiracin con

un

n e u m o g r a f o - a m p l i . La respiracin se controla a 0.2 Hi. y a continuacin se realiza el anlisisen el tiempo


y la frecuencia. Se muestra a manera de ejemplo la grfica de las sefales respiratoriasy cardiacas. Las sefales en

el tiempode la frecuencia cardiaca y larespiracincon sus respectivos espectros. Es notoriocomolas oscilacionesrespiratoriassincronizancon

l a s oscilaciones de la frecuenciacardiaca, y comolos dos espectros

coinciden en la frecuencia, siendo este fenmeno llamado arritmia respiratoria.Se anexa la grfica.

Ejemplo de Ir Arritmia Respiratoria

50.
I

-400 O

" "

200

400

600

O O

"

. .

"

O. 5
I I/

I
150.

"

1O 0
80

60
100-

4c 2 c

50
O 200

400
Ticnipo

600

0.2
H z .

0.4

0.6

Prof Salvador Carrasco Sosa Asesor

Aurnnfinrique %os-~mezcua mat. 883273 1 1

BIBLIOGRAFIA
1 .- NATIONAL SEMICONDUCTOR. "COPSDatabook". 1994.

2.- NATIONAL SEMICONDUCTOR. "COP8 assembler/linker/librarianuser's manual". 1995.


3.-NATIONAL SEMICONDUCTOR. "COP8 basic family user'smanual". 1995.

4.- MOTOROLA. "FAST and LS TTL Data". 1992. 5.- NTE. "7th Technical guide and cross reference". 1995.

6.- OFTREX CORPORATION. "LCD Liquid Cristal Displays". 1995.


7.- A. C. DOWNTON. "Computadores y microprocesadores". Addison-Wesley Iberoamericana.

Tercera edicin 1993.


8.- ROGER L. TOKHEIM. "Principios Digitales". M&rawHill. Segunda edicin 1992.

McGraw Hill. Segunda 9.- ROGER L. TOKHEIM. "Fundamentosde los microprocesadores".

edicin 1994.

Das könnte Ihnen auch gefallen