Capítulo VIII: PROGRAMACIÓN DEL PIC 16F876A

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Capítulo VIII: PROGRAMACIÓN DEL PIC 16F876A"

Transcripción

1 Capítulo VIII: PROGRAMACIÓN DEL PIC 16F876A Proyecto Fin de Carrera 95 Antonio Andújar Caballero

2 8. PROGRAMACIÓN DEL PIC 16F876A. A la hora de realizar el programa de control para nuestro ecualizador, elegimos el lenguaje ensamblador (ASM). Igualmente se podría haber realizado en lenguaje C, pero el hecho de conocer mejor el ASM, implicaba un menor tiempo en el desarrollo del código. A continuación se presenta el programa contenido en el PIC, con los comentarios correspondientes a cada una de las partes en que se divide el mismo. ; ENCABEZADO LIST P = 16F876A ; Defino al compilador que microcontrolador usaré INCLUDE <P16F876A.INC> ; Incluyo las directivas para ese microcontrolador ERRORLEVEL -302 ; Al compilar no notifica los posibles errores de paginación ; CONFIGURACIÓN DE BITS CONFIG _CP_ALL&_DEBUG_OFF&_WRT_ENABLE_OFF&_CPD_ON&_LVP_OFF&_BODEN_OF F&_PWRTE_ON&_WDT_OFF&_XT_OSC ; protección de datos, debug desactivado, no verificar tensión PIC, protección de la EEPROM activada ; programación con bajo voltaje desactivada, boden desactivado, reset por conexión a alimentación activo ; watchdog desactivado y usamos cristal. ; CONFIGURACIÓN DE PINES #DEFINE CS1 PORTA,0 ; Chipselect 1 Potenciómetro Ganancia-Graves #DEFINE CS2 PORTA,1 ; Chipselect 2 Potenciómetro Medios-Agudos #DEFINE DAT PORTA,2 ; Línea de datos del PIC hacia los potenciómetros #DEFINE CLK PORTA,3 ; Clock para sincronizar el PIC con los potes #DEFINE SUBE PORTB,0 ; Pulsador para subir posición #DEFINE BAJA PORTB,1 ; Pulsador para bajar posición #DEFINE CAMBIO PORTB,2 ; Pulsador para cambiar entre potes #DEFINE MEMORIA PORTB,3 ; Pulsador para cargar/almacenar memoria #DEFINE PRESET_1 PORTB,4 ; Pulsador para cargar Preset 1 #DEFINE PRESET_2 PORTB,5 ; Pulsador para cargar Preset 2 #DEFINE PRESET_3 PORTB,6 ; Pulsador para cargar Preset 3 #DEFINE PRESET_4 PORTB,7 ; Pulsador para cargar Preset 4 #DEFINE OUT_RS PORTC,0 ; Pin RS del LCD #DEFINE OUT_E PORTC,1 ; Pin Enable del LCD #DEFINE DB4 PORTC,2 ; Bus de datos del LCD #DEFINE DB5 PORTC,3 ; Bus de datos del LCD #DEFINE DB6 PORTC,4 ; Bus de datos del LCD #DEFINE DB7 PORTC,5 ; Bus de datos del LCD Proyecto Fin de Carrera 96 Antonio Andújar Caballero

3 ; DEFINICIÓN DE FLAG #DEFINE FLASH_E FLAG,0 ; La usamos para el parpadeo del LCD ; CONFIGURACIÓN DE MEMORIA WWW EQU.32 ; Sirve para guardar W cuando entramos en una interrupción ESTADO EQU.33 ; Sirve para guardar STATUS cuando entramos en interrp. TEMP1 EQU.34 ; Almacenar variables temporales TEMP2 EQU.35 TEMP3 EQU.36 TEMP4 EQU.37 CONTA_1 EQU.38 ; Contadores CONTA_2 EQU.39 CONTA_3 EQU.40 CONTA_4 EQU.41 CONTA_5 EQU.42 DP1 EQU.43 ; Datos a representar en el LCD, números DP2 EQU.44 DP3 EQU.45 DP4 EQU.46 DP5 EQU.47 DP6 EQU.48 DP7 EQU.49 DP8 EQU.50 DP9 EQU.51 DP10 EQU.52 DP11 EQU.53 DP12 EQU.54 DP13 EQU.55 DP14 EQU.56 DP15 EQU.57 POTE_G EQU.58 ; Valor potenciómetro de Graves POTE_M EQU.59 ; Valor potenciómetro de Medios POTE_A EQU.60 ; Valor potenciómetro de Agudos POTE_GA EQU.61 ; Valor potenciómetro de Ganancia FLASH_N EQU.62 ; Registro para saber en que potenciómetro nos encontramos FLAG EQU.63 ; Registro para la representación del LCD DX1 EQU.64 ; Registros temporales para el LCD DX2 EQU.65 DX3 EQU.66 DX4 EQU.67 RETARDO1 EQU.68 ; Retardo (parpadeo) DIR1 EQU.69 ; Registros temporales para la lect y escrit de la EEPROM DIR2 EQU.70 DIR3 EQU.71 DIR4 EQU.72 Proyecto Fin de Carrera 97 Antonio Andújar Caballero

4 ; MACROS GR_GA macro bsf bcf endm CS1 CS2 ; Activa el potenciómetro de Ganancia-Graves ME_AG macro bcf bsf endm CS1 CS2 ; Activa el potenciómetro de Medios- Agudos NO_CHIP macro ; Desactiva ambos potenciómetros bcf CS1 bcf CS2 endm ; VECTORES DE RESET ORG 0x00 ; Origen del programa siempre que ocurra un reset goto INICIO ; Salta a "inicio" ORG 0x04 ; Comienza hache cuando ocurra una interrupción goto FLASH ; Salta a flash ; INTERRUPCIONES FLASH ; Rutina cuando se produce una interrupción por TMR1 movwf WWW ; Guarda en WWW lo que tenemos en W swapf STATUS,W movwf ESTADO ; Guarda en ESTADO lo que contiene status bcf PIR1,TMR1IF ; Borramos el flag que produce la interrupción movf RETARDO1,F btfss STATUS,Z ; Si el retardo (parpadeo) es 0 salta una instrucción decf RETARDO1,F ; Decremento retardo (parpadeo) si no es 0 btfss FLASH_E ; Comprueba parpadeo, si es 1 salta una instrucción goto SAL2 ; Si es 0 vamos a SAL2 movlw.1 subwf FLASH_N,W ; Restamos 1 al valor de FLASH_N para saber pote estamos btfsc STATUS,Z ; Si la operación no es 0 salta una instrucción goto BAJ ; La operación es 0, vamos a BAJ movlw.2 subwf FLASH_N,W ; Restamos 2 al valor de FLASH_N btfsc STATUS,Z ; Si la operación no es 0 salta una instrucción goto MED ; La operación es 0, vamos a MED movlw.3 subwf FLASH_N,W ; Restamos 3 al valor de FLASH_N btfsc STATUS,Z ; Si la operación no es 0 salta una instrucción goto AGU ; La operación es 0, vamos a AGU movlw.4 subwf FLASH_N,W ; Restamos 4 al valor de FLASH_N btfsc STATUS,Z ; Si la operación no es 0 salta una instrucción goto GAN ; La operación es 0, vamos a GAN goto SAL1 ; Si no es ninguno de los potes, vamos a SAL1 Proyecto Fin de Carrera 98 Antonio Andújar Caballero

5 BAJ MED movf DP1,W movwf DX1 ; Guardamos datos DP1 en temporales DX1 movf DP2,W movwf DX2 movf DP3,W movwf DX3 movf DP4,W movwf DX4 movwf DP1 ; Guardamos lo que tenemos en W en DP movwf DP2 movwf DP3 movwf DP4 call PRESENTAR ; Presentamos los valores en el LCD movf DX1,W movwf DP1 ; Guardamos en DP lo que tenemos en temporales DX movf DX2,W movwf DP2 movf DX3,W movwf DP3 movf DX4,W movwf DP4 goto SAL1 ; Vamos a SAL1 movf DP5,W movwf DX1 ; Guardamos datos DP en temporales DX movf DP6,W movwf DX2 movf DP7,W movwf DX3 movf DP8,W movwf DX4 movwf DP5 ; Guardamos lo que tenemos en W en DP movwf DP6 movwf DP7 movwf DP8 call PRESENTAR ; Presentamos los valores en el LCD movf DX1,W movwf DP5 ; Guardamos en DP lo que tenemos en temporales DX movf DX2,W movwf DP6 movf DX3,W movwf DP7 movf DX4,W movwf DP8 goto SAL1 ; Vamos a SAL1 AGU movf DP9,W movwf DX1 movf DP10,W movwf DX2 movf DP11,W ; Guardamos datos DP en temporales DX Proyecto Fin de Carrera 99 Antonio Andújar Caballero

6 movwf DX3 movf DP12,W movwf DX4 movwf DP9 ; Guardamos lo que tenemos en W en DP movwf DP10 movwf DP11 movwf DP12 call PRESENTAR ; Presentamos los valores en el LCD movf DX1,W movwf DP9 ; Guardamos en DP lo que tenemos en temporales DX movf DX2,W movwf DP10 movf DX3,W movwf DP11 movf DX4,W movwf DP12 goto SAL1 ; Vamos a SAL1 GAN SAL1 movf DP13,W movwf DX1 ; Guardamos datos DP en temporales DX movf DP14,W movwf DX2 movf DP15,W movwf DX3 movwf DP13 ; Guardamos lo que tenemos en W en DP movwf DP14 movwf DP15 call PRESENTAR ; Presentamos los valores en el LCD movf DX1,W movwf DP13 ; Guardamos en DP lo que tenemos en temporales DX movf DX2,W movwf DP14 movf DX3,W movwf DP15 bcf FLASH_E ; Ponemos a 0 el flag del parpadeo swapf ESTADO,W movwf STATUS ; Guardamos en STATUS lo que tenemos en ESTADO swapf WWW,F swapf WWW,W ; Guardamos en W lo que tenemos en WWW retfie SAL2 call PRESENTAR ; Presentamos en el LCD bsf FLASH_E ; Ponemos a 1 el flag del parpadeo swapf ESTADO,W movwf STATUS ; Guardamos en STATUS lo que tenemos en ESTADO swapf WWW,F swapf WWW,W ; Guardamos en W lo que tenemos en WWW retfie Proyecto Fin de Carrera 100 Antonio Andújar Caballero

7 ; RETARDOS DEMORA movlw.10 movwf CONTA_1 ; Rutina de retardo QWE0 decfsz CONTA_1,F goto QWE0 DEMORA_150US movlw.36 movwf CONTA_1 ; Rutina de retardo de 150 microsegundos QWE1 decfsz CONTA_1,F goto QWE1 DEMORA_1MS movlw.248 movwf CONTA_1 ; Rutina de retardo de 1 milisegundo QWE2 decfsz CONTA_1,F goto QWE2 DEMORA_20MS movlw.21 movwf CONTA_1 ; Rutina de retardo de 20 milisegundos QWE3 QWE4 movlw.237 movwf CONTA_2 decfsz CONTA_2,F goto QWE4 decfsz CONTA_1,F goto QWE3 Proyecto Fin de Carrera 101 Antonio Andújar Caballero

8 DEMORA_100MS movlw.110 movwf CONTA_3 ; Rutina de retardo de 100 milisegundos QWE5 QWE6 movlw.181 movwf CONTA_4 decfsz CONTA_4,F goto QWE6 decfsz CONTA_3,F goto QWE5 DEMORA_1S5 movlw.125 movwf CONTA_3 ; Rutina de retardo de 1 segundo y medio QWE7 QWE8 QWE9 movlw.41 movwf CONTA_4 movlw.73 movwf CONTA_5 clrwdt decfsz CONTA_5,F goto QWE9 decfsz CONTA_4,F goto QWE8 decfsz CONTA_3,F goto QWE7 ; LCD INI_D ; Rutina para comandos de inicialización del LCD movwf TEMP2 ; Guardamos en TEMP2 lo que tenemos en W bcf DB4 ; Ponemos a 0 los pines de datos del LCD bcf DB5 bcf DB6 bcf DB7 btfsc TEMP2,4 ; Comprueba el bit 4 de TEMP2. Si es 0 salta una instrucción. bsf DB4 ; Si es 1 coloca un 1 en DB4 btfsc TEMP2,5 ; Comprueba el bit 5 de TEMP2. Si es 0 salta una instrucción. bsf DB5 ; Si es 1 coloca un 1 en DB5 Proyecto Fin de Carrera 102 Antonio Andújar Caballero

