# Simulador de ecg con pic



## zicutta (Nov 3, 2006)

Algún forero tiene información de como realizar un simulador de paciente ECG?
o algun CI generador de impulsos que puedas definir la forma de onda
he realizado pruebas con generadores de funciones pero los resultados no son satisfactorios
¿alguna idea?
Gracias


----------



## Norberto (Nov 4, 2006)

Fabrique varios, microprocesados, con varias señales, desde ya que todo es comercial, pero para reparar equipos lo indispensable es un pulso rectangular bien definido
Al momento de investigar que le pasa a un equipo el pulso nos define ancho de bando, filtros etc. en ECG o monitores 
Para generar el pulso usa un NE555
Espero que te sirva!!


----------



## el_patriarca (Feb 15, 2007)

Puedes emplear un generador de señal con un PIC 16f877. Yo tengo un proyecto donde grabo un sonido con el ADC del PIC y lo almaceno en una EPROM. también podrías muestrear la señal cardíaca, cuantizarla, e introducirla en la EPROM. te funcionaría igual.


----------



## devilroger (Nov 16, 2008)

Buenas, ante todo saludos a los expertos de este foro, necesito ayuda en un proyecto de estoy realizando, es la simulación de un ECG con el pic 16f84, realice mi tabla de datos en base a la forma de onda de dicho ECG pero tengo problemas con la cantidad de datos para almacenar en el pic, ya que cuando me paso de 40 valores me dice que la capacidad de la pila se excedio. Necesito ayuda con lo que me sucede y si hay otra manera de almacenar los datos para mostrar dicha onda. O si tienen una manera mejor para realizar el ECG con el pic antes mencionado


----------



## aggonzal (Nov 17, 2008)

Trata de simular las señales con un generador de funciones,para empezar luego utliza 877 que tiene para configurar una de las puertas para tener entradas analogicas y listo el resto es tuyo


----------



## burren (Nov 17, 2008)

bueno una observacion no te limites en cuanto al pic con el 16 vas a batallar creo que para que te libres de la pila brinca al 18 y efectivamente tienes el puerto adc y de hay puedes desplegarlo en cualquier medio. y si yo pienso que si es por hay como los planteas genera tu arreglo un vector en donde puedas almacenar el valor obtenido y con eso tener la señarl


----------



## Gradmaster (Nov 18, 2008)

Usando el pic 16f84A que muchos critican por sus "limitaciones", lo que pudes hacer aunque parezca complicado es lo siguiente.

Con ese pic haces un contador, y mediante una serie de resistencias en parelelo, fabricas un convertidor digital analogo, que te poporcionara una rampa que sera tu señal de referencia, despues con un comparador, el cual redundando, comparara la señal de referencia con la señal analoga de entrada obtendras un ADC, la salida de este comparador la aplicas al puerto A para que gerere una subrutina de conversion; en relacion a la memoria, puedes hacer una interfaz serial para enviarlo a la pc con lo que la unica limitante en memoria sera tu disco duro y con un programa como VB o labVIEW graficar la señal del ECG. 

Suena muy tediozo sin embarjo es muy util diseñarlo de esta forma por que asi aprendes a integrar un proyecto teniendo material que a muchos les parece basicos.


Aqui solo te dejo una idea muy general, si tienes alguna duda sobre como hacer el proyecto, ¡PREGUNTA!

Exito.


----------



## chicomito (Jul 17, 2010)

hola a todos.

Estoy trabajando en un proyecto de un simulador de ecg con pic y no encuentro material para construirlo y programarlo.

alguna persona que lo halla hecho que me pueda ayudar...


----------



## chicomito (Jul 23, 2010)

lo que  tienes que hacer es un procesamiento de señales
e ir formando la señal a base de puntos.eso es facil,lo dificil es encontrar la parte del amplificador operacional que lo ocupas como un reductor de voltaje(debes disminuir la señal a 5 mv)


----------



## roy4nsk (Ago 25, 2010)

