60
TRABAJO COLABORATIVO 2 PRESENTADO POR: GLEIDY JULIANA ALARCON LANCHEROS GRUPO: 299016_10 PRESENTADO A: NESTOR JAVIER RODÍGUEZ UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA INSTRUMENTACION MÉDICA. 2013

299016 10 Instrumentacion Medica

Embed Size (px)

Citation preview

Page 1: 299016 10 Instrumentacion Medica

TRABAJO COLABORATIVO 2

PRESENTADO POR:GLEIDY JULIANA ALARCON LANCHEROS

GRUPO: 299016_10

PRESENTADO A:NESTOR JAVIER RODÍGUEZ

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA INSTRUMENTACION MÉDICA.

2013

Page 2: 299016 10 Instrumentacion Medica

INTRODUCCION

Antes del año 1900, la medicina se basaba principalmente en el medico, un bolso negro, y medicinas empíricas. El hospital era más bien un tipo de “asilo”.

Es hasta el siglo XX que se da un rápido avance tecnológico y científico, convirtiendo al hospital como el punto focal de la medicina, y utilizando tecnología para el diagnóstico y tratamiento de patologías.

Por medio del siguiente trabajo se pretende poner en evidencia la alianza que ha tenido a medicina con la electrónica, permitiendo desarrollar instrumentos de medición, diagnóstico y procedimientos quirúrgicos basados en una única finalidad que es salvar vidas.

Encontraran el desarrollo de un Estimulador muscular basado en la electrónica para la estimulación de tejidos musculares a través de corrientes eléctricas, las cuales son usadas para diversos fines el primero puede ser con fin terapéutico para hacer la estimulación a diversas partes del cuerpo, sirve para la recuperación muscular cuando hubo accidentes donde se pierda la movilidad, también es usado para hacer adelgazamiento en zonas que prefiera la persona haciendo que halla un calentamiento interno y así se genere un disminución de grasa.

Page 3: 299016 10 Instrumentacion Medica

OBJETIVOS

Organizar tareas colectivas aportando y superando las dificultades que se presenten, con una actitud tolerante hacia las ideas de los compañeros.

Definir mediante acuerdos, responsabilidades individuales que faciliten el verdadero trabajo en equipo.

Desarrollar habilidades en el planteamiento e interpretación de problemas, diseño de soluciones y desarrollo de programas.

Interpretar y aplicar las características de las estructuras de datos y reconocer su importancia en la codificación de programas de lenguaje estructurado.

Definir y proponer cambios en la mejora del planteamiento y solución de los programas.

Trabajar en grupo para realizar la construcción del trabajo colaborativo, realizando aportes que contribuyan a la buena elaboración del trabajo.

Interpretar y aplicar las características de las estructuras de datos y reconocer su importancia en la codificación de programas de lenguaje estructurado.

Page 4: 299016 10 Instrumentacion Medica

ACTIVIDAD

Desarrollar el software de programación de un micro controlador en lenguaje assembler, aplicado al módulo de puente H de un equipo de electroterapia del capitulo 10, numeral 10.5 para generar las ondas electro terapéuticas de las figuras 121 a 125, que cumpla con las siguientes condiciones:

1. El microcontrolador será el PIC16F87.2. Debe simularse con Proteus.

ESTIMULACIÓN MUSCULAR

La electro estimulación es la técnica que utiliza la corriente eléctrica, para provocar una contracción muscular, mediante un aparato llamado electro estimulador, para prevenir, entrenar o tratar los músculos, buscando una finalidad terapéutica o una mejora de su rendimiento.

La técnica de la electro estimulación viene empleándose en la rehabilitación desde hace mucho tiempo, aportando importantes beneficios en éste campo, sobre todo para resolver las patologías musculares más comunes como son: La prevención y el tratamiento de la atrofia muscular, la potenciación, las contracturas, el aumento de la fuerza para la estabilidad articular, la profilaxis de la trombosis, y la estimulación de los músculos paralizados, entre otros, y también para el tratamiento del dolor. En las personas normalmente inervadas (todas excepto los para y tetrapléjicos) el impulso eléctrico no estimula directamente la fibra muscular, sino que lo hace a través del nervio motor (motoneuronas), --que sólo necesitará una cantidad muy pequeña de energía eléctrica-- para conseguir un estímulo eficaz.

Page 5: 299016 10 Instrumentacion Medica

¿QUÉ ES UN ELECTROESTIMULADOR?

Un electro estimulador es un generador de corriente, que produce impulsos eléctricos con la energía suficiente para generar un potencial de acción (PA) en las células excitables: musculares o nerviosas (sensitivas con resultados analgésicos y eferentes con resultados excitomotrices), y así modificar su estado habitual, que es el reposo.

¿QUÉ TIPO DE ESTIMULADOR DEBEMOS UTILIZAR?

Debemos utilizar un aparato de baja frecuencia (de 1 a 120 impulsos por segundo -Hz-) que nos asegure una contracción muscular potente, visible y fisiológica, exenta de sensaciones eléctricas desagradables y que no produzca irritaciones o quemaduras en la piel como pueden llegar a hacer algunos aparatos.

¿QUÉ FORMA DEBE TENER LA ONDA ELÉCTRICA FABRICADA POR ELESTIMULADOR?

La onda que debe construir el estimulador, es una información imprescindible que debe indicar el fabricante en las especificaciones técnicas insertas en los manuales y deberá ser: rectangular- bifásica, y compensada simétricamente, para evitar los desagradables y temidos efectos polares (sensación eléctrica, irritación de la piel y hasta quemaduras), en el lugar de ubicación de los electrodos por donde pasa la corriente.Las corrientes de tipo galvánico están desaconsejadas, por el elevado riesgo de quemaduras químico-eléctricas y por la desagradable sensación de electricidad que se percibe a intensidades incluso bajas.

PULSOS AISLADOS POSITIVOS

Para obtener pulsos aislados positivos es necesario que el microcontrolador genere la tensión VG1-3 de pulsos con las condiciones de tiempos TON desde 0.005 ms a 1 s y TOFF desde 1 a 5 s, mientras que la tensión VG2-4 será todo el tiempo en cero.

Page 6: 299016 10 Instrumentacion Medica

PULSOS AISLADOS NEGATIVOS

Para obtener pulsos aislados negativos, el microcontrolador genera la tensiónVG2-4 con las condiciones anteriores, mientras que la tensión en VG1-3 será siempre de cero.

Page 7: 299016 10 Instrumentacion Medica

PULSOS MONOFÁSICOS MANTENIDOS POSITIVOS O NEGATIVOS

Se disminuye el T OFF desde 5 a 20 ms a valores similares de los T ON 0.1 a 5 ms con las mismas tensiones de control para las figuras anteriores.

TRENES DE PULSOS

El micocontrolador es programado con los tiempos de encendido y apagado de los impulsos descritos anteriormente pero adicionalmente se temporiza durante cuánto tiempo se aplican T ON 2 de 1 a 20 s y durante cuánto tiempo no se aplicaT OFF 2 1 a 40 s

Page 8: 299016 10 Instrumentacion Medica

PULSOS BIFÁSICOS

El microcontrolador debe generar los pulsos de puerta negados, es decir, cuando estén presentes VG1-3 las VG2-4 deben estar en cero y viceversa.

Page 9: 299016 10 Instrumentacion Medica
Page 10: 299016 10 Instrumentacion Medica

CIRCUITO ELECTRICO EN PROTEUS.

Page 11: 299016 10 Instrumentacion Medica

