











Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
es un laboratorio de interrupciones y de diley
Tipo: Apuntes
1 / 19
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!












-Estas son las funciones más usadas en nuestro microcontrolador I. XORWF: realiza la operación XOR entre el valor almacenado en un registro en el microcontrolador y el valor que se encuentra en el registro de trabajo (WREG o FSR, dependiendo del microcontrolador y la arquitectura). El resultado de esta operación XOR se almacena nuevamente en el mismo registro de destino II. ANDWF: realiza la operación lógica AND bit a bit entre el valor almacenado en un registro en el microcontrolador y el valor que se encuentra en el registro de trabajo (WREG o FSR). El resultado de esta operación se almacena nuevamente en el mismo registro de destino. III. RETLW: La instrucción "RETLW" ( Return Literal to W) es una operación utilizada en lenguaje ensamblador para microcontroladores, y se usa principalmente en arquitecturas específicas de microcontroladores PIC (Programmable Integrated Circuit) de la marca Microchip. La función principal de "RETLW" es cargar un valor literal en el registro de trabajo (WREG). IV. DECFSZ: La instrucción "DECFSZ" es una operación utilizada en lenguaje ensamblador para microcontroladores, y su función principal es restar 1 de un registro y saltar a una dirección de memoria específica si el resultado de la resta es igual a cero (es decir, si el registro se vuelve cero después de la resta).
bucle2 = bucle 1 x CONTA1 = 4 x 0.05x10-6 x 250 x 3 x 67 = 10.05mS Tiempo = 4 x Tosc x (255-TMR0) x PS (PreScaler) 10x10-3=40.0510-6(255-TMR0)x TMR0=59.6875=> TMR0= TMR0=
; PIC16F877A Configuration Bit Settings ; Assembly source line config statements ; CONFIG CONFIG FOSC = HS ; Oscillator Selection bits (HS oscillator) CONFIG WDTE = OFF ; Watchdog Timer Enable bit (WDT disabled) CONFIG PWRTE = OFF ; Power-up Timer Enable bit (PWRT enabled) CONFIG BOREN = OFF ; Brown-out Reset Enable bit (BOR disabled) CONFIG LVP = OFF ; Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming) CONFIG CPD = OFF ; Data EEPROM Memory Code Protection bit (Data EEPROM code protection off) CONFIG WRT = OFF ; Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control) CONFIG CP = OFF ; Flash Program Memory Code Protection bit (Code protection off) // config statements should precede project file includes. #include <xc.inc> CONTA1 EQU 0X20 ; Registro para delay CONTA2 EQU 0X21 ; Registro para delay CONTADOR EQU 0X22 ; Registro para el contador de 7 segmentos w_temp EQU 0X23 ; Registro temporal para w pclath_temp EQU 0x24 ; Registro temporal de pclath status_temp EQU 0x25 ; Registro temporal de status B_temp EQU 0X26 ; Registro temporal del puerto B PSECT CODE, DELTA=2, ABS GOTO CONFIGURACION ; Configuracion de guardado de valores temporales antes de realizar la rutina de interrupcion ORG 0X MOVWF w_temp MOVF STATUS,w MOVWF status_temp MOVF PCLATH,w MOVWF pclath_temp GOTO RUTINA_INT ; Rutina de salir de la interrupcion regresando los valores temporales SALIR_INT: MOVF pclath_temp,w MOVWF PCLATH
MOVF status_temp,w MOVWF STATUS SWAPF w_temp,f SWAPF w_temp,w RETFIE CONFIGURACION: BCF RP1 ; Limpiar el valor de RP BSF RP0 ; Ir al banco 01 MOVLW 0XFF ; Configurar al puerto B como entrada MOVWF TRISB MOVLW 0X00 ; Configurar el puerto D como salida MOVWF TRISD MOVLW 0X00 ; Configurar el puerto D como salida MOVWF TRISC MOVLW 00000111B ; Configurar el preescalador a 1: MOVWF OPTION_REG MOVLW 10111000B ; Activar interrupciones del Timer0,RB0 y de RB4 al RB MOVWF INTCON BCF RP0 ; Regresar al banco 00 CLRF CONTADOR ; Inicializar el contador en 0 MOVLW 60 ; Inicializar el valor del Timer MOVWF TMR CLRF PORTB ; Limpiar la salida del puerto B CLRF PORTC ; Limpiar la salida del puerto C CLRF PORTD ; Limpiar la salida del puerto D MOVF PORTB,W MOVWF B_temp INICIO: BTFSC PORTB,0 ; Verificar el valor del pin RB GOTO DESCENDENTE GOTO ASCENDENTE RUTINA_INT: BTFSC INTCON,2 ; Verificar la interrupcion del TMR GOTO TMR0_INT BTFSC INTCON,1 ; Verificar la interrupcion del RB GOTO RB0_INT BTFSC INTCON,0 ; Verificar la interrupcion de los puertos RB4 al RB GOTO RB_INT GOTO SALIR_INT TMR0_INT: MOVLW 60 ; Cargar nuevamente el valor del TMR MOVWF TMR BTFSC PORTD,1 ; Verificar el valor de D GOTO D1_
BSF PORTD,4 ; Si D4 es 0 cambiar a 1 BCF B_temp,4 ; Actualizar el valor temporal de RB BCF INTCON,0 ; Apagar la interrupcion de RB GOTO SALIR_INT B5_0: BTFSS PORTB,5 ; Verificar el valor actual de RB RETURN ; Si es 0 entonces compara el siguiente RB BTFSC PORTD,5 ; Verificar el valor de D GOTO D5_ GOTO D5_ D5_1: BCF PORTD,5 ; Si D5 es 1 cambiar a 0 BSF B_temp,5 ; Actualizar el valor temporal de RB BCF INTCON,0 ; Apagar la interrupcion de RB GOTO SALIR_INT D5_0: BSF PORTD,5 ; Si D5 es 0 cambiar a 1 BSF B_temp,5 ; Actualizar el valor temporal de RB BCF INTCON,0 ; Apagar la interrupcion de RB GOTO SALIR_INT B6_1: BTFSC PORTB,6 ; Verificar el valor actual de RB RETURN ; Si es 1 entonces compara el siguiente RB BTFSC PORTD,6 ; Verificar el valor de D GOTO D6_ GOTO D6_ D6_1: BCF PORTD,6 ; Si D6 es 1 cambiar a 0 BCF B_temp,6 ; Actualizar el valor temporal de RB BCF INTCON,0 ; Apagar la interrupcion de RB GOTO SALIR_INT D6_0: BSF PORTD,6 ; Si D6 es 0 cambiar a 1 BCF B_temp,6 ; Actualizar el valor temporal de RB BCF INTCON,0 ; Apagar la interrupcion de RB GOTO SALIR_INT B7_0: BTFSS PORTB,7 ; Verificar el valor actual de RB RETURN ; Si es 0 entonces regresa a cargar el valor temporal de RB BTFSC PORTD,7 ; Verificar el valor de D GOTO D7_ GOTO D7_ D7_1: BCF PORTD,7 ; Si D7 es 1 cambiar a 0
BSF B_temp,7 ; Actualizar el valor temporal de RB BCF INTCON,0 ; Apagar la interrupcion de RB GOTO SALIR_INT D7_0: BSF PORTD,7 ; Si D7 es 0 cambiar a 1 BSF B_temp,7 ; Actualizar el valor temporal de RB BCF INTCON,0 ; Apagar la interrupcion de RB GOTO SALIR_INT ASCENDENTE: MOVF CONTADOR,W ; Carga el valor del contador a W CALL Tabla ; Busca el valor en 7 segmentos en la tabla MOVWF PORTC ; Muestra el valor de 7 segmentos en el puerto C por 1 segundo CALL DELAY500ms CALL DELAY500ms INCF CONTADOR,F ; Incrementa el valor del contador MOVF CONTADOR,W ; Compara el valor del contador con 10 XORLW 0X0A BTFSS STATUS,2 ; Si el siguiente valor del contador es menor que 10 entonces vuelve a comparar RB GOTO INICIO MOVLW 0 ; En caso contrario se carga el valor de 0 al contador y regresa a comparar RB MOVWF CONTADOR GOTO INICIO DESCENDENTE: MOVF CONTADOR,W ; Carga el valor del contador a W CALL Tabla ; Busca el valor en 7 segmentos en la tabla MOVWF PORTC ; Muestra el valor de 7 segmentos en el puerto C por 1 segundo CALL DELAY500ms CALL DELAY500ms MOVF CONTADOR,W ; Compara el valor del contador con 0 XORLW 0X BTFSS STATUS,2 ; Si el valor actual del contador es 0 entonces reinicia el contador GOTO SIGUIENTE GOTO REINICIO SIGUIENTE: DECF CONTADOR,F ; Decrementa el valor del contador y regresa a inicio a comparar RB GOTO INICIO REINICIO: MOVLW 9 ; Carga el valor de 9 al contador y regresa a comparar RB
Estos son solo algunos ejemplos de aplicaciones reales en las que las habilidades adquiridas a través de este ejercicio podrían ser útiles. En esencia, el control, la temporización y la capacidad de respuesta a eventos son fundamentales en una amplia gama de aplicaciones electrónicas y sistemas controlados por microcontroladores.
- PAPER CERCANOS AL TEMA SOBRE LA APLICACIÓN DEL LABORATORIO: file:///C:/Users/yeris/Downloads/Simulaci %C3%B3n+del+control+de+temperatura+de+un+reactor+de+tanque+agi tado+de+Van+De+Vusse.pdf https://repositorio.unitec.edu.co/bitstream/handle/20.500.12962/1276/ Entrega_Final_PY_Estudio%20de%20soluciones%20de %20automatizaci%C3%B3n%20residencial%20o%20dom%C3%B3tica %20para%20aplicaci%C3%B3n%20en%20Colombia%20%281%29.pdf? sequence=1&isAllowed=y https://repositoriounicaes.catolica.edu.sv/jspui/bitstream/ 123456789/53/1/Trabajo%20de%20Graduaci%C3%B3n%20Sistemas %20Dom%C3%B3ticos.pdf
https://www.findchips.com/search/PIC16F877A-E? gclid=CjwKCAjwysipBhBXEiwApJOcu9- htwFfosZYFgm9UE8CVnLbaoyIne1KpO6w_wW4riuZ7ii47IMJZBoC ss8QAvD_BwE https://static.upao.info/descargas/ 78a608f43f7702198f00faee981db7a3a84c4f8c76d77c8de61bf 8dbab5b581514ea884149f697630e093afcdca9237549aca26fad d34bdd95cac8ead2db981/sistemas-embebidos--guIa- metodolOgica-para-su-desarrollo.pdf SISTEMAS EMBEBIDOS (RICARDO CAYSSIALS) MICROCONTROLADORES PIC16F877X Y PIC16F88X (DANIEL SALVATIERRA) CURSO BASICO DE PIC16F877 (RAUL PERALTA MEZA)