Anda di halaman 1dari 7

Sistemas de Microprocesadores II Practica 2 Uso de las Interrupciones en el PIC 16F84A

Nombre del profesor de teora y prctica:

Mauricio Lpez Villaseor Integrantes: Quintero Patio Luis Daniel Flores Cruz Rubn Gonzlez Alba Ral
Mxico, D.F a 20 de Febrero de 2013

Objetivo. El uso apropiado de las rutinas de Interrupcion en el desarrollo de aplicaciones para el PIC16F84A.

Introduccin.

Una interrupcin consiste en un mecanismo por el cual un evento interno o externo puede interrumpir la ejecucin del un programa en cualquier momento. A partir de entonces se produce automticamente un salto a una subrutina de atencin a la interrupcin, esta atiende inmediatamente el evento de ser interrumpido, continuando su tarea justo donde la dejo. La interrupcin tiene la caracterstica de la inmediatez, nace de la necesidad de ejecutar una subrutina en el instante preciso y, por tanto, se considera su intervencin urgente. Este mtodo es ms eficiente que la tcnica del Polling ya que el microcontrolador no perder el tiempo preguntando a la lnea de entrada para leer el estado, sino que nicamente atender al perifrico cuando este se lo pida mediante la solicitud de interrupcin. El funcionamiento de las interrupciones es similar al de las subrutinas, de las cuales se diferencian, principalmente, en los procedimientos que las ponen en marcha, esto es, al aparecen en cualquier instante de un evento externo al programa, por ello una interrupcin se activa por un mecanismos de hardware, como el pulso de un Switch, una barrera inflaroja o fotoresistiva, etc. El PIC16F84A dispone de 4 posibles fuentes de interrupcin: Interrupcion INT. Por activacin del pin RB0/INT. Interrupcion RB1. Por cambio de estado en una o varias de las 4 lneas de ms peso RB7:RB4 del puerto B. Interrupcion TOI. Por desbordamiento del TMR0 . Interrupcion EEI. Por la finalizacin de la escritura en la EEPROM de datos. [1]

Para esta prctica solo utilizaremos la interrupcin INT, pero no est dems mencionarlas.

Material y Equipo.
Microcontrolador PIC16F84A 8 Resistencias de 220. Un display de 7 segmentos nodo o ctodo comn. Cristal piezoelctrico de 4 MHz. 2 capacitores cermicos de 22pF. Una resistencia de 100 y de 10k. Un push botton. Sensor ptico de Barrera Un Buzzer Una tablilla de experimentacin. Cables conectores. Una fuente regulada de 5V. Programador para PIC Microchip. Un ordenador con puerto serie.

Procedimientos de desarrollo.
Se planteo el siguiente problema: Meterle el problema el Pseudocodigo, diagrama de flujo y las fotos

Figura 1 Circuito armado para solucionar el problema propuesto. [2]

list #include __CONFIG

p=16F84A <p16F84A.inc> _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

Temp05 Temp_buzz Temp_4 offset reg1 resultado1 STORW STRST reg_x

EQU EQU EQU EQU EQU EQU EQU EQU EQU

0x0C 0x0D 0x0E 0x0F 0x11 0x12 0x13 0x14 0x10

;reg ;reg ;reg ;reg ;reg ;reg ;reg ;reg ;reg

que usaremos para 0.5seg de inicio


que usaremos para 4seg alarma de sobrepaso

que usaremos para 4seg de captura guarda el nmero de interrupciones auxiliar para guardar informacin de la tabla para guardar resultados de las operaciones para respaldar W para respaldar STATUS temporal

; ; Vectores de Inicio e Interrupcin ; ORG 0X00 ;vector de inicio GOTO inicio ORG 0x04 GOTO Interrupcion ;direccin de interrupcin

; ; Rutina de Imprime Dato en el Display ; Imprime_dato MOVF offset, W ;mueve el contenido de offset a W CALL tabla_num ;llama a la rutina de la tabla

reg1 ;mueve el contenido de W a reg1 reg1, F ;complementa el contenido de reg1 reg1, W ;guarda lo que hay en reg1 en W ANDLW B'01111110' ;realiza la AND con la mscara propuesta MOVWF resultado1 ;el contenido de W pasa a resultado1 MOVF ANDLW filtrar IORWF MOVWF visualizacin BCF BTFSC BSF RETURN PORTA, 0 reg1, 0 PORTA, 0 ;limpia el bit 0 de PORTA ;pregunta si es 0 el bit 0 de reg1 ;pone en 1 el bit 0 de PORTA ;regresa el llamado resultado1, W PORTB ;realiza la OR con resultado1 y W ;se enva a PORTB para su PORTB, W ;el contenido de PORTB pasa a W B'10000001';aplicamos otra mascara con AND para

MOVWF COMF MOVF

; ; Configuracin ; inicio BCF MOVLW MOVWF MOVWF BSF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF OPTION_REG MOVLW B'10010000' ;carga el valor 90h a W MOVWF INTCON ;con la literal, configura INTCON BCF STATUS,RP0 ;para configurar el Banco 0 ; ; Inicializacin de variables ; ini_var CLRF CLRF CLRF CALL CLRF CLRF principal CLRF CALL TMR0 ;inicializa el TMR0 Temp_4 ;limpia el registro Temp_4 offset ;limpia el registro offset Imprime_dato ;llama a la rutina Imprime_dato Temp05 ;limpia el registro Temp05 Temp_buzz ;limpia el registro Temp_buzz offset Imprime_dato ;limpia el registro offset ;llama a la rutina Imprime_dato STATUS,RP0 H'00' PORTA PORTB STATUS,RP0 B'00011110' TRISA B'00000001' TRISB B'01000111' OPTION_REG ;para configurar el Banco 0 ;carga un 0 a W ;se limpia el puerto A ;se limpia el Puerto B ;pone para configurar el Banco 1 ;carga el valor 1Eh a W ;con la literal, configura el PORTA ;carga el valor01h a W ;con la literal, configura el PORTB ;carga el valor 47h a W ;con la literal, configura