PULSOS BIFÁSICOS

TRENES DE PULSOS

Page 12: 299016 10 Instrumentacion Medica

PULSOS MONOFÁSICOS

PULSOS AISLADOS

PROGRAMA EN ENSAMBLADOR

Page 13: 299016 10 Instrumentacion Medica

CCS PCM C Compiler, Version 4.084, 40722 21-abr-14 21:21

Filename: C:\Users\USR\Desktop\ghsgthstrhrthhst\main.lst

ROM used: 1945 words (24%) Largest free fragment is 2048 RAM used: 17 (5%) at main() level 32 (9%) worst case Stack: 2 locations

*0000: MOVLW 000001: MOVWF 0A0002: GOTO 2C00003: NOP.................... #include "C:\Users\USR\Desktop\ghsgthstrhrthhst\main.h" .................... #include <16F877A.h> .................... //////// Standard Header file for the PIC16F877A device //////////////// .................... #device PIC16F877A .................... #list .................... .................... #device adc=8 .................... .................... #FUSES NOWDT //No Watch Dog Timer .................... #FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD) .................... #FUSES PUT //Power Up Timer .................... #FUSES PROTECT //Code protected from reads .................... #FUSES NODEBUG //No Debug mode for ICD .................... #FUSES NOBROWNOUT //No brownout reset .................... #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O .................... #FUSES NOCPD //No EE protection .................... #FUSES NOWRT //Program memory not write protected .................... .................... #use delay(clock=10000000) *000C: MOVLW 2B000D: MOVWF 04000E: BCF 03.7000F: MOVF 00,W0010: BTFSC 03.20011: GOTO 0200012: MOVLW 030013: MOVWF 780014: CLRF 770015: DECFSZ 77,F0016: GOTO 0150017: DECFSZ 78,F

Page 14: 299016 10 Instrumentacion Medica

0018: GOTO 0140019: MOVLW 3C001A: MOVWF 77001B: DECFSZ 77,F001C: GOTO 01B001D: GOTO 01E001E: DECFSZ 00,F001F: GOTO 0120020: RETLW 000056: MOVLW F00057: BSF 03.50058: MOVWF 08.................... lcd.rw = 1; 0059: BCF 03.5005A: BSF 08.1.................... delay_cycles(1); 005B: NOP.................... lcd.enable = 1; 005C: BSF 08.2.................... delay_cycles(1); 005D: NOP.................... high = lcd.data; 005E: MOVF 08,W005F: SWAPF 08,W0060: ANDLW 0F0061: MOVWF 2F.................... lcd.enable = 0; 0062: BCF 08.2.................... delay_cycles(1); 0063: NOP.................... lcd.enable = 1; 0064: BSF 08.2.................... delay_us(1); 0065: GOTO 066.................... low = lcd.data; 0066: MOVF 08,W0067: SWAPF 08,W0068: ANDLW 0F0069: MOVWF 2E.................... lcd.enable = 0; 006A: BCF 08.2.................... set_tris_lcd(LCD_WRITE); 006B: MOVLW 00006C: BSF 03.5006D: MOVWF 08.................... return( (high<<4) | low); 006E: BCF 03.5006F: SWAPF 2F,W

Page 15: 299016 10 Instrumentacion Medica

0070: MOVWF 770071: MOVLW F00072: ANDWF 77,F0073: MOVF 77,W0074: IORWF 2E,W0075: MOVWF 78.................... } .................... .................... .................... void lcd_send_nibble( BYTE n ) { .................... lcd.data = n; *0021: SWAPF 2F,W0022: ANDLW F00023: MOVWF 770024: MOVLW 0F0025: ANDWF 08,W0026: IORWF 77,W0027: MOVWF 08.................... delay_cycles(1); 0028: NOP.................... lcd.enable = 1; 0029: BSF 08.2.................... delay_us(2); 002A: GOTO 02B002B: GOTO 02C002C: NOP.................... lcd.enable = 0; 002D: BCF 08.2.................... } 002E: RETLW 00.................... .................... .................... void lcd_send_byte( BYTE address, BYTE n ) { .................... .................... lcd.rs = 0; *0055: BCF 08.0.................... while ( bit_test(lcd_read_byte(),7) ) ; *0076: MOVF 78,W0077: MOVWF 2E0078: BTFSC 2E.70079: GOTO 056.................... lcd.rs = address; 007A: BTFSS 2C.0007B: BCF 08.0007C: BTFSC 2C.0

Page 16: 299016 10 Instrumentacion Medica

007D: BSF 08.0.................... delay_cycles(1); 007E: NOP.................... lcd.rw = 0; 007F: BCF 08.1.................... delay_cycles(1); 0080: NOP.................... lcd.enable = 0; 0081: BCF 08.2.................... lcd_send_nibble(n >> 4); 0082: SWAPF 2D,W0083: MOVWF 2E0084: MOVLW 0F0085: ANDWF 2E,F0086: MOVF 2E,W0087: MOVWF 2F0088: CALL 021.................... lcd_send_nibble(n & 0xf); 0089: MOVF 2D,W008A: ANDLW 0F008B: MOVWF 2E008C: MOVWF 2F008D: CALL 021.................... } .................... .................... .................... void lcd_init() { .................... BYTE i; .................... set_tris_lcd(LCD_WRITE); *002F: MOVLW 000030: BSF 03.50031: MOVWF 08.................... lcd.rs = 0; 0032: BCF 03.50033: BCF 08.0.................... lcd.rw = 0; 0034: BCF 08.1.................... lcd.enable = 0; 0035: BCF 08.2.................... delay_ms(15); 0036: MOVLW 0F0037: MOVWF 2B0038: CALL 00C.................... for(i=1;i<=3;++i) { 0039: MOVLW 01003A: MOVWF 2A003B: MOVF 2A,W

Page 17: 299016 10 Instrumentacion Medica

003C: SUBLW 03003D: BTFSS 03.0003E: GOTO 047.................... lcd_send_nibble(3); 003F: MOVLW 030040: MOVWF 2F0041: CALL 021.................... delay_ms(5); 0042: MOVLW 050043: MOVWF 2B0044: CALL 00C.................... } 0045: INCF 2A,F0046: GOTO 03B.................... lcd_send_nibble(2); 0047: MOVLW 020048: MOVWF 2F0049: CALL 021.................... for(i=0;i<=3;++i) 004A: CLRF 2A004B: MOVF 2A,W004C: SUBLW 03004D: BTFSS 03.0004E: GOTO 090.................... lcd_send_byte(0,LCD_INIT_STRING[i]); 004F: MOVF 2A,W0050: CALL 0040051: MOVWF 2B0052: CLRF 2C0053: MOVF 2B,W0054: MOVWF 2D*008E: INCF 2A,F008F: GOTO 04B.................... } 0090: BCF 0A.30091: BCF 0A.40092: GOTO 2FC (RETURN).................... .................... .................... void lcd_gotoxy( BYTE x, BYTE y) { .................... BYTE address; .................... .................... if(y!=1) .................... address=lcd_line_two; .................... else .................... address=0; .................... address+=x-1;

Page 18: 299016 10 Instrumentacion Medica

.................... lcd_send_byte(0,0x80|address);

.................... }

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

.................... void lcd_putc( char c) {

.................... switch (c) {

.................... case '\f' : lcd_send_byte(0,1);

.................... delay_ms(2);

.................... break;

.................... case '\n' : lcd_gotoxy(1,2); break;

.................... case '\b' : lcd_send_byte(0,0x10); break;

.................... default : lcd_send_byte(1,c); break;

.................... }

.................... }

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