9 btfsc TEMP2,6 ; Comprueba el bit 6 de TEMP2. Si es 0 salta una instrucción. bsf DB6 ; Si es 1 coloca un 1 en DB6 btfsc TEMP2,7 ; Comprueba el bit 7 de TEMP2. Si es 0 salta una instrucción. bsf DB7 ; Si es 1 coloca un 1 en DB7 bcf OUT_RS ; Colocamos un 0 RS bsf OUT_E ; Colocamos un 1 en E para transmitir datos call DEMORA_1MS call DEMORA_1MS call DEMORA_1MS call DEMORA_1MS call DEMORA_1MS ; Retardo de 5ms bcf OUT_E ; Colocamos un 0 en E para dejar de transmitir bcf DB4 ; Ponemos a 0 los pines de datos del LCD bcf DB5 bcf DB6 bcf DB7 btfsc TEMP2,0 ; Comprueba el bit 0 de TEMP2. Si es 0 salta una instrucción. bsf DB4 ; Si es 1 coloca un 1 en DB4 btfsc TEMP2,1 ; Comprueba el bit 1 de TEMP2. Si es 0 salta una instrucción. bsf DB5 ; Si es 1 coloca un 1 en DB5 btfsc TEMP2,2 ; Comprueba el bit 2 de TEMP2. Si es 0 salta una instrucción. bsf DB6 ; Si es 1 coloca un 1 en DB6 btfsc TEMP2,3 ; Comprueba el bit 3 de TEMP2. Si es 0 salta una instrucción. bsf DB7 ; Si es 1 coloca un 1 en DB7 bcf OUT_RS ; Colocamos un 0 en RS bsf OUT_E ; Colocamos un 1 en E para transmitir datos call DEMORA_1MS call DEMORA_1MS call DEMORA_1MS call DEMORA_1MS call DEMORA_1MS ; Retardo de 5ms bcf OUT_E ; Colocamos un 0 en E para dejar de transmitir INSTRUCCION_D ; Rutina transmitir instrucción al LCD movwf TEMP2 ; Guardamos en TEMP2 lo que tenemos en W bcf DB4 ; Ponemos a 0 los pines de datos del LCD bcf DB5 bcf DB6 bcf DB7 btfsc TEMP2,4 ; Comprueba el bit 4 de TEMP2. Si es 0 salta una instrucción. bsf DB4 ; Si es 1 coloca un 1 en DB4 btfsc TEMP2,5 ; Comprueba el bit 5 de TEMP2. Si es 0 salta una instrucción. bsf DB5 ; Si es 1 coloca un 1 en DB5 btfsc TEMP2,6 ; Comprueba el bit 6 de TEMP2. Si es 0 salta una instrucción. bsf DB6 ; Si es 1 coloca un 1 en DB6 btfsc TEMP2,7 ; Comprueba el bit 7 de TEMP2. Si es 0 salta una instrucción. bsf DB7 ; Si es 1 coloca un 1 en DB7 bcf OUT_RS ; Colocamos un 0 RS bsf OUT_E ; Colocamos un 1 en E para transmitir datos call DEMORA_1MS call DEMORA_1MS ; Retardo de 2ms bcf OUT_E ; Colocamos un 0 en E para dejar de transmitir Proyecto Fin de Carrera 103 Antonio Andújar Caballero

10 bcf DB4 ; Ponemos a 0 los pines de datos del LCD bcf DB5 bcf DB6 bcf DB7 btfsc TEMP2,0 ; Comprueba el bit 0 de TEMP2. Si es 0 salta una instrucción. bsf DB4 ; Si es 1 coloca un 1 en DB4 btfsc TEMP2,1 ; Comprueba el bit 1 de TEMP2. Si es 0 salta una instrucción. bsf DB5 ; Si es 1 coloca un 1 en DB5 btfsc TEMP2,2 ; Comprueba el bit 2 de TEMP2. Si es 0 salta una instrucción. bsf DB6 ; Si es 1 coloca un 1 en DB6 btfsc TEMP2,3 ; Comprueba el bit 3 de TEMP2. Si es 0 salta una instrucción. bsf DB7 ; Si es 1 coloca un 1 en DB7 bcf OUT_RS ; Colocamos un 0 RS bsf OUT_E ; Colocamos un 1 en E para transmitir datos call DEMORA_1MS call DEMORA_1MS ; Retardo de 2ms bcf OUT_E ; Colocamos un 0 en E para dejar de transmitir call DEMORA_150US ; Retardo de 150us DATO_D ; Rutina de envío de datos al LCD movwf TEMP2 ; Guardamos en TEMP2 lo que tenemos en W bcf DB4 ; Ponemos a 0 los pines de datos del LCD bcf DB5 bcf DB6 bcf DB7 btfsc TEMP2,4 ; Comprueba el bit 4 de TEMP2. Si es 0 salta una instrucción. bsf DB4 ; Si es 1 coloca un 1 en DB4 btfsc TEMP2,5 ; Comprueba el bit 5 de TEMP2. Si es 0 salta una instrucción. bsf DB5 ; Si es 1 coloca un 1 en DB5 btfsc TEMP2,6 ; Comprueba el bit 6 de TEMP2. Si es 0 salta una instrucción. bsf DB6 ; Si es 1 coloca un 1 en DB6 btfsc TEMP2,7 ; Comprueba el bit 7 de TEMP2. Si es 0 salta una instrucción. bsf DB7 ; Si es 1 coloca un 1 en DB7 bsf OUT_RS ; Colocamos un 0 RS bsf OUT_E ; Colocamos un 1 en E para transmitir datos call DEMORA ; Rutina de retardo bcf OUT_E ; Colocamos un 0 en E para dejar de transmitir call DEMORA ; Rutina de retardo bcf OUT_RS ; Colocamos un 0 en RS bcf OUT_E ; Colocamos un 0 en E para dejar de transmitir bcf DB4 ; Ponemos a 0 los pines de datos del LCD bcf DB5 bcf DB6 bcf DB7 btfsc TEMP2,0 ; Comprueba el bit 0 de TEMP2. Si es 0 salta una instrucción. bsf DB4 ; Si es 1 coloca un 1 en DB4 btfsc TEMP2,1 ; Comprueba el bit 1 de TEMP2. Si es 0 salta una instrucción. bsf DB5 ; Si es 1 coloca un 1 en DB5 btfsc TEMP2,2 ; Comprueba el bit 2 de TEMP2. Si es 0 salta una instrucción. bsf DB6 ; Si es 1 coloca un 1 en DB6 btfsc TEMP2,3 ; Comprueba el bit 3 de TEMP2. Si es 0 salta una instrucción. bsf DB7 ; Si es 1 coloca un 1 en DB7 bsf OUT_RS ; Colocamos un 1 en RS Proyecto Fin de Carrera 104 Antonio Andújar Caballero

11 bsf OUT_E ; Colocamos un 1 en E call DEMORA ; Retardo bcf OUT_E ; Colocamos un 0 en E para dejar de transmitir call DEMORA ; Retardo bcf OUT_RS ; Colocamos un 0 en RS bcf OUT_E ; Colocamos un 0 en E INICIALIZAR_LCD ; Rutina para inicializar el LCD call DEMORA_20MS ; Retardo 20ms movlw B' ' call INI_D movlw B' ' ; Setea 4 bits call INI_D movlw B' ' ; Setea 2 líneas, matriz de 5x7 movlw B' ' ; LCD Off movlw B' ' ; Limpiamos el LCD call DEMORA_1MS movlw B' ' ; Activa el LCD, desactiva el cursor y desactiva parpadeo movlw B' ' ; Limpiamos el LCD ; REPRESENTACIÓN A ESCALA CONVERTIR_G ; Rutina para convertir a escala el pote de graves movwf TEMP1 ; Guardamos en TEMP1 lo que tenemos en W clrf DP1 ; Limpiamos variables donde guardaremos los datos al LCD clrf DP2 clrf DP3 clrf DP4 movlw.128 subwf TEMP1,W ; A TEMP1 le restamos 128 y guardamos en TEMP1 btfss STATUS,Z ; Si la operación es 0 saltamos una instrucción goto NO_CERO_G ; Si no es 0 vamos a NO_CERO_G ; Pasa un espacio a DP1 (no signo) movwf DP1 movlw A'0' ; Pasa tres 0 al resto de datos movwf DP2 movwf DP3 movwf DP4 NO_CERO_G ; Si al restar TEMP1 menos 128 no es cero btfss STATUS,C ; Si el acarreo es 1 salta instrucción (positivo) goto ARR_G ; Si el acarreo no es 1 vamos a ARR_G (negativo) movlw.128 subwf TEMP1,F ; Restamos a TEMP1 los 128 y guardamos en TEMP1 movlw A'+' movwf DP1 ; Cargamos en DP1 el signo positivo Proyecto Fin de Carrera 105 Antonio Andújar Caballero

12 goto TRE1 ; Vamos a TRE1 ARR_G ; Si es negativo movlw.128 movwf TEMP2 movf TEMP1,W subwf TEMP2,W ; Hacemos 128 menos TEMP2 y guardamos en TEMP2 movwf TEMP1 ; Lo guardamos en TEMP1 movlw A'-' movwf DP1 ; Cargamos en DP1 el signo negativo TRE1 TRE2 incf DP2,F ; Incrementa en 1 el valor de DP2 movlw.100 subwf TEMP1,F ; Hace TEMP1 menos 100 y guardamos en TEMP1 btfsc STATUS,C ; Si el acarreo es 0 saltamos una instrucción (negativo) goto TRE1 ; Si el acarreo es 1 volvemos a TRE1 (positivo) movlw.100 addwf TEMP1,F ; Sumamos 100 a TEMP1 decf DP2,F ; Decremento en uno el valor de DP2 movlw.48 addwf DP2,F ; Sumamos 48 a DP2 incf DP3,F ; Incremento en 1 el valor de DP3 movlw.10 subwf TEMP1,F ; Restamos 10 a TEMP1 y guardamos en TEMP1 btfsc STATUS,C ; Si el acarreo es 0 saltamos una instrucción (negativo) goto TRE2 ; Si el acarreo es 1 volvemos a TRE2 (positivo) movlw.10 addwf TEMP1,F ; Sumamos 10 a TEMP1 decf DP3,F ; Restamos 1 a DP3 movlw.48 addwf DP3,F ; Sumamos 48 a DP3 movf TEMP1,W movwf DP4 ; Guardamos en DP4 el valor de TEMP1 movlw.48 addwf DP4,F ; Sumamos 48 a DP4 CONVERTIR_M ; Rutina para convertir a escala el pote de medios movwf TEMP1 clrf DP5 clrf DP6 clrf DP7 clrf DP8 movlw.128 subwf TEMP1,W btfss STATUS,Z goto NO_CERO_M ; Mismos comentarios que la rutina CONVERTIR_G movwf DP5 movlw A'0' movwf DP6 Proyecto Fin de Carrera 106 Antonio Andújar Caballero

13 movwf DP7 movwf DP8 NO_CERO_M btfss STATUS,C goto ARR_M movlw.128 subwf TEMP1,F movlw A'+' movwf DP5 goto TRE3 ARR_M movlw.128 movwf TEMP2 movf TEMP1,W subwf TEMP2,W movwf TEMP1 movlw A'-' movwf DP5 TRE3 TRE4 incf DP6,F movlw.100 subwf TEMP1,F btfsc STATUS,C goto TRE3 movlw.100 addwf TEMP1,F decf DP6,F movlw.48 addwf DP6,F incf DP7,F movlw.10 subwf TEMP1,F btfsc STATUS,C goto TRE4 movlw.10 addwf TEMP1,F decf DP7,F movlw.48 addwf DP7,F movf TEMP1,W movwf DP8 movlw.48 addwf DP8,F Proyecto Fin de Carrera 107 Antonio Andújar Caballero

14 CONVERTIR_A ; Rutina para convertir a escala el pote de agudos movwf TEMP1 clrf DP9 clrf DP10 clrf DP11 clrf DP12 movlw.128 subwf TEMP1,W btfss STATUS,Z goto NO_CERO_A ; Mismos comentarios que la rutina CONVERTIR_G movwf DP9 movlw A'0' movwf DP10 movwf DP11 movwf DP12 NO_CERO_A btfss STATUS,C goto ARR_A movlw.128 subwf TEMP1,F movlw A'+' movwf DP9 goto TRE5 ARR_A movlw.128 movwf TEMP2 movf TEMP1,W subwf TEMP2,W movwf TEMP1 movlw A'-' movwf DP9 TRE5 TRE6 incf DP10,F movlw.100 subwf TEMP1,F btfsc STATUS,C goto TRE5 movlw.100 addwf TEMP1,F decf DP10,F movlw.48 addwf DP10,F incf DP11,F movlw.10 subwf TEMP1,F btfsc STATUS,C goto TRE6 Proyecto Fin de Carrera 108 Antonio Andújar Caballero