yo tambien estoy trabajando en uno y ya he avanzado un poco, pero necesito q platiques mas detalles del mismo, yo t recomiendo q trabajes con una tabla q contenga la onda de ECG digitalizada y hagas una conversion DA y un acondicionamiento para que la puedas probar en un electrocardiografo... o quizas solo necesites proyectarla en LabView, Matlab o algo asi

pon mas detalles para poder ayudarte mejor 

ah olvide decirte, si ocupas la tabla de una onda sana, t la puedo proporcionar si es que la ocupas y t sirve... es de 256 valores con una resolucion de 8 bits


----------



## chicomito (Ago 25, 2010)

hola y gracias por responder.

Seria genial si me envias la tabla,ya que lo estoy haciendo con un conversor de 8 bit.
El problema mas grande que tengo son los tiempos,no puedo hacer que me calsen.
lo estoy simulando en proteus y programando con ccs.


Este es el codigo del programa,falta depurar los tiempos y es solo una prueba ya que no son los valores originales de donde comienzan y terminan las ondas,


```
#include <16f628a.h>
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP,BROWNOUT,RC                                            
#use delay (clock=20000000)



void main(void)

{int a,n;
set_tris_b(0);
while(1)
{
a=60;
output_b(60);         //comienza la onda en 60
do                    //subida p
{
output_b(a);          //salida de 60 y sumando    
delay_ms(4);           //retardo de 4 milisegundo
a++;                   //incrementa a hasta 84
}
while (a <= 84);       //pregunta si es a es menor o igual a 84
output_b(a);            //salida de 60
delay_ms(4);             //retardo de 4 milisegundo
output_b(a);           //salida de 60
delay_ms(4);         //retardo de 4 milisegundo
output_b(a);           //salida de 60
delay_ms(4);         //retardo de 4 milisegundo
do                 //bajada onda p
{
output_b(a);      //salida de 60 y restando        
delay_ms(4);       //retardo de 4 milisegundo
a--;               //decrementa hasta 60
}
while (a >= 60);   //pregunta si a es mayor a 60
n=100;              //asigno 100 a "n"
do                 //segmento "PR"
{
output_b(60);   //salida de 60 Y RESTANDO
delay_ms(4);     //retardo de 4 milisegundo
n--;               //DECREMENTA N
}
while (n >= 60);      //pregunta si N es mayor a 60
a=60;
do                  //bajada onda Q
{
output_b(a);      //salida de 60 y restando 
delay_ms(4);       //retardo de 4 milisegundo
a--;             //decrementa hasta 40
}
while (a >= 40);    //pregunta si a es mayor a 40  
//output_b(a);         //salida de 40
//delay_ms(4);           //retardo de 4 milisegundo



do
{
output_b(a);
delay_ms(4);
a++;
}
while (a <= 254);
//output_b(a);
//delay_ms(1);

do
{
output_b(a);
delay_ms(1);
a--;
}
while (a >= 1);


a=1;
do
{
output_b(a);
delay_ms(4);
a++;
}
while (a <= 60);

n=120;              //asigno 120 a "n"
do                 //segmento "PR"
{
output_b(60);   //salida de 60 Y RESTANDO
delay_ms(4);     //retardo de 4 milisegundo
n--;               //DECREMENTA N
}
while (n >= 60);

do                    //subida p
{
output_b(a);          //salida de 60 y sumando    
delay_ms(4);           //retardo de 4 milisegundo
a++;                   //incrementa a hasta 84
}
while (a <= 84);       //pregunta si es a es menor o igual a 84
output_b(a);            //salida de 60
delay_ms(4);             //retardo de 4 milisegundo
output_b(a);           //salida de 60
delay_ms(4);         //retardo de 4 milisegundo
output_b(a);           //salida de 60
delay_ms(4);         //retardo de 4 milisegundo
do                 //bajada onda p
{
output_b(a);      //salida de 60 y restando        
delay_ms(4);       //retardo de 4 milisegundo
a--;               //decrementa hasta 60
}
while (a >= 60);   //pregunta si a es mayor a 60

n=160;              //asigno 120 a "n"
do                 //segmento "PR"
{
output_b(60);   //salida de 60 Y RESTANDO
delay_ms(4);     //retardo de 4 milisegundo
n--;               //DECREMENTA N
}
while (n >= 60);
}
}
```