.................... char lcd_getc( BYTE x, BYTE y) {

.................... char value;

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

.................... lcd_gotoxy(x,y);

.................... while ( bit_test(lcd_read_byte(),7) ); // wait until busy flag is low

.................... lcd.rs=1;

.................... value = lcd_read_byte();

.................... lcd.rs=0;

.................... return(value);

.................... }

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

.................... #use delaY(clock=10000000) 0093: MOVLW 2B0094: MOVWF 040095: BCF 03.70096: MOVF 00,W0097: BTFSC 03.20098: GOTO 0A70099: MOVLW 03009A: MOVWF 78009B: CLRF 77009C: DECFSZ 77,F009D: GOTO 09C009E: DECFSZ 78,F009F: GOTO 09B00A0: MOVLW 3C00A1: MOVWF 7700A2: DECFSZ 77,F00A3: GOTO 0A200A4: GOTO 0A500A5: DECFSZ 00,F00A6: GOTO 09900A7: RETLW 00*

Page 19: 299016 10 Instrumentacion Medica

029A: MOVLW 06029B: SUBWF 2B,F029C: BTFSS 03.0029D: GOTO 2AA029E: MOVLW 2B029F: MOVWF 0402A0: BCF 03.702A1: BCF 03.002A2: RRF 00,F02A3: MOVF 00,W02A4: BTFSC 03.202A5: GOTO 2AA02A6: GOTO 2A802A7: GOTO 2A802A8: DECFSZ 00,F02A9: GOTO 2A702AA: RETLW 00.................... #use fast_io(b) .................... #use fast_io(c) .................... #use fast_io(a) .................... #byte portb=0x06 .................... #byte portc=0x07 .................... #byte porte=0x09 .................... int pul=1; //Pulsos aislados positivos *02CB: MOVLW 0102CC: BCF 03.502CD: MOVWF 20.................... int pulman=2; //Pulsos mantenidos 02CE: MOVLW 0202CF: MOVWF 21.................... int tren=4; //Trenes de pulsos 02D0: MOVLW 0402D1: MOVWF 22.................... int pulbi=8; //Pulsos bifasicos 02D2: MOVLW 0802D3: MOVWF 23.................... int16 valor; .................... int16 Ton; .................... int16 Toff; .................... .................... void main() .................... { setup_adc_ports(AN0_AN1_AN3); *02C0: CLRF 0402C1: BCF 03.702C2: MOVLW 1F02C3: ANDWF 03,F

Page 20: 299016 10 Instrumentacion Medica

02C4: BSF 03.502C5: BSF 1F.002C6: BSF 1F.102C7: BSF 1F.202C8: BCF 1F.302C9: MOVLW 0702CA: MOVWF 1C*02D4: BSF 03.502D5: BCF 1F.002D6: BCF 1F.102D7: BSF 1F.202D8: BCF 1F.3.................... setup_psp(PSP_DISABLED); 02D9: BCF 09.4.................... setup_spi(SPI_SS_DISABLED); 02DA: BCF 03.502DB: BCF 14.502DC: MOVLW 0102DD: MOVWF 1402DE: MOVLW 0002DF: BSF 03.502E0: MOVWF 14.................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); 02E1: MOVF 01,W02E2: ANDLW C702E3: IORLW 0802E4: MOVWF 01.................... setup_timer_1(T1_DISABLED); 02E5: BCF 03.502E6: CLRF 10.................... setup_timer_2(T2_DISABLED,0,1); 02E7: MOVLW 0002E8: MOVWF 7802E9: MOVWF 1202EA: MOVLW 0002EB: BSF 03.502EC: MOVWF 12.................... setup_comparator(NC_NC_NC_NC); 02ED: MOVLW 0702EE: MOVWF 1C02EF: MOVF 05,W02F0: MOVWF 0502F1: MOVLW 0802F2: MOVWF 7702F3: DECFSZ 77,F02F4: GOTO 2F302F5: MOVF 1C,W

Page 21: 299016 10 Instrumentacion Medica

02F6: BCF 03.502F7: BCF 0D.6.................... setup_vref(FALSE); 02F8: BSF 03.502F9: CLRF 1D.................... lcd_init(); 02FA: BCF 03.502FB: GOTO 02F.................... .................... // TODO: USER CODE!! .................... set_tris_b(0x00); 02FC: MOVLW 0002FD: BSF 03.502FE: MOVWF 06.................... portb=0x00; 02FF: BCF 03.50300: CLRF 06.................... set_tris_c(0x00); 0301: BSF 03.50302: MOVWF 07.................... portc=0x00; 0303: BCF 03.50304: CLRF 07.................... set_tris_e(0xff); 0305: BSF 03.50306: BSF 09.00307: BSF 09.10308: BSF 09.2.................... while (true) .................... { if (porte == 1) 0309: BCF 03.5030A: DECFSZ 09,W030B: GOTO 54D.................... {if (portb == pul) 030C: MOVF 20,W030D: SUBWF 06,W030E: BTFSS 03.2030F: GOTO 396.................... {setup_adc(ADC_CLOCK_INTERNAL); 0310: BSF 03.50311: BCF 1F.60312: BCF 03.50313: BSF 1F.60314: BSF 1F.70315: BSF 03.50316: BCF 1F.70317: BCF 03.50318: BSF 1F.0

Page 22: 299016 10 Instrumentacion Medica

.................... set_adc_channel(0); 0319: MOVLW 00031A: MOVWF 78031B: MOVF 1F,W031C: ANDLW C7031D: IORWF 78,W031E: MOVWF 1F.................... delay_us(20); 031F: MOVLW 100320: MOVWF 770321: DECFSZ 77,F0322: GOTO 3210323: NOP.................... valor=read_adc(); 0324: BSF 1F.20325: BTFSC 1F.20326: GOTO 3250327: MOVF 1E,W0328: CLRF 250329: MOVWF 24.................... setup_adc(adc_off); 032A: BCF 1F.0.................... if (valor == 0) 032B: MOVF 24,F032C: BTFSS 03.2032D: GOTO 333032E: MOVF 25,F032F: BTFSS 03.20330: GOTO 333.................... {Ton=0.005;} 0331: CLRF 270332: CLRF 26.................... if (valor>0) 0333: MOVF 24,F0334: BTFSS 03.20335: GOTO 3390336: MOVF 25,F0337: BTFSC 03.20338: GOTO 33D.................... {Ton = valor;} 0339: MOVF 25,W033A: MOVWF 27033B: MOVF 24,W033C: MOVWF 26.................... portc=0x03; 033D: MOVLW 03033E: MOVWF 07.................... delay_ms(Ton);

Page 23: 299016 10 Instrumentacion Medica

033F: MOVF 27,W0340: MOVWF 2A0341: INCF 2A,F0342: DECF 2A,F0343: BTFSC 03.20344: GOTO 3490345: MOVLW FF0346: MOVWF 2B0347: CALL 0930348: GOTO 3420349: MOVF 26,W034A: MOVWF 2B034B: CALL 093.................... portc=0x00; 034C: CLRF 07.................... setup_adc(adc_clock_internal); 034D: BSF 03.5034E: BCF 1F.6034F: BCF 03.50350: BSF 1F.60351: BSF 1F.70352: BSF 03.50353: BCF 1F.70354: BCF 03.50355: BSF 1F.0.................... set_adc_channel(1); 0356: MOVLW 080357: MOVWF 780358: MOVF 1F,W0359: ANDLW C7035A: IORWF 78,W035B: MOVWF 1F.................... delay_us(20); 035C: MOVLW 10035D: MOVWF 77035E: DECFSZ 77,F035F: GOTO 35E0360: NOP.................... valor=read_adc(); 0361: BSF 1F.20362: BTFSC 1F.20363: GOTO 3620364: MOVF 1E,W0365: CLRF 250366: MOVWF 24.................... setup_adc(adc_off); 0367: BCF 1F.0.................... if (valor == 0)