15 movlw.10 addwf TEMP1,F decf DP11,F movlw.48 addwf DP11,F movf TEMP1,W movwf DP12 movlw.48 addwf DP12,F CONVERTIR_GA ; Rutina para convertir a escala el pote de ganancia movwf TEMP1 ; Guardamos W en TEMP1 clrf DP13 ; Limpiamos las variables DP13, DP14 y DP15 clrf DP14 clrf DP15 TRE7 TRE8 incf DP13,F ; Aumentamos en 1 el valor de DP13 y guardamos en DP13 movlw.100 subwf TEMP1,F ; Restamos 100 a TEMP1 btfsc STATUS,C ; Si es 0 el acarreo saltamos una instrucción (negativo) goto TRE7 ; Si no es 0 el acarreo volvemos a TRE7 (positivo) movlw.100 addwf TEMP1,F ; Sumamos 100 a TEMP1 y guardamos en TEMP1 decf DP13,F ; Restamos 1 a DP13 y guardamos en DP13 movlw.48 addwf DP13,F ; Sumamos 48 a DP13 y guardamos en DP13 incf DP14,F ; Sumamos 1 a DP14 y guardamos en DP14 movlw.10 subwf TEMP1,F ; Restamos 10 a TEMP1 btfsc STATUS,C ; Si el acarreo es 0 saltamos una instrucción goto TRE8 ; Si el acarreo es 1 volvemos a TRE8 movlw.10 addwf TEMP1,F ; Sumamos 10 a TEMP1 y guardamos en TEMP1 decf DP14,F ; Restamos 1 a DP14 y guardamos en DP14 movlw.48 addwf DP14,F ; Sumamos 48 a DP14 y guardamos en DP14 movf TEMP1,W movwf DP15 ; Guardamos en DP15 el valor de TEMP1 movlw.48 addwf DP15,F ; Sumamos 48 a DP15 y guardamos en DP15 Proyecto Fin de Carrera 109 Antonio Andújar Caballero

16 ; PRESENTACIÓN DE DATOS PRESENTAR ; Presentación de datos en el LCD movlw H'80' ; Línea superior movlw A'G' ; G movlw A'r' ; r movlw A'a' ; a movf DP1,W ; Signo del potenciómetro de graves movf DP2,W ; Centenas del potenciómetro de graves movf DP3,W ; Decenas del potenciómetro de graves movf DP4,W ; Unidades del potenciómetro de graves movlw A'M' ; M movlw A'e' ; e movlw A'd' ; d movf DP5,W ; Signo del potenciómetro de medios movf DP6,W ; Centenas del potenciómetro de medios movf DP7,W ; Decenas del potenciómetro de medios movf DP8,W ; Unidades del potenciómetro de medios movlw H'C0' ; Linea inferior movlw A'A' ; A movlw A'g' ; g movlw A'u' ; u movf DP9,W ; Signo del potenciómetro de agudos movf DP10,W ; Centenas del potenciómetro de agudos movf DP11,W ; Decenas del potenciómetro de agudos movf DP12,W ; Unidades del potenciómetro de agudos movlw A'G' ; G movlw A'a' ; a Proyecto Fin de Carrera 110 Antonio Andújar Caballero

17 movlw A'n' ; n movf DP13,W ; Centenas del potenciómetro de ganancia movf DP14,W ; Decenas del potenciómetro de ganancia movf DP15,W ; Unidades del potenciómetro de ganancia ; LECTURA DE LA EEPROM LEER_EEPROM ; Rutina para cargar los potenciómetros movf DIR1,W ; Carga del potenciómetro de GRAVES bsf STATUS,RP1 ; Seleccionamos banco 2 movwf EEADR ; Pasamos el valor de dirección DIR1 a EEADR bsf STATUS,RP0 ; Seleccionamos banco 3 bcf EECON1,EEPGD ; Accedemos a memoria de datos bsf EECON1,RD ; Iniciamos lectura de la EEPROM bcf STATUS,RP0 ; Seleccionamos banco 2 movf EEDATA,W bcf STATUS,RP1 ; Seleccionamos banco 0 movwf POTE_G ; Pasamos el valor almacenado a POTE_G call CONVERTIR_G ; Convertimos el valor a escala movf DIR2,W ; Carga del potenciómetro de MEDIOS bsf STATUS,RP1 ; Seleccionamos banco 2 movwf EEADR ; Pasamos el valor de dirección DIR2 a EEADR bsf STATUS,RP0 ; Seleccionamos banco 3 bcf EECON1,EEPGD ; Accedemos a memoria de datos bsf EECON1,RD ; Iniciamos la lectura de la EEPROM bcf STATUS,RP0 ; Seleccionamos banco 2 movf EEDATA,W bcf STATUS,RP1 ; Seleccionamos banco 0 movwf POTE_M ; Pasamos el valor almacenado a POTE_M call CONVERTIR_M ; Convertimos el valor a escala movf DIR3,W ; Carga del potenciómetro de AGUDOS bsf STATUS,RP1 ; Seleccionamos banco 2 movwf EEADR ; Pasamos el valor de dirección DIR3 a EEADR bsf STATUS,RP0 ; Seleccionamos banco 3 bcf EECON1,EEPGD ; Accedemos a memoria de datos bsf EECON1,RD ; Iniciamos la lectura de la EEPROM bcf STATUS,RP0 ; Seleccionamos banco 2 movf EEDATA,W bcf STATUS,RP1 ; Seleccionamos banco 0 movwf POTE_A ; Pasamos el valor almacenado a POTE_A call CONVERTIR_A ; Convertimos el valor a escala Proyecto Fin de Carrera 111 Antonio Andújar Caballero

18 movf DIR4,W ; Carga del potenciómetro de GANANCIA bsf STATUS,RP1 ; Seleccionamos banco 2 movwf EEADR ; Pasamos el valor de dirección DIR4 a EEADR bsf STATUS,RP0 ; Seleccionamos banco 3 bcf EECON1,EEPGD ; Accedemos a memoria de datos bsf EECON1,RD ; Iniciamos la lectura de la EEPROM bcf STATUS,RP0 ; Seleccionamos banco 2 movf EEDATA,W bcf STATUS,RP1 ; Seleccionamos banco 0 movwf POTE_GA ; Pasamos el valor almacenado a POTE_GA call CONVERTIR_GA ; Convertimos el valor a escala ; PROGRAMA INICIO ; Comienzo del programa bcf STATUS,RP0 bcf STATUS,RP1 ; Seleccionamos el banco 0 clrf PORTA ; Limpiamos el Puerto A clrf PORTB ; Limpiamos el Puerto B clrf PORTC ; Limpiamos el Puerto C clrf WWW ; Limpiamos las variables que usaremos en el programa clrf ESTADO clrf TEMP1 clrf TEMP2 clrf TEMP3 clrf TEMP4 clrf CONTA_1 clrf CONTA_2 clrf CONTA_3 clrf CONTA_4 clrf CONTA_5 clrf DP1 clrf DP2 clrf DP3 clrf DP4 clrf DP5 clrf DP6 clrf DP7 clrf DP8 clrf DP9 clrf DP10 clrf DP11 clrf DP12 clrf DP13 clrf DP14 clrf DP15 clrf POTE_G clrf POTE_M clrf POTE_A clrf POTE_GA clrf FLASH_N clrf FLAG clrf DX1 clrf DX2 Proyecto Fin de Carrera 112 Antonio Andújar Caballero

19 clrf DX3 clrf DX4 clrf RETARDO1 clrf DIR1 clrf DIR2 clrf DIR3 clrf DIR4 bsf STATUS,RP0 ; Seleccionamos el banco1 movlw B' ' movwf ADCON1 ; Todos los pines como digitales movlw B' ' movwf TRISA ; Configuramos todos los pines del puerto A como salidas movlw B' ' movwf TRISB ; Configuramos todos los pines del puerto B como entradas movlw B' ' movwf TRISC ; Configuramos todos los pines del puerto C como salidas movlw B' ' movwf PIE1 ; Activamos la interrupción por desbordamiento TMR1 bcf STATUS,RP0 ; Pasamos al banco 0 NO_CHIP ; Deshabilitamos ambos potenciómetros call INICIALIZAR_LCD ; Inicializa el LCD movlw.0 movwf DIR1 ; Dirección 1 apunta a 0 movlw.1 movwf DIR2 ; Dirección 2 apunta a 1 movlw.2 movwf DIR3 ; Dirección 3 apunta a 2 movlw.3 movwf DIR4 ; Dirección 4 apunta a 3 call LEER_EEPROM ; Leemos la EEPROM movlw B' ' movwf PIR1 ; Configuro las interrupciones por TMR1 movlw B' ' movwf INTCON ; Activa unmasked interrupciones movlw B' ' movwf T1CON ; 1:8 prescale value, enable timer1 call PRESENTAR ; Presentación de los datos en el LCD call ENVIAR_GR_GA ; Transmite al pote de Ganancia-Graves la posición call ENVIAR_ME_AG ; Transmite al pote de Medios-Agudos la posición NO_FLASH movlw.0 movwf FLASH_N ; Damos valor 0 a FLASH_N (ningún pote) btfss MEMORIA ; Si no se ha pulsado MEMO salta una instrucción call GUARDA_MEMORIA ; Si se ha pulsado llama a GUARDA_MEMORIA btfss PRESET_1 ; Si no se ha pulsado PRESET1 salta una instrucción call PONE_PRESET_1 ; Si se ha pulsado llama a PONE_PRESET_1 btfss PRESET_2 ; Si no se ha pulsado PRESET2 salta una instrucción call PONE_PRESET_2 ; Si se ha pulsado llama a PONE_PRESET_2 btfss PRESET_3 ; Si no se ha pulsado PRESET3 salta una instrucción call PONE_PRESET_3 ; Si se ha pulsado llama a PONE_PRESET_3 btfss PRESET_4 ; Si no se ha pulsado PRESET4 salta una instrucción Proyecto Fin de Carrera 113 Antonio Andújar Caballero

20 call PONE_PRESET_4 ; Si se ha pulsado llama a PONE_PRESET_4 btfsc CAMBIO ; Si se ha pulsado CAMBIO salta una instrucción goto NO_FLASH ; Si no se ha pulsado vuelve a comprobar pulsadores movlw.30 movwf RETARDO1 ; Retardo (parpadeo) movlw.1 movwf FLASH_N ; Colocamos un 1 en FLASH_N (Potenciómetro de Graves) btfss CAMBIO ; Volvemos a comprobar CAMBIO. Si esta pulsado salta a POTE_GRAVES goto $-1 goto POTE_GRAVES ; REGULACIÓN DE LOS POTENCIÓMETROS POTE_GRAVES ; Regula el potenciómetro de Graves movlw.1 movwf FLASH_N ; Colocamos un 1 en FLASH_N (Potenciómetro de Graves) call DEMORA_100MS ; Retraso de 100ms btfsc SUBE ; Si se pulsa SUBE saltamos una instrucción goto SALTA1 ; Si no pulsamos SUBE vamos a SALTA1 movlw.255 subwf POTE_G,W ; Restamos 255 al valor de POTE_G btfsc STATUS,Z ; Si la operación no es 0 saltamos una instrucción goto SALTA3 ; Si la operación es 0 vamos a SALTA3 incf POTE_G,F ; Sumamos una posición a POTE_G y guardamos movf POTE_G,W ; Pasamos POTE_G a W call CONVERTIR_G ; Convertimos a escala movlw.30 movwf RETARDO1 ; Retardo (parpadeo) bcf INTCON,GIE ; Desactivamos interrupciones call PRESENTAR ; Presentamos en el LCD los datos actuales call ENVIAR_GR_GA ; Transmite al pote de Ganancia-Graves los datos goto SALTA3 ; Vamos a SALTA3 SALTA1 btfsc BAJA ; Si se pulsa BAJA salta una instrucción goto SALTA2 ; Si no se pulsa BAJA vamos a SALTA2 movlw.1 subwf POTE_G,W ; Restamos 1 al valor de POTE_G btfsc STATUS,Z ; Si la operación no es 0 saltamos una instrucción goto SALTA3 ; Si la operación es 0 vamos a SALTA3 decf POTE_G,F ; Restamos una posición a POTE_G y guardamos movf POTE_G,W ; Pasamos POTE_G a W call CONVERTIR_G ; Convertimos a escala movlw.30 movwf RETARDO1 ; Retardo (parpadeo) bcf INTCON,GIE ; Desactivamos las interrupciones call PRESENTAR ; Presentamos en el LCD los datos actuales call ENVIAR_GR_GA ; Transmite al pote de Ganancia-Graves los datos goto SALTA3 ; Vamos a SALTA3 SALTA2 bsf INTCON,GIE ; Activamos las interrupciones Proyecto Fin de Carrera 114 Antonio Andújar Caballero