----------



## roy4nsk (Ago 25, 2010)

Ah pues mira:

Un complejo cardiaco, si no me equivoco, dura un poco mas de 200 ms (a reserva de checarlo) entonces si se hace un retardo entre muestra y muestra de aprox 1 ms se acerca bastante para q se pueda hacer un primer acercamiento (considerando la tabla de la que puedo disponer).

Yo te recomendaria que la tabla la grabaras en una eeprom (interna del pic ,una serial i2c o algo mas que se te ocurra) y utilizaras una ciclo infinito en el cual vayas recorriendo cada localidad de memoria y realices la conversion DA con el metodo que mejor t acomode, asi podrias optimizar bastante tu codigo ya que los valores se quedan grabados en la memoria y no los tienes que escribir cada vez en tu codigo.

ahi las dudas que te vayan saliendo me avisas... suerte


----------



## chicomito (Ago 25, 2010)

en realidad así deseo hacerlo con una memoria externa.
pero por honor al tiempo,mostrar avances al profe, pensé que podría ser mas rápido.
me podrías enviar la tabla para chequearla...
mi correo es *políticas@delforo.com



**Como no cumplo las Políticas del Foro. Me editaron el mensaje.*​


----------



## roy4nsk (Ago 25, 2010)

aqui te mando la tabla que he estado usando, los datos estan en decimal y en binario con resolucion de 8 bits.

suerte!!!


----------



## chicomito (Ago 25, 2010)

gracias 

lo provare y te cuento.


----------



## chicomito (Oct 3, 2010)

probe lo que me enviastes y funciona gracias.
Ahora tengo otro problema porque la salida del conversor es de 5 volt y necesito reducirlo a 1mv.Como lo usastes tú.


----------



## roy4nsk (Oct 3, 2010)

Ah pues lo que yo intente es lo mas simple...un divisor de voltaje. Puedes proponerlo como gustes, yo usaba una resistencia de 2.2M y una de 1K para reducirla a 2-2.5 mV mas o menos, pero podrias proponer un arreglo de divisores de voltaje acoplados mediante un seguidor para hacer atenuaciones mayores y una etapa de filtrado pasa bajas para evitar que se introduzca ruido... funciona bastante bien. Suerte!!!

Nota: si vas a probarlo con un electrocardiografo, necesitas hacer un divisor con tres resistencias para poder obtener los cables correspondientes a RA, RL y LL. Si tienes mas dudas al respecto, lo platicamos despues.


----------



## chicomito (Oct 4, 2010)

Al final reduge la señal con operacionales (lo que me pidio el profesor) pero como hago un divisor para RA,RL y LL.


----------



## roy4nsk (Oct 4, 2010)

Ah pues asi mira:

Recordarndo la definicion de la derivacion I (de la que te di la tabla)

derI=LA-RA ; usando como referencia la LL

entonces si haces un divisor de voltaje poniendo tres resistencias en
serie a la salida de tu DAC, despues de la primera resistencia, saldria
un cable que seria LA, despues de la segunda resistencia saldria un
cable que seria RA, y la tierra seria la LL.


El truco consiste en que a la salida del DAC esta la RESULTANTE de la 
resta, osea la grafica de la der I, si haces las tres resistencias 
iguales y conectas al ECG como t dije (recordar que el ECG es un amplificador
de instrumentacion osea un restador) , restaras 2/3 de la der I menos 
1/3 de la der I, tendiendo como resultado final 1/3 de la der I.


----------



## chicomito (Oct 26, 2010)

resulta todo gracias

Pero tengo dos problemitas

- los pulsos cardiacos no son estables
- a que tiempo tenias programado cada punto para generar la onda?

con respecto a los filtros pasa bajos no son necesarios,ya que el mismo monitor tiene sus propios filtros   y te entrega una señal limpia yo ya tengo listo el proyecto,ahora solo falta arreglar algunos detalles,como por ejemplo dejar más estable los pulsos y ajustar un poco el menú a y terminar el informe.


----------



## fenix2016 (Nov 28, 2011)