Page 24: 299016 10 Instrumentacion Medica

0368: MOVF 24,F0369: BTFSS 03.2036A: GOTO 372036B: MOVF 25,F036C: BTFSS 03.2036D: GOTO 372.................... {Toff=1000;} 036E: MOVLW 03036F: MOVWF 290370: MOVLW E80371: MOVWF 28.................... if (valor>0) 0372: MOVF 24,F0373: BTFSS 03.20374: GOTO 3780375: MOVF 25,F0376: BTFSC 03.20377: GOTO 389.................... {Toff=1000 + (valor*4);} 0378: RLF 24,W0379: MOVWF 79037A: RLF 25,W037B: MOVWF 7A037C: RLF 79,F037D: RLF 7A,F037E: MOVLW FC037F: ANDWF 79,F0380: MOVF 79,W0381: ADDLW E80382: MOVWF 280383: MOVF 7A,W0384: MOVWF 290385: MOVLW 030386: BTFSC 03.00387: MOVLW 040388: ADDWF 29,F.................... delay_ms(Toff); 0389: MOVF 29,W038A: MOVWF 2A038B: INCF 2A,F038C: DECF 2A,F038D: BTFSC 03.2038E: GOTO 393038F: MOVLW FF0390: MOVWF 2B0391: CALL 0930392: GOTO 38C0393: MOVF 28,W

Page 25: 299016 10 Instrumentacion Medica

0394: MOVWF 2B0395: CALL 093.................... } .................... // Secuencia para pulsos mantenidos positivos // .................... if (portb == pulman) 0396: MOVF 21,W0397: SUBWF 06,W0398: BTFSS 03.20399: GOTO 450.................... {setup_adc(adc_clock_internal); 039A: BSF 03.5039B: BCF 1F.6039C: BCF 03.5039D: BSF 1F.6039E: BSF 1F.7039F: BSF 03.503A0: BCF 1F.703A1: BCF 03.503A2: BSF 1F.0.................... set_adc_channel(0); 03A3: MOVLW 0003A4: MOVWF 7803A5: MOVF 1F,W03A6: ANDLW C703A7: IORWF 78,W03A8: MOVWF 1F.................... delay_us(20); 03A9: MOVLW 1003AA: MOVWF 7703AB: DECFSZ 77,F03AC: GOTO 3AB03AD: NOP.................... valor=read_adc(); 03AE: BSF 1F.203AF: BTFSC 1F.203B0: GOTO 3AF03B1: MOVF 1E,W03B2: CLRF 2503B3: MOVWF 24.................... setup_adc(adc_off); 03B4: BCF 1F.0.................... if (valor == 0) 03B5: MOVF 24,F03B6: BTFSS 03.203B7: GOTO 3BE03B8: MOVF 25,F03B9: BTFSS 03.203BA: GOTO 3BE

Page 26: 299016 10 Instrumentacion Medica

.................... {Ton=100;} 03BB: CLRF 2703BC: MOVLW 6403BD: MOVWF 26.................... if (valor > 0); 03BE: MOVF 24,F03BF: BTFSS 03.203C0: GOTO 3C403C1: MOVF 25,F03C2: BTFSS 03.203C3: GOTO 3C4.................... {Ton=100 + (valor*4.9);} 03C4: MOVF 25,W03C5: MOVWF 2B03C6: MOVF 24,W03C7: MOVWF 2A03C8: CALL 0A803C9: MOVF 7A,W03CA: MOVWF 2D03CB: MOVF 79,W03CC: MOVWF 2C03CD: MOVF 78,W03CE: MOVWF 2B03CF: MOVF 77,W03D0: MOVWF 2A03D1: MOVLW CD03D2: MOVWF 3103D3: MOVLW CC03D4: MOVWF 3003D5: MOVLW 1C03D6: MOVWF 2F03D7: MOVLW 8103D8: MOVWF 2E03D9: CALL 0C503DA: BCF 03.103DB: CLRF 2D03DC: CLRF 2C03DD: MOVLW 4803DE: MOVWF 2B03DF: MOVLW 8503E0: MOVWF 2A03E1: MOVF 7A,W03E2: MOVWF 3103E3: MOVF 79,W03E4: MOVWF 3003E5: MOVF 78,W03E6: MOVWF 2F03E7: MOVF 77,W

Page 27: 299016 10 Instrumentacion Medica

03E8: MOVWF 2E03E9: CALL 13A03EA: MOVF 7A,W03EB: MOVWF 2D03EC: MOVF 79,W03ED: MOVWF 2C03EE: MOVF 78,W03EF: MOVWF 2B03F0: MOVF 77,W03F1: MOVWF 2A03F2: CALL 27B03F3: MOVF 79,W03F4: MOVWF 2703F5: MOVF 78,W03F6: MOVWF 26.................... portc=0x03; 03F7: MOVLW 0303F8: MOVWF 07.................... delay_us(Ton); 03F9: MOVF 27,W03FA: MOVWF 2A03FB: INCF 2A,F03FC: DECF 2A,F03FD: BTFSC 03.203FE: GOTO 40303FF: MOVLW FF0400: MOVWF 2B0401: CALL 29A0402: GOTO 3FC0403: MOVF 26,W0404: MOVWF 2B0405: CALL 29A.................... portc=0x00; 0406: CLRF 07.................... setup_adc(adc_clock_internal); 0407: BSF 03.50408: BCF 1F.60409: BCF 03.5040A: BSF 1F.6040B: BSF 1F.7040C: BSF 03.5040D: BCF 1F.7040E: BCF 03.5040F: BSF 1F.0.................... set_adc_channel(1); 0410: MOVLW 080411: MOVWF 780412: MOVF 1F,W

Page 28: 299016 10 Instrumentacion Medica

0413: ANDLW C70414: IORWF 78,W0415: MOVWF 1F.................... delay_us(20); 0416: MOVLW 100417: MOVWF 770418: DECFSZ 77,F0419: GOTO 418041A: NOP.................... valor=read_adc(); 041B: BSF 1F.2041C: BTFSC 1F.2041D: GOTO 41C041E: MOVF 1E,W041F: CLRF 250420: MOVWF 24.................... setup_adc(adc_off); 0421: BCF 1F.0.................... if (valor == 0) 0422: MOVF 24,F0423: BTFSS 03.20424: GOTO 42C0425: MOVF 25,F0426: BTFSS 03.20427: GOTO 42C.................... {Toff=5000;} 0428: MOVLW 130429: MOVWF 29042A: MOVLW 88042B: MOVWF 28.................... if (valor > 0); 042C: MOVF 24,F042D: BTFSS 03.2042E: GOTO 432042F: MOVF 25,F0430: BTFSS 03.20431: GOTO 432.................... {Toff=5000 + (valor *15);} 0432: MOVF 25,W0433: MOVWF 2B0434: MOVF 24,W0435: MOVWF 2A0436: CLRF 2D0437: MOVLW 0F0438: MOVWF 2C0439: CALL 2AB043A: MOVF 78,W043B: ADDLW 88