21 SALTA3 movf RETARDO1,F btfsc STATUS,Z ; Si el retardo (parpadeo) no es 0 saltamos una instrucción goto NO_FLASH ; Si el retardo (parpadeo) es 0 vamos a NO_FLASH (inicio) btfsc CAMBIO ; Si se pulsa CAMBIO salta una instrucción goto POTE_GRAVES ; Si no se pulsa CAMBIO volvemos a POTE_GRAVES movlw.30 movwf RETARDO1 ; Vuelve a cargar retardo (parpadeo) movlw.2 movwf FLASH_N ; Colocamos un 2 en FLASH_N (Potenciómetro de Medios) btfss CAMBIO ; Si no se pulsa CAMBIO vamos a POTE_MEDIOS goto $-1 goto POTE_MEDIOS POTE_MEDIOS ; Regula el potenciómetro de Medios movlw.2 movwf FLASH_N call DEMORA_100MS btfsc SUBE goto SALTA4 movlw.255 subwf POTE_M,W btfsc STATUS,Z goto SALTA6 incf POTE_M,F ; Mismos comentarios para la regulación de Graves movf POTE_M,W call CONVERTIR_M movlw.30 movwf RETARDO1 bcf INTCON,GIE call PRESENTAR call ENVIAR_ME_AG goto SALTA6 SALTA4 btfsc BAJA goto SALTA5 movlw.1 subwf POTE_M,W btfsc STATUS,Z goto SALTA6 decf POTE_M,F movf POTE_M,W call CONVERTIR_M movlw.30 movwf RETARDO1 bcf INTCON,GIE call PRESENTAR call ENVIAR_ME_AG goto SALTA6 Proyecto Fin de Carrera 115 Antonio Andújar Caballero

22 SALTA5 bsf INTCON,GIE SALTA6 movf RETARDO1,F btfsc STATUS,Z goto NO_FLASH btfsc CAMBIO goto POTE_MEDIOS movlw.30 movwf RETARDO1 movlw.3 movwf FLASH_N btfss CAMBIO goto $-1 goto POTE_AGUDOS POTE_AGUDOS ; Regula el potenciómetro de Agudos movlw.3 movwf FLASH_N call DEMORA_100MS btfsc SUBE goto SALTA7 movlw.255 subwf POTE_A,W btfsc STATUS,Z goto SALTA9 incf POTE_A,F ; Mismos comentarios para la regulación de Graves movf POTE_A,W call CONVERTIR_A movlw.30 movwf RETARDO1 bcf INTCON,GIE call PRESENTAR call ENVIAR_ME_AG goto SALTA9 SALTA7 btfsc BAJA goto SALTA8 movlw.1 subwf POTE_A,W btfsc STATUS,Z goto SALTA9 decf POTE_A,F movf POTE_A,W call CONVERTIR_A movlw.30 movwf RETARDO1 bcf INTCON,GIE call PRESENTAR call ENVIAR_ME_AG goto SALTA9 Proyecto Fin de Carrera 116 Antonio Andújar Caballero

23 SALTA8 bsf INTCON,GIE SALTA9 movf RETARDO1,F btfsc STATUS,Z goto NO_FLASH btfsc CAMBIO goto POTE_AGUDOS movlw.30 movwf RETARDO1 movlw.4 movwf FLASH_N btfss CAMBIO goto $-1 goto POTE_GANANCIA POTE_GANANCIA ; Regula el potenciómetro de Ganancia movlw.4 movwf FLASH_N call DEMORA_100MS btfsc SUBE goto SALTA10 movlw.255 subwf POTE_GA,W btfsc STATUS,Z goto SALTA12 incf POTE_GA,F ; Mismos comentarios para la regulación de Graves movf POTE_GA,W call CONVERTIR_GA movlw.30 movwf RETARDO1 bcf INTCON,GIE call PRESENTAR call ENVIAR_GR_GA goto SALTA12 SALTA10 btfsc BAJA goto SALTA11 movlw.0 subwf POTE_GA,W btfsc STATUS,Z goto SALTA11 decf POTE_GA,F movf POTE_GA,W call CONVERTIR_GA movlw.30 movwf RETARDO1 bcf INTCON,GIE call PRESENTAR call ENVIAR_GR_GA goto SALTA12 Proyecto Fin de Carrera 117 Antonio Andújar Caballero

24 SALTA11 bsf INTCON,GIE SALTA12 movf RETARDO1,F btfsc STATUS,Z goto NO_FLASH btfsc CAMBIO goto POTE_GANANCIA movlw.0 movwf FLASH_N btfss CAMBIO goto $-1 goto NO_FLASH GUARDA_MEMORIA ; Carga o graba la memoria (MEMO) bcf INTCON,GIE ; Desactivamos interrupciones call DEMORA_100MS ; Retraso de 100ms btfsc MEMORIA ; Si sigue pulsado MEMO salta una instrucción ; Si no sigue pulsado MEMO volvemos al programa movlw.132 movwf CONTA_3 ; Inicia contador de 2 segundos QWE10 QWE11 QWE12 movlw.40 movwf CONTA_4 movlw.72 movwf CONTA_5 btfsc MEMORIA ; Si se pulsa MEMO más de 2 segundos salta una instrucción goto LEER ; En caso de pulsar por menos de 2 segundos vamos a LEER decfsz CONTA_5,F goto QWE12 decfsz CONTA_4,F goto QWE11 decfsz CONTA_3,F goto QWE10 goto GUARDAR ; Después de esperar 2 segundos vamos a GUARDAR LEER ; Leemos la Memoria movlw.0 movwf DIR1 ; La dirección 1 apunta a 0 movlw.1 movwf DIR2 ; La dirección 2 apunta a 1 movlw.2 movwf DIR3 ; La dirección 3 apunta a 2 movlw.3 movwf DIR4 ; La dirección 4 apunta a 3 call LEER_EEPROM ; Leemos la EEPROM movlw B' ' ; Limpiamos el LCD Proyecto Fin de Carrera 118 Antonio Andújar Caballero

25 movlw H'80' ; Línea superior movlw A'M' ; M movlw A'e' ; e movlw A'm' ; m movlw A'o' ; o movlw A'r' ; r movlw A'i' ; i movlw A'a' ; a movlw H'C0' ; Línea inferior movlw A'L' ; L movlw A'e' ; e movlw A'i' ; i movlw A'd' ; d movlw A'a' ; a call DEMORA_1S5 ; Retardo de 1,5 segundos call PRESENTAR ; Presentamos los datos en el LCD bsf INTCON,GIE ; Activamos las interrupciones ; Volvemos al programa Proyecto Fin de Carrera 119 Antonio Andújar Caballero

26 GUARDAR ; Guardamos la memoria bcf INTCON,GIE ; Desactiva las interrupciones ; Guardamos la posición 00 de la EEPROM movf POTE_G,W ; Pasamos el valor de POTE_G a W bsf STATUS,RP1 bcf STATUS,RP0 ; Seleccionamos el banco 2 movwf EEDATA ; Pasamos W a EEDATA movlw.0 movwf EEADR ; Lo guardamos en la dirección 0 (Graves) bsf STATUS,RP0 ; Seleccionamos el banco 3 bcf EECON1,WRERR ; Colocamos un 0 en el flag de error de escritura bcf EECON1,WR ; Desactivamos la escritura de la EEPROM bcf EECON1,EEPGD ; Accedemos a memoria de datos bsf EECON1,WREN ; Permitimos el ciclo de escritura movlw 0X55 movwf EECON2 movlw 0XAA movwf EECON2 bsf EECON1,WR ; Iniciamos el ciclo de escritura bcf EECON1,WREN ; Desactivamos la escritura de la EEPROM DAS1 DAS2 btfsc EECON1,WR ; Si el ciclo de escritura terminó, saltamos una instrucción goto DAS1 ; Si no ha terminado el ciclo de escritura volvemos a DAS1 btfsc EECON1,WRERR ; Si no hay error de escritura, saltamos una instrucción goto GUARDAR ; Si hay error de escritura volvemos a GUARDAR bcf STATUS,RP0 bcf STATUS,RP1 ; Seleccionamos el banco 0 movf POTE_M,W ; Guardamos la posición 01 de la EEPROM bsf STATUS,RP1 bcf STATUS,RP0 movwf EEDATA movlw.1 movwf EEADR ; Guardamos el valor POTE_M en la dirección 1 (Medios) bsf STATUS,RP0 bcf EECON1,WRERR bcf EECON1,WR bcf EECON1,EEPGD bsf EECON1,WREN movlw 0X55 movwf EECON2 movlw 0XAA movwf EECON2 bsf EECON1,WR bcf EECON1,WREN DAS3 btfsc goto btfsc goto EECON1,WR DAS3 EECON1,WRERR DAS2 Proyecto Fin de Carrera 120 Antonio Andújar Caballero

27 bcf bcf STATUS,RP0 STATUS,RP1 DAS4 movf POTE_A,W ; Guardamos la posición 02 de la EEPROM bsf STATUS,RP1 bcf STATUS,RP0 movwf EEDATA movlw.2 movwf EEADR ; Guardamos el valor POTE_A en la dirección 2 (Agudos) bsf STATUS,RP0 bcf EECON1,WRERR bcf EECON1,WR bcf EECON1,EEPGD bsf EECON1,WREN movlw 0X55 movwf EECON2 movlw 0XAA movwf EECON2 bsf EECON1,WR bcf EECON1,WREN DAS5 btfsc goto btfsc goto bcf bcf EECON1,WR DAS5 EECON1,WRERR DAS4 STATUS,RP0 STATUS,RP1 DAS6 movf POTE_GA,W ; Guardamos la posición 03 de la EEPROM bsf STATUS,RP1 bcf STATUS,RP0 movwf EEDATA movlw.3 movwf EEADR ; Guardamos el valor POTE_GA en la dirección 3 (Ganancia) bsf STATUS,RP0 bcf EECON1,WRERR bcf EECON1,WR bcf EECON1,EEPGD bsf EECON1,WREN movlw 0X55 movwf EECON2 movlw 0XAA movwf EECON2 bsf EECON1,WR bcf EECON1,WREN DAS7 btfsc goto btfsc goto EECON1,WR DAS7 EECON1,WRERR DAS6 Proyecto Fin de Carrera 121 Antonio Andújar Caballero

28 bcf STATUS,RP0 bcf STATUS,RP1 movlw B' ' ; Limpiamos el LCD movlw H'80' ; Línea superior movlw A'M' ; M movlw A'e' ; e movlw A'm' ; m movlw A'o' ; o movlw A'r' ; r movlw A'i' ; i movlw A'a' ; a movlw H'C0' ; Línea inferior movlw A'G' ; G movlw A'r' ; r movlw A'a' ; a movlw A'b' ; b movlw A'a' ; a movlw A'd' ; d movlw A'a' ; a call DEMORA_1S5 ; Retardo de 1,5 segundos call PRESENTAR ; Presentamos datos en el LCD bsf INTCON,GIE ; Activamos las interrupciones ; Volvemos al programa Proyecto Fin de Carrera 122 Antonio Andújar Caballero

29 PONE_PRESET_1 ; Carga el Preset 1 bcf INTCON,GIE ; Desactiva las interrupciones call DEMORA_100MS ; Retardo de 100ms btfsc PRESET_1 ; Si sigue pulsado PRESET1 saltamos una instrucción ; Si no sigue pulsado volvemos al programa movlw.4 movwf DIR1 ; La dirección 1 apunta a 4 movlw.5 movwf DIR2 ; La dirección 2 apunta a 5 movlw.6 movwf DIR3 ; La dirección 3 apunta a 6 movlw.7 movwf DIR4 ; La dirección 4 apunta a 7 call LEER_EEPROM ; Leemos la EEPROM movlw B' ' ; Limpiamos el LCD movlw H'80' ; Línea superior movlw A'P' ; P movlw A'r' ; r movlw A'e' ; e movlw A's' ; s movlw A'e' ; e movlw A't' ; t movlw A'1' ; 1 movlw H'C0' ; Línea inferior movlw A'C' ; C Proyecto Fin de Carrera 123 Antonio Andújar Caballero

30 movlw A'a' ; a movlw A'r' ; r movlw A'g' ; g movlw A'a' ; a movlw A'd' ; d movlw A'o' ; o call DEMORA_1S5 ; Retardo de 1,5 segundos call PRESENTAR ; Presentamos los datos en el LCD bsf INTCON,GIE ; Activamos las interrupciones ; Volvemos al programa PONE_PRESET_2 ; Carga el Preset 2 bcf INTCON,GIE ; Desactivamos las interrupciones call DEMORA_100MS ; Retardo de 100ms btfsc PRESET_2 ; Si sigue pulsado PRESET2 saltamos una instrucción ; Si no sigue pulsado volvemos al programa movlw.8 movwf DIR1 ; La dirección 1 apunta a 8 movlw.9 movwf DIR2 ; La dirección 2 apunta a 9 movlw.10 movwf DIR3 ; La dirección 3 apunta a 10 movlw.11 movwf DIR4 ; La dirección 4 apunta a 11 call LEER_EEPROM ; Leemos la EEPROM movlw B' ' ; Limpiamos el LCD movlw H'80' ; Línea superior movlw A'P' ; P movlw A'r' ; r movlw A'e' ; e movlw A's' ; s movlw A'e' ; e Proyecto Fin de Carrera 124 Antonio Andújar Caballero