hola... disculpen estaba viendo que hicieron un proyecto de simulador de ecg que tengo que hacer yo, pero no tengo mucha idea de como empezar, estoy pensando hacerlo un pic 16f877 ... y programar en pic basic, si me puedes dar algun consejo para seguir con mi proyecto se los agradeceria mucho.

Atentamente, 

Oswaldo


----------



## roy4nsk (Nov 29, 2011)

esta muy bien que lo hagas con ese pic, dependiendo de lo que quieras hacer puede que este muy sobrado, yo te recomiendo que bajes la tabla que subi aqui mismo. Esta muestreada como a 500 Hz si no me equivoco, asi que te aconsejo que en tu pic uses un timer para generar interupciones cada 2 ms para que con esa tasa actualices tu convetidor digital-analogico. Tambien si no mal recuerdo el registro q subi es la derivacion II, checalo. 

Si vas teniendo dudas en algo y te puedo ayudar, con mucho gusto, no domino el basic para pics, pero si en algo puedo colaborar, cuenta con ello. Suerte!!!


----------



## fenix2016 (Dic 10, 2011)

hola, gracias por tu colaboracion.... baje tu tabla pero no la entiendo... si me podrias ayudar que significa...


----------



## roy4nsk (Dic 10, 2011)

que tal! mira te explico: es la digitalizacion de un complejo cardiaco, desde el inicio de la onda P hasta el final de la onda T. Esta muestreada con frecuencia de muestreo de 500 Hz (son como 256 muestras) y tiene resolucion de 8 bits (el valor menor de la onda es cero y el mayor es de 255). Si tu tomas esos valores numericos y los graficas uno tras otro obtienes un complejo cardiaco completo.

Debes usar un convertidor digital analogico para convertirlo de un registro digital a una onda analogica. Para comenzar puedes utilizar un DAC08, que es un DAC de ocho bits entrada paralelo, es lo mas sencillo.

Lo que tendrias que hacer es grabar esos valores de la tabla en la memoria del pic y leer una muestra cada 2ms y sacarla por un puerto del pic, y este lo conectas al DAC08 y asi obtienes una onda analogica. Pruebalo y me dices como vas. Saludos!


----------



## cjimene (Mar 1, 2012)

roy4nsk dijo:


> yo tambien estoy trabajando en uno y ya he avanzado un poco, pero necesito q platiques mas detalles del mismo, yo t recomiendo q trabajes con una tabla q contenga la onda de ECG digitalizada y hagas una conversion DA y un acondicionamiento para que la puedas probar en un electrocardiografo... o quizas solo necesites proyectarla en LabView, Matlab o algo asi
> 
> pon mas detalles para poder ayudarte mejor
> 
> ah olvide decirte, si ocupas la tabla de una onda sana, t la puedo proporcionar si es que la ocupas y t sirve... es de 256 valores con una resolucion de 8 bits



Hola yo tambien estoy diseñando algo asi, solo que  ami me gustaria que me enviaras tu tabla de la onda sana, me serviria muchisimo.. GRACIAS y espero tu respuesta pronto besos...


----------



## fenix2016 (Mar 21, 2012)

Gracias por su ayuda compañeros, tuve un percance de salud y ahi quedo el proyecto, pero ahora estoy retomando el tema, como pude leer un poco y darme cuenta utilizar el pic 16f877 esta demas y voy a utilizar el pic 16f628, que parece mas razonable, puesto que una de mis ideas era sacar tres señales para cada electrodo (RA, LA y LL ) pero voy a tomar la idea de utilizar el arreglo de resistencias que ustedes mensionan lo veo mas conveniente con una sola señal, como veran no soy muy bueno en esto pero debo hacerlo, mis preguntas son las siguientes, seria mejor utilizar un cristal externo o con el interno es suficiente, como puedo cambiarle la amplitud de la onda ya que las condiciones de mi trabajo requieren que exista una amplitud de 0.5 mv 1 mv y 2mv , espero puedan ayudarme y gracias de antemano.


----------



## agraalejandro (May 15, 2012)