Page 29: 299016 10 Instrumentacion Medica

043C: MOVWF 28043D: MOVF 79,W043E: MOVWF 29043F: MOVLW 130440: BTFSC 03.00441: MOVLW 140442: ADDWF 29,F.................... delay_us(Toff); 0443: MOVF 29,W0444: MOVWF 2A0445: INCF 2A,F0446: DECF 2A,F0447: BTFSC 03.20448: GOTO 44D0449: MOVLW FF044A: MOVWF 2B044B: CALL 29A044C: GOTO 446044D: MOVF 28,W044E: MOVWF 2B044F: CALL 29A.................... } .................... // Secuencia para trenes de pulsos positivos // .................... if (portb == tren) 0450: MOVF 22,W0451: SUBWF 06,W0452: BTFSS 03.20453: GOTO 483.................... { portc=0x03; 0454: MOVLW 030455: MOVWF 07.................... delay_ms(3); 0456: MOVWF 2B0457: CALL 093.................... portc=0x00; 0458: CLRF 07.................... delay_ms(10); 0459: MOVLW 0A045A: MOVWF 2B045B: CALL 093.................... portc=0x03; 045C: MOVLW 03045D: MOVWF 07.................... delay_ms(3); 045E: MOVWF 2B045F: CALL 093.................... portc=0x00; 0460: CLRF 07

Page 30: 299016 10 Instrumentacion Medica

.................... delay_ms(10); 0461: MOVLW 0A0462: MOVWF 2B0463: CALL 093.................... portc=0x03; 0464: MOVLW 030465: MOVWF 07.................... delay_ms(3); 0466: MOVWF 2B0467: CALL 093.................... portc=0x00; 0468: CLRF 07.................... delay_ms(10); 0469: MOVLW 0A046A: MOVWF 2B046B: CALL 093.................... portc=0x03; 046C: MOVLW 03046D: MOVWF 07.................... delay_ms(3); 046E: MOVWF 2B046F: CALL 093.................... portc=0x00; 0470: CLRF 07.................... delay_ms(10); 0471: MOVLW 0A0472: MOVWF 2B0473: CALL 093.................... portc=0x03; 0474: MOVLW 030475: MOVWF 07.................... delay_ms(3); 0476: MOVWF 2B0477: CALL 093.................... portc=0x00; 0478: CLRF 07.................... delay_ms(10); 0479: MOVLW 0A047A: MOVWF 2B047B: CALL 093.................... .................... delay_ms(500); 047C: MOVLW 02047D: MOVWF 2A047E: MOVLW FA047F: MOVWF 2B0480: CALL 0930481: DECFSZ 2A,F

Page 31: 299016 10 Instrumentacion Medica

0482: GOTO 47E.................... } .................... // Secuencia para pulsos bifasicos // .................... if (portb == pulbi) 0483: MOVF 23,W0484: SUBWF 06,W0485: BTFSS 03.20486: GOTO 54D.................... {setup_adc(adc_clock_internal); 0487: BSF 03.50488: BCF 1F.60489: BCF 03.5048A: BSF 1F.6048B: BSF 1F.7048C: BSF 03.5048D: BCF 1F.7048E: BCF 03.5048F: BSF 1F.0.................... set_adc_channel(0); 0490: MOVLW 000491: MOVWF 780492: MOVF 1F,W0493: ANDLW C70494: IORWF 78,W0495: MOVWF 1F.................... delay_us(20); 0496: MOVLW 100497: MOVWF 770498: DECFSZ 77,F0499: GOTO 498049A: NOP.................... valor=read_adc(); 049B: BSF 1F.2049C: BTFSC 1F.2049D: GOTO 49C049E: MOVF 1E,W049F: CLRF 2504A0: MOVWF 24.................... setup_adc(adc_off); 04A1: BCF 1F.0.................... if (valor == 0) 04A2: MOVF 24,F04A3: BTFSS 03.204A4: GOTO 4AB04A5: MOVF 25,F04A6: BTFSS 03.204A7: GOTO 4AB.................... {Ton=100;}

Page 32: 299016 10 Instrumentacion Medica

04A8: CLRF 2704A9: MOVLW 6404AA: MOVWF 26.................... if (valor > 0); 04AB: MOVF 24,F04AC: BTFSS 03.204AD: GOTO 4B104AE: MOVF 25,F04AF: BTFSS 03.204B0: GOTO 4B1.................... {Ton=100 + (valor*4.9);} 04B1: MOVF 25,W04B2: MOVWF 2B04B3: MOVF 24,W04B4: MOVWF 2A04B5: CALL 0A804B6: MOVF 7A,W04B7: MOVWF 2D04B8: MOVF 79,W04B9: MOVWF 2C04BA: MOVF 78,W04BB: MOVWF 2B04BC: MOVF 77,W04BD: MOVWF 2A04BE: MOVLW CD04BF: MOVWF 3104C0: MOVLW CC04C1: MOVWF 3004C2: MOVLW 1C04C3: MOVWF 2F04C4: MOVLW 8104C5: MOVWF 2E04C6: CALL 0C504C7: BCF 03.104C8: CLRF 2D04C9: CLRF 2C04CA: MOVLW 4804CB: MOVWF 2B04CC: MOVLW 8504CD: MOVWF 2A04CE: MOVF 7A,W04CF: MOVWF 3104D0: MOVF 79,W04D1: MOVWF 3004D2: MOVF 78,W04D3: MOVWF 2F04D4: MOVF 77,W04D5: MOVWF 2E

Page 33: 299016 10 Instrumentacion Medica

04D6: CALL 13A04D7: MOVF 7A,W04D8: MOVWF 2D04D9: MOVF 79,W04DA: MOVWF 2C04DB: MOVF 78,W04DC: MOVWF 2B04DD: MOVF 77,W04DE: MOVWF 2A04DF: CALL 27B04E0: MOVF 79,W04E1: MOVWF 2704E2: MOVF 78,W04E3: MOVWF 26.................... portc=0x03; 04E4: MOVLW 0304E5: MOVWF 07.................... delay_us(Ton); 04E6: MOVF 27,W04E7: MOVWF 2A04E8: INCF 2A,F04E9: DECF 2A,F04EA: BTFSC 03.204EB: GOTO 4F004EC: MOVLW FF04ED: MOVWF 2B04EE: CALL 29A04EF: GOTO 4E904F0: MOVF 26,W04F1: MOVWF 2B04F2: CALL 29A.................... portc=0x00; 04F3: CLRF 07.................... portc=0x0c; 04F4: MOVLW 0C04F5: MOVWF 07.................... delay_us(Ton); 04F6: MOVF 27,W04F7: MOVWF 2A04F8: INCF 2A,F04F9: DECF 2A,F04FA: BTFSC 03.204FB: GOTO 50004FC: MOVLW FF04FD: MOVWF 2B04FE: CALL 29A04FF: GOTO 4F90500: MOVF 26,W

Page 34: 299016 10 Instrumentacion Medica