31 movlw A't' ; t movlw A'2' ; 2 movlw H'C0' ; Línea inferior movlw A'C' ; C movlw A'a' ; a movlw A'r' ; r movlw A'g' ; g movlw A'a' ; a movlw A'd' ; d movlw A'o' ; o call DEMORA_1S5 ; Retardo de 1,5 segundos call PRESENTAR ; Presentamos los datos en el LCD bsf INTCON,GIE ; Activamos las interrupciones ; Volvemos al programa PONE_PRESET_3 ; Carga el Preset 3 bcf INTCON,GIE ; Desactivamos las interrupciones call DEMORA_100MS ; Retardo de 100ms btfsc PRESET_3 ; Si sigue pulsado PRESET3 saltamos una instrucción ; Si no sigue pulsado volvemos al programa movlw.12 movwf DIR1 ; La dirección 1 apunta a 12 movlw.13 movwf DIR2 ; La dirección 2 apunta a 13 movlw.14 movwf DIR3 ; La dirección 3 apunta a 14 movlw.15 movwf DIR4 ; La dirección 4 apunta a 15 call LEER_EEPROM ; Leemos la EEPROM movlw B' ' ; Limpiamos el LCD movlw H'80' ; Línea Superior Proyecto Fin de Carrera 125 Antonio Andújar Caballero

32 movlw A'P' ; P movlw A'r' ; r movlw A'e' ; e movlw A's' ; s movlw A'e' ; e movlw A't' ; t movlw A'3' ; 3 movlw H'C0' ; Línea inferior movlw A'C' ; C movlw A'a' ; a movlw A'r' ; r movlw A'g' ; g movlw A'a' ; a movlw A'd' ; d movlw A'o' ; o call DEMORA_1S5 ; Retardo de 1,5 segundos call PRESENTAR ; Presentamos los datos en el LCD bsf INTCON,GIE ; Activamos las interrupciones ; Volvemos al programa Proyecto Fin de Carrera 126 Antonio Andújar Caballero

33 PONE_PRESET_4 ; Carga el Preset 4 bcf INTCON,GIE ; Desactivamos las interrupciones call DEMORA_100MS ; Retardo de 100ms btfsc PRESET_4 ; Si sigue pulsado PRESET4 saltamos una instrucción ; Si no sigue pulsado volvemos a programa movlw.16 movwf DIR1 ; La dirección 1 apunta a 16 movlw.17 movwf DIR2 ; La dirección 2 apunta a 17 movlw.18 movwf DIR3 ; La dirección 3 apunta a 18 movlw.19 movwf DIR4 ; La dirección 4 apunta a 19 call LEER_EEPROM movlw B' ' ; Limpiamos el LCD movlw H'80' ; Línea superior movlw A'P' ; P movlw A'r' ; r movlw A'e' ; e movlw A's' ; s movlw A'e' ; e movlw A't' ; t movlw A'4' ; 4 movlw H'C0' ; Línea inferior movlw A'C' ; C movlw A'a' ; a Proyecto Fin de Carrera 127 Antonio Andújar Caballero

34 movlw A'r' ; r movlw A'g' ; g movlw A'a' ; a movlw A'd' ; d movlw A'o' ; o call DEMORA_1S5 ; Retardo de 1,5 segundos call PRESENTAR ; Presentamos los datos en el LCD bsf INTCON,GIE ; Activamos las interrupciones ; Volvemos al programa ; RUTINAS DE TRANSMISIÓN ENVIAR_GR_GA ; Rutina para enviar datos al pote de Ganancia-Graves GR_GA ; Activa el potenciómetro de Ganancia-Graves bsf DAT ; Configuramos los potes como separados bsf CLK ; Sube la línea de Clock bcf CLK ; Baja la línea de Clock bcf DAT ; Baja la línea de Datos movf POTE_G,W ; Pasamos a W el valor de POTE_G call OUTPUT ; Enviamos el byte de Graves al potenciómetro bcf CLK ; Baja la línea de Clock bcf DAT ; Baja la línea de Datos movf POTE_GA,W ; Pasamos a W el valor de POTE_GA call OUTPUT ; Enviamos el byte de Ganancia al potenciómetro NO_CHIP ; Desactiva todos los potenciómetros bcf DAT ; Baja la línea de Datos bcf CLK ; Baja la línea de Clock ; Volvemos al programa ENVIAR_ME_AG ; Rutina para enviar datos al pote de Medios-Agudos ME_AG ; Activa el potenciómetro de Medios-Agudos bsf DAT ; Configura los potes como separados Proyecto Fin de Carrera 128 Antonio Andújar Caballero

35 bsf CLK ; Sube la línea de Clock bcf CLK ; Baja la línea de Clock bcf DAT ; Baja la línea de Datos movf POTE_A,W ; Pasamos a W el valor de POTE_A call OUTPUT ; Enviamos el byte de Agudos al potenciómetro bcf CLK ; Baja la línea de Clock bcf DAT ; Baja la línea de Datos movf POTE_M,W ; Pasamos a W el valor de POTE_M call OUTPUT ; Enviamos el byte de Medios al potenciómetro NO_CHIP bcf DAT ; Baja la línea de Datos ; Desactiva todos los potenciómetros bcf CLK ; Baja la línea de Clock ; Volvemos al programa OUTPUT movwf TEMP3 'TEMP3' movlw.8 movwf TEMP4 ; Rutina de envío de un byte ; Salva el byte a transmitir en el registro temporal TEMP3 ; Inicializa el contador GFD bcf CLK ; Baja la línea de Clock bcf DAT ; Baja la línea de Datos btfsc TEMP3,7 ; Comprueba el bit, si es 0 lo deja igual bsf DAT ; Y lo sube si es uno bsf CLK ; Da un pulso de reloj rlf TEMP3,F ; Rotamos a la izquierda 'TEMP3' decfsz TEMP4,F ; Decrementamos. Comprobamos q hemos enviado los 8 bits goto GFD ; Si no, repetimos el bucle ; Volvemos al programa ; DATOS DE LA EEPROM ; Las primeras 4 posiciones son las usadas por la memoria ; Las restantes (en grupos de 4) son las posiciones de los presets ; Sus valores no podrán ser cambiados una vez que grabemos el PIC ORG H'2100' ; Preset MEMO. Inicial todo en posición media. data.128 ; Dato menor 1, cero 128, dato mayor 255 data.128 ; Dato menor 1, cero 128, dato mayor 255 data.128 ; Dato menor 1, cero 128, dato mayor 255 data.128 ; Dato menor 0, dato mayor 255 Proyecto Fin de Carrera 129 Antonio Andújar Caballero

36 ; Preset 1 (Todo graves) data.255 ; Dato menor 1, cero 128, dato mayor 255 data.128 ; Dato menor 1, cero 128, dato mayor 255 data.60 ; Dato menor 1, cero 128, dato mayor 255 data.128 ; Dato menor 0, dato mayor 255 ; Preset 2 (Todo medios) data.128 ; Dato menor 1, cero 128, dato mayor 255 data.255 ; Dato menor 1, cero 128, dato mayor 255 data.128 ; Dato menor 1, cero 128, dato mayor 255 data.128 ; Dato menor 0, dato mayor 255 ; Preset 3 (Todo agudos) data.60 ; Dato menor 1, cero 128, dato mayor 255 data.128 ; Dato menor 1, cero 128, dato mayor 255 data.255 ; Dato menor 1, cero 128, dato mayor 255 data.128 ; Dato menor 0, dato mayor 255 ; Preset 4 (Normal) data.170 ; Dato menor 1, cero 128, dato mayor 255 data.140 ; Dato menor 1, cero 128, dato mayor 255 data.100 ; Dato menor 1, cero 128, dato mayor 255 data.128 ; Dato menor 0, dato mayor 255 ; end ; Fin del programa Proyecto Fin de Carrera 130 Antonio Andújar Caballero

Instrucciones para programar el PIC16F877

Instrucciones para programar el PIC16F877 Instrucciones para programar el PIC16F877 2 Estos microcontroladores responden a una serie de instrucciones o códigos que se deben grabar en su memoria de programa, en total son 35. A continuación se encuentra

Más detalles

Las Instrucciones. A continuación vamos a presentar el conjunto de instrucciones básico de los Microcontroladores Picmicro.

Las Instrucciones. A continuación vamos a presentar el conjunto de instrucciones básico de los Microcontroladores Picmicro. Las Instrucciones A continuación vamos a presentar el conjunto de instrucciones básico de los Microcontroladores Picmicro. En general la instrucciones de los microcontroladores pueden clasificarse como:

Más detalles

D:\ACCESO\ACCESO.ASM. list p=16f877 include "p16f877.inc" ROTA equ 0x20 TEMP equ 0x21 TECLA equ 0x22 DIGITOS equ 0x23 DIR equ 0x24

D:\ACCESO\ACCESO.ASM. list p=16f877 include p16f877.inc ROTA equ 0x20 TEMP equ 0x21 TECLA equ 0x22 DIGITOS equ 0x23 DIR equ 0x24 ;Programa para el control de acceso a un sistema X ;mediante la introducción de una clave a través de un teclado ;matricial. ;Es posible cambiar la clave de acceso y guardarla en la EEPROM ;La velocidad

Más detalles

1. ÍNDICE. Índice de contenido 2. INTRODUCCIÓN 3. CONTENIDO 1. OBJETIVOS DEL PROYECTO

1. ÍNDICE. Índice de contenido 2. INTRODUCCIÓN 3. CONTENIDO 1. OBJETIVOS DEL PROYECTO ULPGC, Universidad de Las Palmas de Gran Canarias. Facultad de Informática. Asignatura: Diseño de Sistemas Basados en Microprocesadores Profesor: Ricardo Pérez García. Regador Automático ACOSTA PADRÓN,

Más detalles

CODIGO EN ASSEMBLER TRANSMISOR. list p=16f876 ;selecion de pic

CODIGO EN ASSEMBLER TRANSMISOR. list p=16f876 ;selecion de pic TRANSMISOR CODIGO EN ASSEMBLER list p=16f876 ;selecion de pic radix hex ; codigo hex indf equ 0h ;direcionamiento indirecto tmro equ 1h ;contador de tiempo real pc equ 2h ;contador del programa status

Más detalles

Programación en PIC Los primeros pasos

Programación en PIC Los primeros pasos Capítulo V Programación en PIC Los primeros pasos Encender y apagar un LED Secuenciador con cuatro LED's Leer los pulsadores y encender el LED correspondiente Programa avanzado utilizando el entrenador

Más detalles

Carrera: Técnico Superior en Técnicas Digitales. Alumnos: Emiliano Teseo y José Luis Fernández

Carrera: Técnico Superior en Técnicas Digitales. Alumnos: Emiliano Teseo y José Luis Fernández Carrera: Técnico Superior en Técnicas Digitales Instituto: CENT 57 Trabajo final Año 2005 Alumnos: Emiliano Teseo y José Luis Fernández 1 ILUMINACION PARA VIDRIERAS Descripción general (Guía para el usuario)

Más detalles

Jesús Alberto Díaz Carmona Ingeniería en Informática. Curso 2005/06. Diseño de Sistemas Basados en Microprocesador

Jesús Alberto Díaz Carmona Ingeniería en Informática. Curso 2005/06. Diseño de Sistemas Basados en Microprocesador Jesús Alberto Díaz Carmona Ingeniería en Informática. Curso 2005/06. Diseño de Sistemas Basados en Microprocesador Descripción El proyecto se trata de un sistema de cámaras de vigilancia en circuito cerrado,

Más detalles

INFORMÁTICA INDUSTRIAL. 3º INGENIERÍA TÉCNICA INDUSTRIAL. ESPECIALIDAD ELECTRÓNICA BOLETÍN 1. CURSO 2003/04

INFORMÁTICA INDUSTRIAL. 3º INGENIERÍA TÉCNICA INDUSTRIAL. ESPECIALIDAD ELECTRÓNICA BOLETÍN 1. CURSO 2003/04 INFORMÁTICA INDUSTRIAL. 3º INGENIERÍA TÉCNICA INDUSTRIAL. ESPECIALIDAD ELECTRÓNICA BOLETÍN 1. CURSO 20/04 1. Se colocan tres interruptores en las líneas RA0, RA1 y RA2 de la puerta A de un PIC16F84. Y

Más detalles

Programa del PIC 16F877A