Hola a todos. Estoy por hacer un simulador de ecg con un pic 16f887 de 12 derivaciones, pero no se como generar las señales correspondientes a cada electrodos RA,LA,LL,AVF,AVL,AVR,V1,V2,V3,V4,V5 y V6 (como armar el arreglo resistivo para generarlas simultaneamente) necesito si me pasan lo que tengan acerca del circuito. Por otra parte les comento que estuve investigando la pagina de base de datos de señales cardiograficas www.physionet.org de donde se podria obtener la señal, pero habria que pasar las muestras a hexadecimal para almacenarlas en una memoria (otro cosa en la que tengo problemas para convertirla) y por ultimo veo que en todos los simuladores que han hecho solo utilizan la señal de la Derivacion II. Este es mi mail: 
Cualquier dato sera bienvenido GRACIAS!!!


*Como no respeto las políticas del Foro, me editaron el mensaje
*​


----------



## carnauh (May 26, 2012)

Hola buenas tardes, tengo un problema si me pueden colaborar con el favor, tengo un elecardiografo con 3 ad620 + un filtro noch+ sistema de proteccion, tengo la señal en un rango de 0 a 5v como hago para meterla por el conversor del pic18f4550, y ubicar una sola variable para enviarla por usb gracias

me gustaria usar el conversor analogo del 18f4550 que me explicaran un poco sobre eso


----------



## DiegoSantana (Feb 7, 2013)

Hola, soy nuevo en esto y la verdad no se ni por dónde empezar, espero me puedan ayudar. De antemano gracias.


----------



## dinoelectro (Feb 9, 2013)

chicomito dijo:


> lo que  tienes que hacer es un procesamiento de señales
> e ir formando la señal a base de puntos.eso es facil,lo dificil es encontrar la parte del amplificador operacional que lo ocupas como un reductor de voltaje(debes disminuir la señal a 5 mv)



equivocado amigo... lo que hace el amplificador operacional es todo lo contrario amplifica las debiles señales electricas del corazon y elimina el ruido en modo comun... el amplificador de instrumentacion AD620 es muy comun de encontrar en las tiendas de electronica... y si aun asi no encontrares ese amplificador de instrumentacion podes contruirte uno con el TL084


----------



## torres.electronico (Jul 27, 2017)

Estoy armando un equipo para colocar dentro de un muñeco que va a estar dentro de un simulador de siniestros... comparto algo de lo que llevo hasta el momento que en proteus, parece ser funcional... la tabla solo tiene para simular un par de cardiopatias (bradicardia, taquicardia,normal y paro cardiaco), pero la voy a mejorar... Hay una funciona mas que esta en proceso muy beta, que es el acoplamiento de un sensor analogico que detecta movimientos bruscos del muñeco y acelera las pulsaciones simulando dolor... El circuito consta de un simple DAC 0808 y a su salida, un amp operacional...
saludos y espero comentarios; En esta beta esta todo en un micro, pero la reforma es mas compleja (comunicacion RF para controlarlo y monitorearlo a distancia)