CLRF CALL de 0.5s CLRF loop1 Temp_4 GOTO GOTO CALL

TMR0 Sonido05

;inicializa el TMR0 ;llama a la rutina para la alarma ;limpia el registro Temp_4 ;llama a la rutina TST_RTCC ;pregunta si el bit 7 es 1 en ;sino, continua por loop1 ; si lo es, continua por ini_var

Temp_4 TST_RTCC BTFSS Temp_4,7 loop1 ini_var

; ; Rutina de interrupcin. ; Interrupcion MOVWF STORW ;el contenido de W pasa a STORW MOVF STATUS, W ;los bits de STATUS pasan a W MOVWF STRST ;respalda el contenido de STATUS INCF offset,F ;incrementa 1 el nm. de interrupciones compara MOVLW MOVWF MOVF SUBWF BTFSS GOTO CALL CLRF CLRF despliega CALL BCF interrupcin MOVF STRST, W ;cargamos el contenido de STRST a W MOVWF STATUS ;se recupera el estado original de STATUS MOVF STORW, W ;pasa el contenido de STORW a W RETFIE ;Termina la rutina de Interrupcin ; ; Rutina del Buzzer ; buzzer CLRF TMR0 ;reinicia el TMR0 BSF PORTB,7 ;pone en 1 el bit 7 del PORTB CLRF Temp_buzz ;limpia el Temp_buzz loop3 CALL TST_RTCC ;llama a la rutina TST_RTCC BTFSS Temp_buzz,7 ;pregunta si es 1 el bit 7 de Temp_buzz GOTO loop3 ;sino es, continua por loop3 BCF Temp_buzz,7 ;si lo es, limpia el bit 7 de Temp_buzz BCF PORTB,7 ;pone en 0 el bit 7 de PORTB RETURN ;regresa el llamado ; ; Rutina del Buzzer para un Sonido de 0.5s h'0A' ;carga la litera a W reg_x ;0Ah se guarda en reg_x offset,W ;el contenido del offset pasa a W reg_x ;realiza la resta de W con reg_x STATUS,Z ;pregunta por Z=1 en STATUS despliega ;sino, continua por despliega buzzer ;llama a la rutina buzzer Temp_4 ;limpia Temp_4 offset ;limpia el offset Imprime_dato ;despliega el nmero de interrupciones INTCON,INTF ;apagamos la bandera de

; Sonido05 BSF PORTB,7 ;pone un 1 en el bit 7 del PORTB CLRF TMR0 ;reinicia el TMR0 CLRF Temp05 ;limpia el registro Temp05 loop2 CALL TST_RTCC ;llama a la rutina TST_RTCC BTFSS Temp05,4 ;pregunta si el bit 4 de Temp05 es 1 GOTO loop2 ;sino es, continua por loop2 BCF Temp05,4 ;si lo es, limpia el bit 4 de Temp05 BCF PORTB,7 ;limpia el bit 7 de PORTB RETURN ;regresa el llamado ; ; Rutina de actualizacin de los temporizadores ; TST_RTCC NOP ;deja pasar un ciclo maquina BTFSS TMR0,7 ;pregunta si el bit 7 de TMR0 es 1 RETURN ;sino es, continua regresando el llamado BCF TMR0,7 ;si lo es, limpia el bit 7 del TMR0 INCF Temp05,F ;incrementa el contenido de Temp05 en uno INCF Temp_buzz,F ;incrementa el contenido de Temp_buzz en uno INCF Temp_4,F ;incrementa el contenido de Temp_4 en uno RETURN ;regresa el llamado ; ; Rutina de la Tabla ; tabla_num ADDWF PCL,F ; PCL <-- W + PCL RETLW B'00111111' ; '3F', correspondiente a "0" RETLW B'00000110' ; '06', correspondiente a "1" RETLW B'01011011' ; '5B', correspondiente a "2" RETLW B'01001111' ; '4F', correspondiente a "3" RETLW B'01100110' ; '66', correspondiente a "4" RETLW B'01101101' ; '6D', correspondiente a "5" RETLW B'01111101' ; '7D', correspondiente a "6" RETLW B'00000111' ; '07', correspondiente a 7 RETLW B'01111111' ; '7F', correspondiente a "8" RETLW B'01101111' ; '6F', correspondiente a "9"

END

;Fin del Programa

Resultados.
FOTOS ?

Conclusiones.
Quintero Patio Luis Daniel

Flores Cruz Rubn

Gonzlez Alba Ral

Bibliografa.
1 2
Enrique Palacios Municio, Fernando Remiro Domnguez, Lucas J. Lpez Prez, Microcontrolador PIC16F84. Desarrollo de proyectos. Mxico: Alfaomega, Agosto 2004, Captulo: 17. http://laryc.izt.uam.mx/eedu/claroline196/claroline/backends/download.php?url=L1Rlb3JpYS9QMDdfU01JX1BJQy5wZGY%3 D&cidReset=true&cidReq=212349 Diagram Designer. - Programa utilizado para realizar los diagramas de flujo inspirados por Cortesa del Prof. Mauricio Lpez Villaseor.

Anda mungkin juga menyukai