Programa del PIC 16F877A APÉNDICE B Programa del PIC 16F877A ;* "CONTROL AUTOMÁTICO DE VELOCIDAD VEHICULAR". * ;* EL PRESENTE PROGRAMA TIENE COMO FINALIDAD CONTROLAR LA VELOCIDAD DEL * ;* VEHÍCULO, DEPENDIENDO DE LA SEÑAL RECIBIDA

Más detalles

Apéndice B Programa para calcular inclinación con PIC 16F877A

Apéndice B Programa para calcular inclinación con PIC 16F877A Apéndice B Programa para calcular inclinación con PIC 16F877A list p=16f877a ; list directive to define processor #include ; processor specific variable definitions ;***** DEFINICIÓN DE

Más detalles

CODIGO EN ASSEMBLER ;************************************************************************

CODIGO EN ASSEMBLER ;************************************************************************ RECEPTOR CODIGO EN ASSEMBLER ;************************************************************************ list p=16f84a ;selecion de pic radix hex ; codigo hex pc equ 02h status equ 03h portb equ 06h PORTA

Más detalles

Microcontrolador PIC 16F84

Microcontrolador PIC 16F84 PROGRAMACIÓN PIC (II) Microcontrolador PIC 16F84 mail : enric.serra 0 - INTRODUCCIÓN. Este documento es una continuación al documento de programación del PIC 16f84. Este documento se puede copiar y utilizar

Más detalles

El único lenguaje que entienden los microcontroladores es el código máquina formado por ceros y unos del sistema binario.

El único lenguaje que entienden los microcontroladores es el código máquina formado por ceros y unos del sistema binario. 1 LENGUAJE ENSAMBLADOR El único lenguaje que entienden los microcontroladores es el código máquina formado por ceros y unos del sistema binario. El lenguaje ensamblador expresa las instrucciones de una

Más detalles

Practica de PIC 16F84

Practica de PIC 16F84 Practica de PIC 16F84 Los PIC son circuitos que pueden controlar dispositivos y diferentes sistemas, son como los PLC (controles lógico programable), además debo decir que es un circuito que tiene todas

Más detalles

P R Á C T I C A 7 SENSADO DE TEMPERATURA CON INTERFAZ PIC - PC O B J E T I V O I N T R O D U C C I O N

P R Á C T I C A 7 SENSADO DE TEMPERATURA CON INTERFAZ PIC - PC O B J E T I V O I N T R O D U C C I O N P R Á C T I C A 7 SENSADO DE TEMPERATURA CON INTERFAZ PIC - PC O B J E T I V O Teniendo como base las dos prácticas anteriores, realizar un programa que permita acceder la lectura de la temperatura en

Más detalles

Termostato electrónico con PIC y LCD

Termostato electrónico con PIC y LCD COMETARIO TECNICO Termostato electrónico con PIC y LCD Por el Departamento de Ingeniería de Electrónica Elemon S.A. 1N4148 El circuito centra su funcionamiento en el micro controlador PIC16F870 el cual

Más detalles

;*****************************************PROGRAMA*******************************************

;*****************************************PROGRAMA******************************************* 176 ;*****************************************PROGRAMA******************************************* LIST p=16f628a ; Procesador utilizado INCLUDE "P16F628A.INC" ; Definición de los registros del Pic CONFIG

Más detalles

APÉNDICE B APÉNDICE B. PROGRAMA DEL PIC16F874 EN LENGUAJE ENSAMBLADOR

APÉNDICE B APÉNDICE B. PROGRAMA DEL PIC16F874 EN LENGUAJE ENSAMBLADOR APÉNDICE B. PROGRAMA DEL PIC16F874 EN LENGUAJE ENSAMBLADOR INIAX EQU 0X20 INIBX EQU 0X21 INICX EQU 0X22 INIDX EQU 0X23 INIEY EQU 0X24 INIFY EQU 0X25 INIGY EQU 0X26 INIHY EQU 0X27 SELECCION EQU 0X28 APUNTADOR

Más detalles

DESCRIPCIÓN DE LAS INSTRUCCIONES

DESCRIPCIÓN DE LAS INSTRUCCIONES Todas las instrucciones del PIC cumplen las siguientes condiciones: Las instrucciones son simples y rápidas. Todas tienen un tiempo de ejecución de un ciclo de instrucción (cuatro ciclos de reloj) a excepción

Más detalles

;<<<<<< VECTOR DE INTERRUPCION >>>>>>>

;<<<<<< VECTOR DE INTERRUPCION >>>>>>> Apéndice B Programa en Ensamblador para el PIC 16F877 de Microchip Corp. ;***********************************UDLAP************************** ; PROGRAMA : com232.asm ; Función : Establece la rutina de los

Más detalles

Temporizadores y contadores en tiempo real: El módulo Timer0 del PIC.

Temporizadores y contadores en tiempo real: El módulo Timer0 del PIC. Temporizadores y contadores en tiempo real: El módulo Timer0 del PIC. 1. Introducción... 1 2. Funcionamiento del Timer0... 1 2.1. Estructura general del Timer0...2 2.2. Entrada de reloj del modulo Timer0...2

Más detalles

Pines de entrada/salida (I/O) de propósito general. Mediante ellos, el micro PIC puede monitorizar y controlar otros dispositivos.

Pines de entrada/salida (I/O) de propósito general. Mediante ellos, el micro PIC puede monitorizar y controlar otros dispositivos. 1 Pines de entrada/salida (I/O) de propósito general Mediante ellos, el micro PIC puede monitorizar y controlar otros dispositivos. Para añadir flexibilidad al micro, muchos de sus pines de entrada/salida

Más detalles

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS COORDINACIÓN DE ELECTRÓNICA GUÍA DE LABORATORIO Nº 02

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS COORDINACIÓN DE ELECTRÓNICA GUÍA DE LABORATORIO Nº 02 CICLO II-2013 UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS COORDINACIÓN DE ELECTRÓNICA GUÍA DE LABORATORIO Nº 02 Asignatura: Control Digital Nombre de la Practica: Instrucciones básicas de los

Más detalles

Microprocesadores I - Unidad 5 Hoja 1 de 11. Año Javier Rambaldo Profesor de la cátedra de Microprocesadores I

Microprocesadores I - Unidad 5 Hoja 1 de 11. Año Javier Rambaldo Profesor de la cátedra de Microprocesadores I Microprocesadores I - Unidad 5 Hoja 1 de 11 Año 2003 Profesor de la cátedra de Microprocesadores I Unidad 5: Interrupciones en el 16F84. Rutina de servicio. Registros. Distintas formas de activar una interrupción.

Más detalles

Proyecto de Microprocesadores I del CENT57 AFINADOR DIGITAL MICROPROCESADO Alumnos: Damian O. Macarrein Gastón M. Murphy Año 2002

Proyecto de Microprocesadores I del CENT57 AFINADOR DIGITAL MICROPROCESADO Alumnos: Damian O. Macarrein Gastón M. Murphy Año 2002 Proyecto de Microprocesadores I del CENT57 AFINADOR DIGITAL MICROPROCESADO Alumnos: Damian O. Macarrein Gastón M. Murphy Año 2002 Introducción Este afinador digital esta diseñado para la medición de frecuencia

Más detalles

Alarma con Interfaz DTMF de Línea Telefónica basado en PIC16F84

Alarma con Interfaz DTMF de Línea Telefónica basado en PIC16F84 Alarma con Interfaz DTMF de Línea Telefónica basado en PIC16F84 Propósito En toda aplicación donde normalmente se requiera el establecimiento de una conexión telefónica se hace necesario el diseño de una

Más detalles

UNIVERSIDAD DON BOSCO

UNIVERSIDAD DON BOSCO CICLO 02 2013 UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS COORDINACIÓN DE ELECTRÓNICA GUÍA DE LABORATORIO Nº 03 ASIGNATURA: Control Digital NOMBRE DE LA PRACTICA: Configuración de los Puertos

Más detalles

PRÁCTICA 2: Programas básicos. Tipos de direccionamiento.

PRÁCTICA 2: Programas básicos. Tipos de direccionamiento. SISTEMAS ELECTRÓNICOS Y AUTOMÁTICOS PRACTICAS DE MICROCONTROLADORES PIC PRÁCTICA 2: Programas básicos. Tipos de direccionamiento. Tipos de direccionamiento Ejemplos y ejercicios - 1 - 1. Objetivos - Introducir

Más detalles

DALCAME

DALCAME ;***************************************************************** ; ROGRAMA PARA CONTAR PULSOS DE LA ONDA QRS DE LA ONDA ECG ; DE LA PRIMERA DERIVACION BIPOLAR DE EINTHOVEN ; 23 de Marzo 2005 ; DALCAME

Más detalles

MICROCONTROLADORES (III)

MICROCONTROLADORES (III) Prof. Manuel Rivas MICROCONTROLADORES (III) Pautas generales de programación Operaciones con datos Operaciones aritméticas Operaciones de comparación Subrutinas Selección múltiple Configuración de puertos

Más detalles

ORGANIZACIÓN INTERNA + INTRODUCCIÓN AL ENSAMBLADOR

ORGANIZACIÓN INTERNA + INTRODUCCIÓN AL ENSAMBLADOR ORGANIZACIÓN INTERNA + INTRODUCCIÓN AL ENSAMBLADOR ORGANIZACIÓN de la MEMORIA Dentro del PIC16F877 se distinguen tres bloques de memoria. Memoria de programa En sus 8192 posiciones (8K) contiene el programa

Más detalles

MICROCONTROLADOR PIC DE MICROCHIP

MICROCONTROLADOR PIC DE MICROCHIP MICROCONTROLADOR PIC DE MICROCHIP PIC16F877-28-PIN 8-BIT CMOS FLASH MICROCONTROLLER PIC16F877: ESTRUCTURA INTERNA Bus de Datos Bus de Datos (programa) Registro de trabajo (acumulador) Conversor A/D Contador/Temporizador

Más detalles

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

;***************************************************************************************** PROYECTO DPP Memoria Generalidades: Este es el proyecto de un sistema de camaras cerrado, concretamente de ocho camaras, controladas, desde un panel de mandos desde el cual controlaremos que camara queremos

Más detalles

- FUNDAMENTOS TEÓRICOS - EJEMPLOS DE APLICACIÓN. 09/01/2009 Ing. José A. Picón - - (0416)

- FUNDAMENTOS TEÓRICOS - EJEMPLOS DE APLICACIÓN. 09/01/2009 Ing. José A. Picón -  - (0416) MICROPROCESADORES Y MICROCONTROLADORES - FUNDAMENTOS TEÓRICOS - EJEMPLOS DE APLICACIÓN 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - (0416) 9519990 Informes de Laboratorio Entregar informe con

Más detalles

Apéndice A. Programas y Diagramas de Bloques para los Microprocesadores

Apéndice A. Programas y Diagramas de Bloques para los Microprocesadores Apéndice A Programas y Diagramas de Bloques para los Microprocesadores 120 Microprocesador PIC16F84A (Transmisor): Figura A.1 Diagrama de bloques del PIC16F84A en transmisor ;***********************************Transmisor.asm********************************

Más detalles

2.1. Código ASM de Programación para el PIC

2.1. Código ASM de Programación para el PIC 2.1. Código ASM de Programación para el PIC PROGRAMA PARA MOVER UNA ARAÑA SEGUN 3 POSICIONES DE LUZ, CON ESTO SE PUEDE HACER QUE CON ALGUNA COMBINACION AVANCE, SE DETENGA, GIRE ALA IZQUIERDA, GIRE A LA

Más detalles

Indice. Escrito por Administrator Martes, 02 de Septiembre de 2008 17:45 - Actualizado Domingo, 20 de Septiembre de 2009 07:45 1 / 15

Indice. Escrito por Administrator Martes, 02 de Septiembre de 2008 17:45 - Actualizado Domingo, 20 de Septiembre de 2009 07:45 1 / 15 1 / 15 El contenido del libro " MICROCONTROLADOR PIC16F84. Desarrollo de proyectos " de la Editorial Ra CAPÍTULOS: 1. MICROCONTROLADOR PIC16F84 2. PERIFÉRICOS BÁSICOS 3. GRABACIÓN DE MICROCONTROLADORES

Más detalles

LCD. Las pantallas de cristal líquido o módulos LCD, como. Módulo. con interface serial

LCD. Las pantallas de cristal líquido o módulos LCD, como. Módulo. con interface serial Módulo Módulo LCD con interface serial LCD con interface serial EDISON DUQUE C. Este módulo permite mostrar, en una pantalla de cristal líquido, los mensajes que son enviados desde una computadora o un

Más detalles

Transmisión de datos por Radio Frecuencia

Transmisión de datos por Radio Frecuencia Transmisión de datos por Radio Frecuencia Diseño de Sistemas Basados en Microcontrolador Universidad de Las Palmas de Gran Canaria 2003-04 José Carlos Ruiz Luque Francisco García Rodríguez 1 CONTENIDOS

Más detalles

LOS PIC16F88X: EEPROM de Usuario