```
'****************************************************************
'*  Name    : simuECG_CARE.BAS                                  *
'*  Author  : prof.martintorres@educ.ar                         *
'*  Notice  : Copyright (c) 2017 BioEEAsrl - ETI                *
'*          : All Rights Reserved                               *
'*  Date    : 26/07/2017                                        *
'*  Version : 1.1                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
DEFINE OSC 20
@ DEVICE pic16F877A
@ DEVICE pic16F877A, WDT_OFF
@ DEVICE pic16F877A, PWRT_On
@ DEVICE pic16F877A, PROTECT_OFF

Define  LCD_DREG  PORTD ;bit de datos del LCD empezando
Define  LCD_DBIT  0 ;por D.0 ,D.1, D.2 y D.3
Define  LCD_RSREG  PORTD ;bit de registro del LCD conectar
Define  LCD_RSBIT  5 ;en el puerto E.1
Define  LCD_EREG  PORTD ;bit de Enable conectar en el
Define  LCD_EBIT  4 ;puerto E.2    
DEFINE LCD_BITS      4    
DEFINE LCD_LINES  2

ADCON1 = 00000000      'Definir todos los PORTA y PORTE como analógicos

;define ADC_BITS 8       ;CONFIGURO conversión A/D en 10 bits
;Define ADC_CLOCK 3       ;
;DEFINE ADC_SAMPLEUS 50   ;Tiempo de muestreo en uS


TRISA=%11111111
TRISB=%11111111
TRISC=%00000000
TRISD=%00000000     

BOTON_MAS     VAR PORTB.1
BOTON_MENOS   VAR PORTB.2
BOTON_ENTER    VAR PORTB.3
BOTON_MENU     VAR PORTB.4
BOTON_PARAR    VAR PORTB.0

aux     var byte
aux1    var byte
aux2    var byte
i       var byte
puertos var byte
resto   var byte
canal   var byte

PAUSE 200
LCDOut $fe, $48, $00, $00, $00, $00, $00, $00, $1F, $1F 'Figura 1.
LCDOut $fe, $50, $00, $00, $00, $00, $1F, $1F, $1F, $1F 'Figura 2.
LCDOut $fe, $58, $00, $00, $1F, $1F, $1F, $1F, $1F, $1F 'Figura 3.
LCDOut $fe, $60, $1F, $1F, $1F, $1F, $1F, $1F, $1F, $1F 'Figura 4.

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

ARRANQUE:
LCDOUT $FE,$80,"  BioEEA - ETI  "
LCDOUT $fe,$C0,"Ing. Torres A.M."
PAUSE 900
LCDOUT $FE,1
LCDOUT $FE,$80,"  -   CARE   -  "
LCDOUT $fe,$C0,"simu ECG beta1.1"
PAUSE 900
LCDOUT $FE,1


;**********************************************************
;**********************************************************
;**********************************************************
menu:
LCDOUT $FE,1
LCDOUT $FE,$80, "Selec Funcion "


barrido1:
IF BOTON_MAS = 0 THEN 
        WHILE boton_mas=0:WEND
        if aux > 5 then aux=5
        aux = Aux+1
        endif

IF BOTON_Menos = 0 THEN 
        WHILE boton_menos=0:WEND
        if aux < 1 then aux=1
        aux=aux-1
        endif        
        
IF boton_enter = 0 THEN 
        WHILE boton_ENTER=0:WEND
        if aux=2 then normal
        if aux=3 then bradicardia
        if aux=4 then taquicardia       
        if aux=5 then paro
        if aux=1 then Rescate
        endif
        
if aux=1 then        
lcdout $fe,$c0,"EjercicioRESCATE"
endif 

if aux=2 then
lcdout $fe,$c0,"-eN1-ECG-Normal-"
endif

if aux=3 then
lcdout $fe,$c0,"-eN2-Bradicardia"
endif

if aux=4 then        
lcdout $fe,$c0,"-eN3-Taquicardia"
endif  

if aux=5 then        
lcdout $fe,$c0,"-eN4-ParoCardiac"
endif  


        
goto barrido1

;******************************************************************************
;******************************************************************************
NORMAL:                              ;ECGNormal 
  LCDOUT $FE,1
  gosub dolor
  LCDOUT $FE,$80, "Func. ECG Normal"
  LCDOUT $fe, $C0,"Dolor:"

        FOR i=0 TO 299      
        gosub tabla_pulso
        PORTC= puertos
        pauseus 2700
        NEXT        
       
       if i = 255 then gosub tabla_pulso 
       PORTC = puertos
       pause 350
       IF boton_enter = 0 THEN 
        WHILE boton_ENTER=0:WEND
        goto menu
        endif     
   goto normal
   
;******************************************************************************
;******************************************************************************
Bradicardia:                        ;Bradicardia
  LCDOUT $FE,1
  gosub dolor
  LCDOUT $FE,$80, "Func.Bradicardia"
  LCDOUT $fe, $C0,"Dolor:"
        FOR i=0 TO 299      
        gosub tabla_pulso
        PORTC= puertos
        pauseus 2700
       NEXT        
       
       if i = 255 then gosub tabla_pulso 
        PORTC = puertos
       pause 1200
       IF boton_enter = 0 THEN 
        WHILE boton_ENTER=0:WEND
        goto menu
        endif 
   goto bradicardia

;******************************************************************************
;******************************************************************************     
Taquicardia:                        ;Taquicardia
      LCDOUT $FE,1
      gosub dolor
      LCDOUT $FE,$80, "Func.Taquicardia"
      LCDOUT $fe, $C0,"Dolor:"
         FOR i=30 TO 280      
        gosub tabla_pulso
        PORTC= puertos
        pauseus 2700
       NEXT        
       
       if i = 255 then gosub tabla_pulso 
        PORTC = puertos
       pause 1
       IF boton_enter = 0 THEN 
        WHILE boton_ENTER=0:WEND
        goto menu
        endif 
goto Taquicardia       


;******************************************************************************
;******************************************************************************
Paro:                            ;Paro cardiaco
    LCDOUT $FE,1
    gosub dolor
    LCDOUT $FE,$80, "FuncParoCardiaco"
    LCDOUT $fe, $C0,"Dolor:"
;Se envía sólo una línea por el puerto B y la alarma será un LED conectado al puerto D en el bit 0
              PORTC=8
              IF boton_enter = 0 THEN 
        WHILE boton_ENTER=0:WEND
        goto menu
        endif 
goto paro

;******************************************************************************
;******************************************************************************
Rescate:
      LCDOUT $FE,1
      pause 50
      gosub dolor
      LCDOUT $FE,$80, "Func.Rescate"
      LCDOUT $fe, $C0,"Dolor:"

       FOR i=0 TO 299      
        gosub tabla_pulso
        PORTC= puertos
        gosub movimiento 
        pauseus 2700
        NEXT        
       
       if i = 255 then gosub tabla_pulso 
       PORTC = puertos
       pause 350
       IF boton_enter = 0 THEN 
        WHILE boton_ENTER=0:WEND
        goto menu
        endif  

        IF boton_enter = 0 THEN 
        WHILE boton_ENTER=0:WEND
        goto menu
        endif 
goto Rescate



movimiento:
         ADCIN 1, canal
         RESTO = (CANAL // 15)
                  if canal > 200 then
                  FOR i=30 TO 255      
                  gosub tabla_pulso
                  PORTC= puertos
                  pauseus 2700
                   NEXT        
       
       if i = 255 then gosub tabla_pulso 
        PORTC = puertos
       pause 1
                  endif
   return       

TABLA_PULSO:
lookup i,[8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,12,12,12,12,12,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,13,13,13,13,13,13,13,13,12,12,12,11,11,10,10,9,9,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,7,6,6,5,5,5,4,4,4,4,6,9,13,16,20,24,29,33,38,42,46,49,52,54,55,54,53,51,48,45,41,37,32,28,23,19,15,10,5,1,0,0,0,1,1,2,3,3,4,5,6,6,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,10,11,12,12,12,12,13,13,13,13,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,14,14,14,14,14,14,13,13,13,12,11,11,10,9,9,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8],puertos
 return
 
DOLOR:
ADCIN 1, canal
RESTO = (CANAL // 15)

                  if canal > 200 then nivel5E
                  if canal > 150 then nivel4E
                  if canal > 100 then nivel3E
                  if canal > 50 then nivel2E
                  if canal < 45 then nivel1E
                 
return                 

nivel1E:
pause 5
LCDOut $fe,$CB, 1
return

nivel2E:
pause 100
LCDOut $fe,$CB, 1
LCDOut $fe,$CC, 2
return

nivel3E:
pause 5
LCDOut $fe,$CB, 1
LCDOut $fe,$CC, 2
LCDOut $fe,$CD, 3
return

nivel4E:
pause 5
LCDOut $fe,$CB, 1
LCDOut $fe,$CC, 2
LCDOut $fe,$CD, 3
LCDOut $fe,$CE, 4
return

nivel5E:
pause 5
LCDOut $fe,$CB, 1
LCDOut $fe,$CC, 2
LCDOut $fe,$CD, 3
LCDOut $fe,$CE, 4
LCDOut $fe,$CF, 4
return
 
 end
```


----------



## torres.electronico (Ago 4, 2017)

alguien tiene mas tablas de cardiopatias?


----------