0501: MOVWF 2B0502: CALL 29A.................... portc=0x00; 0503: CLRF 07.................... setup_adc(adc_clock_internal); 0504: BSF 03.50505: BCF 1F.60506: BCF 03.50507: BSF 1F.60508: BSF 1F.70509: BSF 03.5050A: BCF 1F.7050B: BCF 03.5050C: BSF 1F.0.................... set_adc_channel(1); 050D: MOVLW 08050E: MOVWF 78050F: MOVF 1F,W0510: ANDLW C70511: IORWF 78,W0512: MOVWF 1F.................... delay_us(20); 0513: MOVLW 100514: MOVWF 770515: DECFSZ 77,F0516: GOTO 5150517: NOP.................... valor=read_adc(); 0518: BSF 1F.20519: BTFSC 1F.2051A: GOTO 519051B: MOVF 1E,W051C: CLRF 25051D: MOVWF 24.................... setup_adc(adc_off); 051E: BCF 1F.0.................... if (valor == 0) 051F: MOVF 24,F0520: BTFSS 03.20521: GOTO 5290522: MOVF 25,F0523: BTFSS 03.20524: GOTO 529.................... {Toff=5000;} 0525: MOVLW 130526: MOVWF 290527: MOVLW 880528: MOVWF 28

Page 35: 299016 10 Instrumentacion Medica