LOS PIC16F88X: EEPROM de Usuario LOS PIC16F88X: EEPROM de Usuario IES Juan de la Cierva Aprendizaje de la Electrónica a través de la Robótica Domínguez Diagrama de bloques PIC16F884-PIC16F887 Interrupciones en de los PIC16F88X PIR2 INTCON

Más detalles

Energía fotovoltaica y su aplicación rural

Energía fotovoltaica y su aplicación rural Energía fotovoltaica y su aplicación rural Antonio Blanco Solsona, Francisco García Trobat Antonio.Blanco@uv.es gtrobat@telefonica.net INTRODUCCIÓN En las fincas rurales aisladas es cada vez más necesario

Más detalles

Temporizadores y contadores en tiempo real: El módulo Timer0 y el prescaler del PIC

Temporizadores y contadores en tiempo real: El módulo Timer0 y el prescaler del PIC Temporizadores y contadores en tiempo real: El módulo Timer0 y el aler del PIC 1. Introducción...1 2. Estructura del Timer0...1 3. Funcionamiento del Timer0...2 3.1. Entrada de reloj del modulo Timer0...

Más detalles

btfss PIR1,TMR2IF ; Checa si TMR2 interrumpio goto SAL_ISR ; No, sale de la ISR bcf PIR1,TMR2IF ; Si, borra bandera de interrupcion

btfss PIR1,TMR2IF ; Checa si TMR2 interrumpio goto SAL_ISR ; No, sale de la ISR bcf PIR1,TMR2IF ; Si, borra bandera de interrupcion ;************************************************* ;Programa que muestra los números del 9 al 0 ;de manera descendente en una matriz de 5x7 ;leds mediante multiplexación. Los ánodos (filas) ;están conectados

Más detalles

INSTRUCCIONES DE ENSAMBLADOR

INSTRUCCIONES DE ENSAMBLADOR MPLAB INSTRUCCIONES DE ENSAMBLADOR ORGANIZACIÓN de la MEMORIA Dentro del PIC16F877 se distinguen tres bloques de memoria. Memoria de programa En sus 8192 posiciones (8K) contiene el programa con las instrucciones

Más detalles

Tema 6: Microcontroladores

Tema 6: Microcontroladores Tema 6: Microcontroladores Carlos Garre del Olmo 1 Microcontroladores Contenidos Introducción a los microcontroladores. Principales familias y sus características. La familia PIC16. Programación de microcontroladores.

Más detalles

Sistema de seguridad con emisión de mensaje SMS

Sistema de seguridad con emisión de mensaje SMS Sistema de seguridad con emisión de mensaje SMS INDICE 1.- INTRODUCCIÓN Pág. 1 2.- ELEMENTOS HARDWARE EMPLEADOS. Pág. 1 3.- COMUNICACIÓN SERIE (Comandos at)... Pág. 4 4.- EXPLICACIÓN DEL PROGRAMA... Pág.

Más detalles

Microcontrolador PIC 16F84

Microcontrolador PIC 16F84 INTRODUCCIÓN A LA PROGRAMACIÓN Microcontrolador PIC 16F84 mail : enric.serra 0 - INTRODUCCIÓN. Este documento es una introducción a la programación del PIC 16f84. Este documento se puede copiar y utilizar

Más detalles

Tema. Módulo Captura Comparación Modulación n de Achura de Pulsos. C. F. G.S. D.P.E. Módulo de Proyectos 1

Tema. Módulo Captura Comparación Modulación n de Achura de Pulsos. C. F. G.S. D.P.E. Módulo de Proyectos 1 Tema Módulo Captura Comparación Modulación n de Achura de Pulsos C. F. G.S. D.P.E. Módulo de Proyectos 1 Módulo de Captura/ aptura/comparación/ n/pwm Los microcontroladores de la familia 16F87X disponen

Más detalles

Programación y Aplicaciones de los Microcontroladores PIC16FXXX (Nivel Básico) ING. EULER DEZA FIGUEROA

Programación y Aplicaciones de los Microcontroladores PIC16FXXX (Nivel Básico) ING. EULER DEZA FIGUEROA Programación y Aplicaciones de los Microcontroladores PIC16FXXX (Nivel Básico) ING. EULER DEZA FIGUEROA ESTRUCTURA Y CONTENIDO: SESIONES DE CLASE CONTENIDOS PRACTICA PRIMERA (5 horas ) SEGUNDA (5 horas

Más detalles

Tema: Utilización del módulo ADC en los microcontroladores PIC.

Tema: Utilización del módulo ADC en los microcontroladores PIC. 1 Facultad: Ingeniería Escuela: Electrónica Asignatura: Microcontroladores Lugar de ejecución: Laboratorio de microprocesadores, Edif. 3 Electrónica. Tema: Utilización del módulo ADC en los microcontroladores

Más detalles

Programación y diseño de dispositivos mediante microcontroladores PIC

Programación y diseño de dispositivos mediante microcontroladores PIC Metodología de Programación, Programación en C, Aplicaciones electrónicas 1 / 7 Programación y diseño de dispositivos mediante microcontroladores PIC Hemos elegido el microcontrolador PIC16F84 por las

Más detalles

Bucles: o Bucles infinitos o Bucles finitos o Bucles anidados Medir tiempos con MPLAB Ejemplos y ejercicios

Bucles: o Bucles infinitos o Bucles finitos o Bucles anidados Medir tiempos con MPLAB Ejemplos y ejercicios SISTEMAS ELECTRÓNICOS Y AUTOMÁTICOS PRACTICAS DE MICROCONTROLADORES PIC PRÁCTICA 3: Bucles Bucles: o Bucles infinitos o Bucles finitos o Bucles anidados Medir tiempos con MPLAB Ejemplos y ejercicios -

Más detalles

CALCULADORA DE FUNCIONES BÁSICAS Oscar Gregorio Pérez Macías mummy007_02@hotmail.com

CALCULADORA DE FUNCIONES BÁSICAS Oscar Gregorio Pérez Macías mummy007_02@hotmail.com CALCULADORA DE FUNCIONES BÁSICAS Oscar Gregorio Pérez Macías mummy007_02@hotmail.com RESUMEN La función de la calculadora de funciones básicas, es realizar las operaciones tales como: suma, resta y multiplicación

Más detalles

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

;******************************************************************************* ******************* ;******************************************************************************* ******************* ; ; ; Programa para Control y Monitoreo de un Secador de Alimentos ; ; Ultima Modificacion 28 de Noviembre

Más detalles

TIMER0 (T0) TMR0 (01h,101h)

TIMER0 (T0) TMR0 (01h,101h) TIMER (T) Contador ascendente de 8bits Prescaler desde :2 hasta :256 Timer: entrada del reloj del sistema T CY =4*T osc =(F osc /4) t DESBORDE =4*T osc *(2 8 TMR)*N ;Prescaler :N Contador: entrada externa

Más detalles

Proyectos con el PIC16F84

Proyectos con el PIC16F84 Capítulo 2 Proyectos con el PIC6F84 Conexión de LED y dipswitch Manejo de un display de siete segmentos Multiplexaje de teclados y displays Conexión de memorias seriales al PIC Manejo de un módulo LCD

Más detalles

SISTEMA MÍNIMO BASADO EN EL PIC16F84

SISTEMA MÍNIMO BASADO EN EL PIC16F84 PRÁCTICA 0 CIRCUITO BASE SISTEMA MÍNIMO BASADO EN EL PIC16F84 1 PRÁCTICA 1_1 COMPUERTA AND DE TRES ENTRADAS Hardware X0 X1 X2 Y 2 Comportamiento esperado INICIO Configurar Puerto A como entradas y Puerto

Más detalles

SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO

SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO INTERRUPCIONES Interrumpen la ejecución de un programa y pasan a la rutina de servicio del evento que provoca la interrupción. El vector de interrupción se encuentra en la dirección 04H de la memoria de

Más detalles

Rutinas de programación

Rutinas de programación Capítulo VI Rutinas de programación La suma La resta La rotación La multiplicación La división Conversión binario a BCD Suma BCD Conexión de displays al PIC Curso Básico de Microcontroladores PIC 79 80

Más detalles

CONCEPTOS BÁSICOS. + Intensidad

CONCEPTOS BÁSICOS. + Intensidad CONCEPTOS BÁSICOS Si en una frase tuviera que definir que es un microcontrolador, creo que lo más acertado sería definirlo como un controlador de entrada/ salida con capacidad de decisión. Para poder explicar

Más detalles

Tema 14. Interrupciones. Las. C. F. G.S. D.P.E. Módulo de Proyectos 1

Tema 14. Interrupciones. Las. C. F. G.S. D.P.E. Módulo de Proyectos 1 Tema 14 Las Interrupciones C. F. G.S. D.P.E. Módulo de Proyectos 1 Los PIC de la familia 16F8X poseen 4 fuentes de interrupción: Interrupción externa a través del pin RB0/INT Interrupción por overflow

Más detalles

MICROCONTROLADORES PIC

MICROCONTROLADORES PIC ASSEMBLER PARA SESIÓN COMPLETA MICROCONTROLADORES PIC POR: El Registro PCL Existe un registro, llamado PCL, ubicado en la posición 0x02 en el banco de memoria, tiene mucho que ver con el flujo del programa,

Más detalles

SALTOS EN FUNCIONDE UN BIT Aquéllas que pueden producir el salto en función del estado de un bit. Son btfsc y

SALTOS EN FUNCIONDE UN BIT Aquéllas que pueden producir el salto en función del estado de un bit. Son btfsc y SISTEMAS ELECTRONICOS DIGITALES SALTO CONDICIONAL El repertorio del PIC16F84 también dispone de instrucciones de salto condicional, que son aquéllas que producen un salto en función de que se cumpla o

Más detalles

Assembler para PICs. Permite la utilización de etiquetas, tanto para apuntar a direcciones como para definir valores constantes.

Assembler para PICs. Permite la utilización de etiquetas, tanto para apuntar a direcciones como para definir valores constantes. Características generales del lenguaje: Emplea los mnemotécnicos de las instrucciones del μc. En nuestro caso corresponderá al set de instrucciones de los PICs de la gama media (35 instrucciones). Permite

Más detalles

TEMA 5 LA MEMORIA DE DATOS MEMORIA RAM D.P.E. DESARROLLO DE PROYECTOS 1

TEMA 5 LA MEMORIA DE DATOS MEMORIA RAM D.P.E. DESARROLLO DE PROYECTOS 1 TEMA 5 LA MEMORIA DE DATOS MEMORIA RAM D.P.E. DESARROLLO DE PROYECTOS 1 Estructura De La Memoria Ram (1) La memoria de datos RAM está dividida en dos partes diferenciadas: 1.- Zona SFR o zona de Registros

Más detalles

TEMA 6 MICROCONTROLADORES. PIC 16F84. 1. Introducción. 1.1. Referencia histórica.

TEMA 6 MICROCONTROLADORES. PIC 16F84. 1. Introducción. 1.1. Referencia histórica. T-6 Microcontroladores. PIC16F84. 1 TEMA 6 MICROCONTROLADORES. PIC 16F84. 1. Introducción. En las aplicaciones sencillas resultan preferibles las soluciones no programables que no requieren desarrollo

Más detalles

[CURSO BÁSICO DE PIC TABLAS]

[CURSO BÁSICO DE PIC TABLAS] 2009 GRUPO ESTUDIANTIL INVENTRONICA Joel Oswaldo Campos Pérez [CURSO BÁSICO DE PIC ] En esta sección explicaremos que son las tablas, para que se usan y como se hacen. Se describe un ejercicio completo

Más detalles

Práctica 1. Introducción al laboratorio y al ensamblador del PIC. 1. Objetivos. 2. Introducción. 2.1 Ensamblar y simular

Práctica 1. Introducción al laboratorio y al ensamblador del PIC. 1. Objetivos. 2. Introducción. 2.1 Ensamblar y simular Práctica Introducción al laboratorio y al ensamblador del PIC Práctica Introducción al laboratorio y al ensamblador del PIC. Objetivos El objetivo de esta primera sesión es que el alumno aprenda el manejo

Más detalles

PROCESADORES I Guia TP7 Introducción al Assembler del PIC

PROCESADORES I Guia TP7 Introducción al Assembler del PIC Pseudo-instrucciones PIC16F628 PROCESADORES I Guia TP7 Introducción al Assembler del PIC Se describen a continuación las más relevantes, que serán necesarias para la realización de los diferentes ejercicios.

Más detalles

MANEJO DE DISPLAY LCD (Versión 1.1)

MANEJO DE DISPLAY LCD (Versión 1.1) MANEJO DE DISPLAY LCD (Versión 1.1) Prof: Bolaños D. Si bien mucas aplicaciones donde debemos mostrar información podemos resolverlas con display de 7 segmentos, estos presentas algunas limitaciones importantes,

Más detalles

Módulos CCP. Registro de captura Registro de comparación Registro de ciclo de servicio PWM

Módulos CCP. Registro de captura Registro de comparación Registro de ciclo de servicio PWM Módulos CCP Los PIC16F87X disponen de 2 módulos CCP (Capture/Compare/PWM): CCP1 y CCP2. Cada módulo CCP cuenta con un registro de 16 bits (CCPR1 y CCPR2) que puede operar como un Registro de captura Registro

Más detalles

1. Proponer un circuito que tenga el puerto b como salida conectando 8 leds, realizando un programa que me encienda los bits 0, 1, 3, 5, 7.

1. Proponer un circuito que tenga el puerto b como salida conectando 8 leds, realizando un programa que me encienda los bits 0, 1, 3, 5, 7. 1. Proponer un circuito que tenga el puerto b como salida conectando 8 leds, realizando un programa que me encienda los bits 0, 1, 3, 5, 7. a. Diagrama de flujo b. Circuito C1 4 MHZ C2 R2 10k 16 15 4 R1

Más detalles

Usando los Codificadores Cuadráticos

Usando los Codificadores Cuadráticos Usando los Codificadores Cuadráticos Autor: Ing. Carlos Narváez Universidad de Oriente email: cnarvaez@udo.edu.ve Introducción El presente trabajo es una introducción a los denominados codificadores cuadráticos,

Más detalles

MICROPROCESADORES 2003/2004 DADO ELECTRÓNICO. Jaime Pérez Crespo Rubén Seijas Valverde

MICROPROCESADORES 2003/2004 DADO ELECTRÓNICO. Jaime Pérez Crespo Rubén Seijas Valverde MICROPROCESADORES 2003/2004 DADO ELECTRÓNICO Jaime Pérez Crespo Rubén Seijas Valverde Introducción: Con esta práctica se pretende familiarizarse con la programación en ensamblador de microcontroladores

Más detalles

TUTORIAL PRIMERA PARTE: GENERACIÓN DE UN RETARDO CON TIMER.

TUTORIAL PRIMERA PARTE: GENERACIÓN DE UN RETARDO CON TIMER. 1 TUTORIAL OBJETIVOS Familiarizarse con el TMR0 como contador de pulsos internos y generador de retardos. Conocer el método del polling para verificar banderas de dispositivos. Crear y manipular variables

Más detalles

RECURSOS FUNDAMENTALES

RECURSOS FUNDAMENTALES RECURSOS FUNDAMENTALES Los recursos que se considerarán son : Temporizadores Puertos de E/S La Palabra de Configuración EEPROM de datos 1 TEMPORIZADORES Una labor habitual en los programas de control suele

Más detalles

Tema: Comunicación serie entre PIC y PC.

Tema: Comunicación serie entre PIC y PC. 1 Facultad: Ingeniería Escuela: Electrónica Asignatura: Microcontroladores Lugar de ejecución: Laboratorio de microprocesadores, Edif. 3 Electrónica. Tema: Comunicación serie entre PIC y PC. Objetivo general

Más detalles

Ensamblador. Interrupciones. Dentro de una computadora existen dos clases de interrupciones:

Ensamblador. Interrupciones. Dentro de una computadora existen dos clases de interrupciones: Ensamblador Interrupciones Definición: Una interrupción es el rompimiento en la secuencia de un programa para ejecutar un programa especial llamando una rutina de servicio cuya característica principal

Más detalles

podemos enfocar al funcionamiento del robot, es decir la parte de electrónica. Para que el

podemos enfocar al funcionamiento del robot, es decir la parte de electrónica. Para que el CAPÍTULO 4 Funcionamiento del Robot Después de analizar paso a paso el diseño y funcionamiento de la interfase, nos podemos enfocar al funcionamiento del robot, es decir la parte de electrónica. Para que

Más detalles

GAMA BAJA (PIC16C5X) ARQUITECTURA BÁSICA

GAMA BAJA (PIC16C5X) ARQUITECTURA BÁSICA GAMA BAJA (PIC6CX) ARQUITECTURA BÁSICA Instrucciones -bit de palabra de instrucción ROM/EPROM desde a 04 palabras Hasta 4 páginas (xbits) de memoria de programa -bit de datos RAM desde a bytes Hasta 4

Más detalles

Interrupciones Fuentes de Interrupciones para el PIC16F1787

Interrupciones Fuentes de Interrupciones para el PIC16F1787 Fuentes de para el PIC16F1787 Interrupción externa a través del pin RB0/INT Interrupción por cambio de nivel Interrupción por escritura en la EEPROM Interrupción por desbordamiento del TMR0 Interrupción

Más detalles

PIC MICRO ESTUDIO Reloj en tiempo real RTCU2 Clave: 719 www.electronicaestudio.com

PIC MICRO ESTUDIO Reloj en tiempo real RTCU2 Clave: 719 www.electronicaestudio.com PIC MICRO ESTUDIO Reloj en tiempo real RTCU2 Clave: 719 www.electronicaestudio.com Guía de Operación Reloj en tiempo real Modulo: RTCU2iempo real Clave: 719 El modulo 719 Reloj en tiempo real- utiliza

Más detalles

BUS I2C: IMPLEMENTACIÓN PRÁCTICA CON MICROCONTROLADORES PIC MEMORIAS EEPROM SERIE

BUS I2C: IMPLEMENTACIÓN PRÁCTICA CON MICROCONTROLADORES PIC MEMORIAS EEPROM SERIE BUS I2C: IMPLEMENTACIÓN PRÁCTICA CON MICROCONTROLADORES PIC MEMORIAS EEPROM SERIE Fernando Nuño García 1 Ventajas del BUS I2C Definido inicialmente a mediados de los 80 para trabajar a 100kbit/s y en 1995

Más detalles

TALLER DE CONSTRUCCION DE UN MICROBOT RASTREADOR PROGRAMACION TALLER DE CONSTRUCCIÓN DE UN MICROBOT RASTREADOR

TALLER DE CONSTRUCCION DE UN MICROBOT RASTREADOR PROGRAMACION TALLER DE CONSTRUCCIÓN DE UN MICROBOT RASTREADOR TALLER DE CONSTRUCCION DE UN MICROBOT RASTREADOR PROGRAMACION ESTRUCTURA GENERAL DE UN PROGRAMA #include #use delay(clock=4000000) main() { 1 OPERACIONES CON LOS PUERTOS 1) Especificar qué líneas

Más detalles

MICROCONTROLADORES PIC EEPROM. Memoria de programa Características

MICROCONTROLADORES PIC EEPROM. Memoria de programa Características EEPROM. Memoria de programa Características Algunos dispositivos pueden leer la memoria de programa. Leer checksums, calibración de datos, tablas. 14-bits de datos comparados con los 8 de retlw 0xnn Accesibles

Más detalles

Escuela Politécnica Superior de Elche. EXAMEN DE SISTEMAS ELECTRÓNICOS Y AUTOMÁTICOS 2º Parte: Microcontroladores + Instrumentación Nombre:

Escuela Politécnica Superior de Elche. EXAMEN DE SISTEMAS ELECTRÓNICOS Y AUTOMÁTICOS 2º Parte: Microcontroladores + Instrumentación Nombre: Escuela Politécnica Superior de Elche 4º Ingeniería Industrial EXAMEN DE SISTEMAS ELECTRÓNICOS Y AUTOMÁTICOS 2º Parte: Microcontroladores + Instrumentación Nombre: CUESTION 1 (3 puntos) Microcontroladores

Más detalles

Introducción a la programación en Lenguaje Assembler.

Introducción a la programación en Lenguaje Assembler. Introducción a la programación en Lenguaje Assembler. Que son las instrucciones El set de instrucciones de un microprocesador es el set de entradas binarias que producen acciones definidas durante un ciclo

Más detalles

O B J E T I V O I N T R O D U C C I O N M A R C O T E O R I C O

O B J E T I V O I N T R O D U C C I O N M A R C O T E O R I C O O B J E T I V O Realizar un contador decimal que se exhiba en un display de 7 segmentos, cada número deberá estar exhibido durante un segundo. I N T R O D U C C I O N En la mayoría de los sistemas electrónicos

Más detalles

CCP. comparación para la captura y reset del TMR1. Pueden usarse CCPx en modo captura y CCPy en modo

CCP. comparación para la captura y reset del TMR1. Pueden usarse CCPx en modo captura y CCPy en modo CCP Hasta dos CCPx (CCP1, CCP2) en dispositivos 16CXXX Tres modos de funcionamiento, en función de CCPxM del CCPxCON Captura: Interrupción (CCPxIF=1) y captura (16bit) del valor de TMR1={TMR1H,TMR1L}

Más detalles

PROFESOR: Práctica 10. Manejo de Tabla de datos con Microcontrolador PIC

PROFESOR: Práctica 10. Manejo de Tabla de datos con Microcontrolador PIC INSTITUTO POLITÉCNICO NACIONAL Centro de Estudios Científicos y Tecnológicos Nº 1 Gonzalo Vázquez Vela Academia de Sistemas Digitales Prácticas de Arquitectura de Microprocesadores y Microcontroladores

Más detalles

El módulo LCD Ejemplos de funcionamiento

El módulo LCD Ejemplos de funcionamiento SISTEMAS ELECTRÓNICOS Y AUTOMÁTICOS PRACTICAS DE MICROCONTROLADORES PIC PRÁCTICA 7: El módulo LCD El módulo LCD Ejemplos de funcionamiento - 1 - 1. Objetivos: - Conocer el funcionamiento y programación

Más detalles

62/8&,21(6$/(;$0(1'( /$%25$725,2'((6758&785$6'(/26&20387$'25(6 &8562)(%5(52

62/8&,21(6$/(;$0(1'( /$%25$725,2'((6758&785$6'(/26&20387$'25(6 &8562)(%5(52 62/8&,21(6$/(;$0(1'( /$%25$725,2'((6758&785$6'(/26&20387$'25(6 &8562)(%5(52 3DUWHGH(QVDPEODGRU 4º) Escribir un programa en ensamblador que pida un número de una cifra por teclado y saque como resultado

Más detalles

PRÁCTICA 6: Gobierno del display 7 segmentos

PRÁCTICA 6: Gobierno del display 7 segmentos SISTEMAS ELECTRÓNICOS Y AUTOMÁTICOS PRACTICAS DE MICROCONTROLADORES PIC PRÁCTICA 6: Gobierno del display 7 segmentos Display 7 segmentos - 1 - Ingeniería de Sistemas y Automática 1. Objetivos: Gobierno

Más detalles

Proyecto Final Robot. Docentes: Collovati Susana Lasarte Matias Correa Diego Integrante: Jesús Olguera

Proyecto Final Robot. Docentes: Collovati Susana Lasarte Matias Correa Diego Integrante: Jesús Olguera Proyecto Final Robot Docentes: Collovati Susana Lasarte Matias Correa Diego Integrante: Jesús Olguera 1 Introducción: En el siguiente informe se expone la construcción de un robot capaz de seguir líneas.

Más detalles

[CURSO BÁSICO DE PIC RETARDOS POR SOFTWARE]

[CURSO BÁSICO DE PIC RETARDOS POR SOFTWARE] 2009 GRUPO ESTUDIANTIL INVENTRONICA Joel Oswaldo Campos Pérez [CURSO BÁSICO DE PIC RETARDOS POR SOFTWARE] En este segmento se abordara el tema de retardos por software en ensamblador, se aprenderá la estructura

Más detalles

Microcontroladores PIC

Microcontroladores PIC Introducción Los microcontroladores son procesadores que poseen memoria y dispositivo de entrada salida todo encapsulado en un mismo integrado, lo que permite su uso sin la necesidad de estar disponiendo

Más detalles

Maqueta: Osciloscopio y generador

Maqueta: Osciloscopio y generador Maqueta: Osciloscopio y generador 1. Introducción Esta práctica se divide en dos partes. En la primera se desarrolla un osciloscopio digital basado en el ADC del 80C537 y la pantalla del PC. En la segunda

Más detalles

PRACTICA 4. REALIZAR ENCENDIDO-APAGADO DE DIODOS LED

PRACTICA 4. REALIZAR ENCENDIDO-APAGADO DE DIODOS LED PRACTICA 4. REALIZAR ENCENDIDO-APAGADO DE DIODOS LED DESCRIPCIÓN. En esta práctica vamos a realizar el encendido y apagado de diodos led. Para ellos iremos activando y desactivando las salidas de la puerta

Más detalles

Registros SFR vistos hasta ahora: Microcontroladores PIC

Registros SFR vistos hasta ahora: Microcontroladores PIC Registros SFR vistos hasta ahora: Microcontroladores PIC Microcontroladores PIC: Timer Características del Timer TMR0: Cumple básicamente la función de contador de eventos (o divisor de frecuencia). El

Más detalles