.................... if (valor > 0); 0529: MOVF 24,F052A: BTFSS 03.2052B: GOTO 52F052C: MOVF 25,F052D: BTFSS 03.2052E: GOTO 52F.................... {Toff=5000 + (valor *15);} 052F: MOVF 25,W0530: MOVWF 2B0531: MOVF 24,W0532: MOVWF 2A0533: CLRF 2D0534: MOVLW 0F0535: MOVWF 2C0536: CALL 2AB0537: MOVF 78,W0538: ADDLW 880539: MOVWF 28053A: MOVF 79,W053B: MOVWF 29053C: MOVLW 13053D: BTFSC 03.0053E: MOVLW 14053F: ADDWF 29,F.................... delay_us(Toff); 0540: MOVF 29,W0541: MOVWF 2A0542: INCF 2A,F0543: DECF 2A,F0544: BTFSC 03.20545: GOTO 54A0546: MOVLW FF0547: MOVWF 2B0548: CALL 29A0549: GOTO 543054A: MOVF 28,W054B: MOVWF 2B054C: CALL 29A.................... } .................... } .................... .................... if (porte == 3) 054D: MOVF 09,W054E: SUBLW 03054F: BTFSS 03.20550: GOTO 797.................... { if (portb == pul)

Page 36: 299016 10 Instrumentacion Medica

0551: MOVF 20,W0552: SUBWF 06,W0553: BTFSS 03.20554: GOTO 5DB.................... {setup_adc(ADC_CLOCK_INTERNAL); 0555: BSF 03.50556: BCF 1F.60557: BCF 03.50558: BSF 1F.60559: BSF 1F.7055A: BSF 03.5055B: BCF 1F.7055C: BCF 03.5055D: BSF 1F.0.................... set_adc_channel(0); 055E: MOVLW 00055F: MOVWF 780560: MOVF 1F,W0561: ANDLW C70562: IORWF 78,W0563: MOVWF 1F.................... delay_us(20); 0564: MOVLW 100565: MOVWF 770566: DECFSZ 77,F0567: GOTO 5660568: NOP.................... valor=read_adc(); 0569: BSF 1F.2056A: BTFSC 1F.2056B: GOTO 56A056C: MOVF 1E,W056D: CLRF 25056E: MOVWF 24.................... setup_adc(adc_off); 056F: BCF 1F.0.................... if (valor == 0) 0570: MOVF 24,F0571: BTFSS 03.20572: GOTO 5780573: MOVF 25,F0574: BTFSS 03.20575: GOTO 578.................... {Ton=0.005;} 0576: CLRF 270577: CLRF 26.................... if (valor>0) 0578: MOVF 24,F

Page 37: 299016 10 Instrumentacion Medica

0579: BTFSS 03.2057A: GOTO 57E057B: MOVF 25,F057C: BTFSC 03.2057D: GOTO 582.................... {Ton = valor;} 057E: MOVF 25,W057F: MOVWF 270580: MOVF 24,W0581: MOVWF 26.................... portc=0x0c; 0582: MOVLW 0C0583: MOVWF 07.................... delay_ms(Ton); 0584: MOVF 27,W0585: MOVWF 2A0586: INCF 2A,F0587: DECF 2A,F0588: BTFSC 03.20589: GOTO 58E058A: MOVLW FF058B: MOVWF 2B058C: CALL 093058D: GOTO 587058E: MOVF 26,W058F: MOVWF 2B0590: CALL 093.................... portc=0x00; 0591: CLRF 07.................... setup_adc(adc_clock_internal); 0592: BSF 03.50593: BCF 1F.60594: BCF 03.50595: BSF 1F.60596: BSF 1F.70597: BSF 03.50598: BCF 1F.70599: BCF 03.5059A: BSF 1F.0.................... set_adc_channel(1); 059B: MOVLW 08059C: MOVWF 78059D: MOVF 1F,W059E: ANDLW C7059F: IORWF 78,W05A0: MOVWF 1F.................... delay_us(20); 05A1: MOVLW 10

Page 38: 299016 10 Instrumentacion Medica

05A2: MOVWF 7705A3: DECFSZ 77,F05A4: GOTO 5A305A5: NOP.................... valor=read_adc(); 05A6: BSF 1F.205A7: BTFSC 1F.205A8: GOTO 5A705A9: MOVF 1E,W05AA: CLRF 2505AB: MOVWF 24.................... setup_adc(adc_off); 05AC: BCF 1F.0.................... if (valor == 0) 05AD: MOVF 24,F05AE: BTFSS 03.205AF: GOTO 5B705B0: MOVF 25,F05B1: BTFSS 03.205B2: GOTO 5B7.................... {Toff=1000;} 05B3: MOVLW 0305B4: MOVWF 2905B5: MOVLW E805B6: MOVWF 28.................... if (valor>0) 05B7: MOVF 24,F05B8: BTFSS 03.205B9: GOTO 5BD05BA: MOVF 25,F05BB: BTFSC 03.205BC: GOTO 5CE.................... {Toff=1000 + (valor*4);} 05BD: RLF 24,W05BE: MOVWF 7905BF: RLF 25,W05C0: MOVWF 7A05C1: RLF 79,F05C2: RLF 7A,F05C3: MOVLW FC05C4: ANDWF 79,F05C5: MOVF 79,W05C6: ADDLW E805C7: MOVWF 2805C8: MOVF 7A,W05C9: MOVWF 2905CA: MOVLW 0305CB: BTFSC 03.0

Page 39: 299016 10 Instrumentacion Medica

05CC: MOVLW 0405CD: ADDWF 29,F.................... delay_ms(Toff); 05CE: MOVF 29,W05CF: MOVWF 2A05D0: INCF 2A,F05D1: DECF 2A,F05D2: BTFSC 03.205D3: GOTO 5D805D4: MOVLW FF05D5: MOVWF 2B05D6: CALL 09305D7: GOTO 5D105D8: MOVF 28,W05D9: MOVWF 2B05DA: CALL 093.................... } .................... if (portb == pulman) 05DB: MOVF 21,W05DC: SUBWF 06,W05DD: BTFSS 03.205DE: GOTO 695.................... {setup_adc(adc_clock_internal); 05DF: BSF 03.505E0: BCF 1F.605E1: BCF 03.505E2: BSF 1F.605E3: BSF 1F.705E4: BSF 03.505E5: BCF 1F.705E6: BCF 03.505E7: BSF 1F.0.................... set_adc_channel(0); 05E8: MOVLW 0005E9: MOVWF 7805EA: MOVF 1F,W05EB: ANDLW C705EC: IORWF 78,W05ED: MOVWF 1F.................... delay_us(20); 05EE: MOVLW 1005EF: MOVWF 7705F0: DECFSZ 77,F05F1: GOTO 5F005F2: NOP.................... valor=read_adc(); 05F3: BSF 1F.205F4: BTFSC 1F.2

Page 40: 299016 10 Instrumentacion Medica

05F5: GOTO 5F405F6: MOVF 1E,W05F7: CLRF 2505F8: MOVWF 24.................... setup_adc(adc_off); 05F9: BCF 1F.0.................... if (valor == 0) 05FA: MOVF 24,F05FB: BTFSS 03.205FC: GOTO 60305FD: MOVF 25,F05FE: BTFSS 03.205FF: GOTO 603.................... {Ton=100;} 0600: CLRF 270601: MOVLW 640602: MOVWF 26.................... if (valor > 0); 0603: MOVF 24,F0604: BTFSS 03.20605: GOTO 6090606: MOVF 25,F0607: BTFSS 03.20608: GOTO 609.................... {Ton=100 + (valor*4.9);} 0609: MOVF 25,W060A: MOVWF 2B060B: MOVF 24,W060C: MOVWF 2A060D: CALL 0A8060E: MOVF 7A,W060F: MOVWF 2D0610: MOVF 79,W0611: MOVWF 2C0612: MOVF 78,W0613: MOVWF 2B0614: MOVF 77,W0615: MOVWF 2A0616: MOVLW CD0617: MOVWF 310618: MOVLW CC0619: MOVWF 30061A: MOVLW 1C061B: MOVWF 2F061C: MOVLW 81061D: MOVWF 2E061E: CALL 0C5061F: BCF 03.1

Page 41: 299016 10 Instrumentacion Medica

0620: CLRF 2D0621: CLRF 2C0622: MOVLW 480623: MOVWF 2B0624: MOVLW 850625: MOVWF 2A0626: MOVF 7A,W0627: MOVWF 310628: MOVF 79,W0629: MOVWF 30062A: MOVF 78,W062B: MOVWF 2F062C: MOVF 77,W062D: MOVWF 2E062E: CALL 13A062F: MOVF 7A,W0630: MOVWF 2D0631: MOVF 79,W0632: MOVWF 2C0633: MOVF 78,W0634: MOVWF 2B0635: MOVF 77,W0636: MOVWF 2A0637: CALL 27B0638: MOVF 79,W0639: MOVWF 27063A: MOVF 78,W063B: MOVWF 26.................... portc=0x0c; 063C: MOVLW 0C063D: MOVWF 07.................... delay_us(Ton); 063E: MOVF 27,W063F: MOVWF 2A0640: INCF 2A,F0641: DECF 2A,F0642: BTFSC 03.20643: GOTO 6480644: MOVLW FF0645: MOVWF 2B0646: CALL 29A0647: GOTO 6410648: MOVF 26,W0649: MOVWF 2B064A: CALL 29A.................... portc=0x00; 064B: CLRF 07.................... setup_adc(adc_clock_internal);

Page 42: 299016 10 Instrumentacion Medica

064C: BSF 03.5064D: BCF 1F.6064E: BCF 03.5064F: BSF 1F.60650: BSF 1F.70651: BSF 03.50652: BCF 1F.70653: BCF 03.50654: BSF 1F.0.................... set_adc_channel(1); 0655: MOVLW 080656: MOVWF 780657: MOVF 1F,W0658: ANDLW C70659: IORWF 78,W065A: MOVWF 1F.................... delay_us(20); 065B: MOVLW 10065C: MOVWF 77065D: DECFSZ 77,F065E: GOTO 65D065F: NOP.................... valor=read_adc(); 0660: BSF 1F.20661: BTFSC 1F.20662: GOTO 6610663: MOVF 1E,W0664: CLRF 250665: MOVWF 24.................... setup_adc(adc_off); 0666: BCF 1F.0.................... if (valor == 0) 0667: MOVF 24,F0668: BTFSS 03.20669: GOTO 671066A: MOVF 25,F066B: BTFSS 03.2066C: GOTO 671.................... {Toff=5000;} 066D: MOVLW 13066E: MOVWF 29066F: MOVLW 880670: MOVWF 28.................... if (valor > 0); 0671: MOVF 24,F0672: BTFSS 03.20673: GOTO 6770674: MOVF 25,F

Page 43: 299016 10 Instrumentacion Medica

0675: BTFSS 03.20676: GOTO 677.................... {Toff=5000 + (valor *15);} 0677: MOVF 25,W0678: MOVWF 2B0679: MOVF 24,W067A: MOVWF 2A067B: CLRF 2D067C: MOVLW 0F067D: MOVWF 2C067E: CALL 2AB067F: MOVF 78,W0680: ADDLW 880681: MOVWF 280682: MOVF 79,W0683: MOVWF 290684: MOVLW 130685: BTFSC 03.00686: MOVLW 140687: ADDWF 29,F.................... delay_us(Toff); 0688: MOVF 29,W0689: MOVWF 2A068A: INCF 2A,F068B: DECF 2A,F068C: BTFSC 03.2068D: GOTO 692068E: MOVLW FF068F: MOVWF 2B0690: CALL 29A0691: GOTO 68B0692: MOVF 28,W0693: MOVWF 2B0694: CALL 29A.................... } .................... if (portb == pulbi) 0695: MOVF 23,W0696: SUBWF 06,W0697: BTFSS 03.20698: GOTO 75F.................... {setup_adc(adc_clock_internal); 0699: BSF 03.5069A: BCF 1F.6069B: BCF 03.5069C: BSF 1F.6069D: BSF 1F.7069E: BSF 03.5069F: BCF 1F.7

Page 44: 299016 10 Instrumentacion Medica

06A0: BCF 03.506A1: BSF 1F.0.................... set_adc_channel(0); 06A2: MOVLW 0006A3: MOVWF 7806A4: MOVF 1F,W06A5: ANDLW C706A6: IORWF 78,W06A7: MOVWF 1F.................... delay_us(20); 06A8: MOVLW 1006A9: MOVWF 7706AA: DECFSZ 77,F06AB: GOTO 6AA06AC: NOP.................... valor=read_adc(); 06AD: BSF 1F.206AE: BTFSC 1F.206AF: GOTO 6AE06B0: MOVF 1E,W06B1: CLRF 2506B2: MOVWF 24.................... setup_adc(adc_off); 06B3: BCF 1F.0.................... if (valor == 0) 06B4: MOVF 24,F06B5: BTFSS 03.206B6: GOTO 6BD06B7: MOVF 25,F06B8: BTFSS 03.206B9: GOTO 6BD.................... {Ton=100;} 06BA: CLRF 2706BB: MOVLW 6406BC: MOVWF 26.................... if (valor > 0); 06BD: MOVF 24,F06BE: BTFSS 03.206BF: GOTO 6C306C0: MOVF 25,F06C1: BTFSS 03.206C2: GOTO 6C3.................... {Ton=100 + (valor*4.9);} 06C3: MOVF 25,W06C4: MOVWF 2B06C5: MOVF 24,W06C6: MOVWF 2A06C7: CALL 0A8

Page 45: 299016 10 Instrumentacion Medica

06C8: MOVF 7A,W06C9: MOVWF 2D06CA: MOVF 79,W06CB: MOVWF 2C06CC: MOVF 78,W06CD: MOVWF 2B06CE: MOVF 77,W06CF: MOVWF 2A06D0: MOVLW CD06D1: MOVWF 3106D2: MOVLW CC06D3: MOVWF 3006D4: MOVLW 1C06D5: MOVWF 2F06D6: MOVLW 8106D7: MOVWF 2E06D8: CALL 0C506D9: BCF 03.106DA: CLRF 2D06DB: CLRF 2C06DC: MOVLW 4806DD: MOVWF 2B06DE: MOVLW 8506DF: MOVWF 2A06E0: MOVF 7A,W06E1: MOVWF 3106E2: MOVF 79,W06E3: MOVWF 3006E4: MOVF 78,W06E5: MOVWF 2F06E6: MOVF 77,W06E7: MOVWF 2E06E8: CALL 13A06E9: MOVF 7A,W06EA: MOVWF 2D06EB: MOVF 79,W06EC: MOVWF 2C06ED: MOVF 78,W06EE: MOVWF 2B06EF: MOVF 77,W06F0: MOVWF 2A06F1: CALL 27B06F2: MOVF 79,W06F3: MOVWF 2706F4: MOVF 78,W06F5: MOVWF 26.................... portc=0x03; 06F6: MOVLW 03

Page 46: 299016 10 Instrumentacion Medica

06F7: MOVWF 07.................... delay_us(Ton); 06F8: MOVF 27,W06F9: MOVWF 2A06FA: INCF 2A,F06FB: DECF 2A,F06FC: BTFSC 03.206FD: GOTO 70206FE: MOVLW FF06FF: MOVWF 2B0700: CALL 29A0701: GOTO 6FB0702: MOVF 26,W0703: MOVWF 2B0704: CALL 29A.................... portc=0x00; 0705: CLRF 07.................... portc=0x0c; 0706: MOVLW 0C0707: MOVWF 07.................... delay_us(Ton); 0708: MOVF 27,W0709: MOVWF 2A070A: INCF 2A,F070B: DECF 2A,F070C: BTFSC 03.2070D: GOTO 712070E: MOVLW FF070F: MOVWF 2B0710: CALL 29A0711: GOTO 70B0712: MOVF 26,W0713: MOVWF 2B0714: CALL 29A.................... portc=0x00; 0715: CLRF 07.................... setup_adc(adc_clock_internal); 0716: BSF 03.50717: BCF 1F.60718: BCF 03.50719: BSF 1F.6071A: BSF 1F.7071B: BSF 03.5071C: BCF 1F.7071D: BCF 03.5071E: BSF 1F.0.................... set_adc_channel(1); 071F: MOVLW 08

Page 47: 299016 10 Instrumentacion Medica

0720: MOVWF 780721: MOVF 1F,W0722: ANDLW C70723: IORWF 78,W0724: MOVWF 1F.................... delay_us(20); 0725: MOVLW 100726: MOVWF 770727: DECFSZ 77,F0728: GOTO 7270729: NOP.................... valor=read_adc(); 072A: BSF 1F.2072B: BTFSC 1F.2072C: GOTO 72B072D: MOVF 1E,W072E: CLRF 25072F: MOVWF 24.................... setup_adc(adc_off); 0730: BCF 1F.0.................... if (valor == 0) 0731: MOVF 24,F0732: BTFSS 03.20733: GOTO 73B0734: MOVF 25,F0735: BTFSS 03.20736: GOTO 73B.................... {Toff=5000;} 0737: MOVLW 130738: MOVWF 290739: MOVLW 88073A: MOVWF 28.................... if (valor > 0); 073B: MOVF 24,F073C: BTFSS 03.2073D: GOTO 741073E: MOVF 25,F073F: BTFSS 03.20740: GOTO 741.................... {Toff=5000 + (valor *15);} 0741: MOVF 25,W0742: MOVWF 2B0743: MOVF 24,W0744: MOVWF 2A0745: CLRF 2D0746: MOVLW 0F0747: MOVWF 2C0748: CALL 2AB

Page 48: 299016 10 Instrumentacion Medica

0749: MOVF 78,W074A: ADDLW 88074B: MOVWF 28074C: MOVF 79,W074D: MOVWF 29074E: MOVLW 13074F: BTFSC 03.00750: MOVLW 140751: ADDWF 29,F.................... delay_us(Toff); 0752: MOVF 29,W0753: MOVWF 2A0754: INCF 2A,F0755: DECF 2A,F0756: BTFSC 03.20757: GOTO 75C0758: MOVLW FF0759: MOVWF 2B075A: CALL 29A075B: GOTO 755075C: MOVF 28,W075D: MOVWF 2B075E: CALL 29A.................... } .................... if (portb == tren) 075F: MOVF 22,W0760: SUBWF 06,W0761: BTFSS 03.20762: GOTO 797.................... { portc=0x0c; 0763: MOVLW 0C0764: MOVWF 07.................... delay_ms(3); 0765: MOVLW 030766: MOVWF 2B0767: CALL 093.................... portc=0x00; 0768: CLRF 07.................... delay_ms(10); 0769: MOVLW 0A076A: MOVWF 2B076B: CALL 093.................... portc=0x0c; 076C: MOVLW 0C076D: MOVWF 07.................... delay_ms(3); 076E: MOVLW 03076F: MOVWF 2B

Page 49: 299016 10 Instrumentacion Medica

0770: CALL 093.................... portc=0x00; 0771: CLRF 07.................... delay_ms(10); 0772: MOVLW 0A0773: MOVWF 2B0774: CALL 093.................... portc=0x0c; 0775: MOVLW 0C0776: MOVWF 07.................... delay_ms(3); 0777: MOVLW 030778: MOVWF 2B0779: CALL 093.................... portc=0x00; 077A: CLRF 07.................... delay_ms(10); 077B: MOVLW 0A077C: MOVWF 2B077D: CALL 093.................... portc=0x0c; 077E: MOVLW 0C077F: MOVWF 07.................... delay_ms(3); 0780: MOVLW 030781: MOVWF 2B0782: CALL 093.................... portc=0x00; 0783: CLRF 07.................... delay_ms(10); 0784: MOVLW 0A0785: MOVWF 2B0786: CALL 093.................... portc=0x0c; 0787: MOVLW 0C0788: MOVWF 07.................... delay_ms(3); 0789: MOVLW 03078A: MOVWF 2B078B: CALL 093.................... portc=0x00; 078C: CLRF 07.................... delay_ms(10); 078D: MOVLW 0A078E: MOVWF 2B078F: CALL 093.................... .................... delay_ms(500);

Page 50: 299016 10 Instrumentacion Medica

0790: MOVLW 020791: MOVWF 2A0792: MOVLW FA0793: MOVWF 2B0794: CALL 0930795: DECFSZ 2A,F0796: GOTO 792.................... } .................... } .................... } 0797: GOTO 30A.................... } .................... 0798: SLEEP

Configuration Fuses: Word 1: 1F32 HS NOWDT PUT PROTECT NODEBUG NOBROWNOUT NOLVP NOCPD NOWRT

CONCLUSIONES

Page 51: 299016 10 Instrumentacion Medica

Conocer los procesos de aprendizajes donde se proponen metas para la

verificación de competencias y logros de un conocimiento mediante

investigaciones dando como resultado la identificación de fortalezas, estrategias,

dificultades y posibles soluciones.

Se trabajó con el programa proteus para la elaboración y simulación del circuito

exigido, se diseño el circuito en programa brindando la posibilidad de generar cada

tipo de onda que se mostraba durante la comprobación de la actividad.

BIBLIOGRAFIA.

Page 52: 299016 10 Instrumentacion Medica

Módulo INSTRUMENTACION MÉDICA. UNAD.

Programa PROTEUS para la elaboración del circuito.

Campus virtual. INSTRUMENTACION MÉDICA. UNAD.