practica#7 interrupciones
TRANSCRIPT
UNIVERSIDAD POLITECNICA SALESIANA
PRACTICA #7
SISTEMAS MICROPROCESADOS I
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
TEMA INTERRUPCIONES
OBJETIVOELABORAR PROGRAMAS PARA COMPRENDER EL USO DE INTERRUPCIONES
Ejercicio Nº 1:
Uso de la interrupción externa
A LGO R IT M O
Entradas:
Señal de 0-5 vSalidas:
Visulizar en lcd Visualizar en led`s
Proceso: entrada de señal defino mis variables habilitación de puerto B como entrada habilito mis Interrupciones Habilita interrupción Externa Bandera L=0 Verifica interrupción Ejecuta mi programa Llama interrupción va al programa lo ejecuta Repite la interrupción Despliega en el LCD
CODIGO
program Interrupcion1
Dim L as BYTE
dim A, B as byte
dim valor as string[6]
sub procudere init
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
TRISC=$0
TRISd=$0
trisb=$FF 'Ouerto B como entradas
OPTION_REG=%10000000 'habilita todas las interrupciones por flanco descendente
intcon=%10010000 'habilita interrupciones e interrupcion externa RB0
L=0 'bandera L=0
A=0
B=0
Lcd_config(portc,7,6,5,4, portc, 0 , 1, 2)
lcd_cmd(lcd_cursor_off)
end sub
sub procedure interrupt
POrtd=INC(B)
INTCON.INTF=0
A=A+1
end sub
main:
init
LOOP:
byteTOSTR(A,valor)
lcd_cmd(lcd_clear)
LCD_OUT(1,1,valor)
delay_ms(500)
GOTO LOOP
end.
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
DIAGRAMA DE FLUJO
SIMULACION
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
Ejercicio Nº 2:
Interrupciones temporizadores
A LGO R IT M O
Entradas:
Señal de 0-5 vSalidas:
Datos en el LCD “UPS QUITO”.Proceso:
entrada de señal defino mis variables habilitación TODAS LAS Interrupciones. Flaco descendente. Defino mi prescaler en 1:16 Habilita mi interrupción Timer 0 Bandera L=0 Se presenta interrupción llama mi sub proceso Despliego en LCD “USP QUITO”
CODIGO
program InterrupcionTEMP
DIM L AS BYTE
dim A, B as byte
dim valor as string[6]
sub procudere init
TRISC=$0
TRISD=$0
TRISB=$0
OPTION_REG=%10000011
INTCON=%10100000
L=0
TMR0=92
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
A=0
B=0
Lcd_config(portc,7, 6, 5, 4,portc,0,1,2)
lcd_cmd(lcd_cursor_off)
end sub
sub procedure interrupt
INTCON.T0IF=0
IF
L=0
THEN TMR0=92
Portb.0=0
L=1
else
portb.0=1
L=0
TMR0=92
END IF
end sub
main:
init
LOOP:
LCD_cmd(lcd_clear)
LCD_OUT(1,1,"UPS QUITO")
delay_ms(500)
GOTO LOOP
END.
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
DIAGRAMA DE FLUJO
SIMULACION
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
Ejercicio Nº 3:
Mediante el uso de interrupciones del timer1 realizar un generador de onda cuadrada de periodo 1 ms
A LGO R IT M O
Entradas:
señal de entrada
Salidas:
señal cuadrada osciloscopio
Proceso:
Muestro mi señal de entrada Defino mis variables Habilito mi interrupción TMR1 Bandera L=0 Configuro mi LCD Verifico la bandera si L=0 o L=1 Verifico mi interrupción Despliego en el LCD en Valor Retardo
CODIGO
program timer1dim cnt as worddim B as bytesub procedure interruptInc(cnt)PIR1.TMR1IF = 0TMR1H = $FFTMR1L = $00end submain:PORTB = $00TRISB = 0T1CON = 1PIR1.TMR1IF = 0TMR1H = $80TMR1L = $00PIE1.TMR1IE = 1cnt = 0INTCON = $C0
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
while TRUEif (cnt = 3) thenPORTB = inc(B)cnt = 0end ifwendend.DIAGRAMA DE FLUJO
SIMULACION
Ejercicio Nº 4:
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
Conteo del timer0 en un periodo de tiempo
A LGO R IT M O
Entradas:
señal de entrada
Salidas: Visualiza conteo LCD.
Proceso: Defino mis variables Habilito interrupción Bandera L=0 Configuro mi LCD Verifico la bandera si L=0 o L=1 Conteo de mi timer Interno en Binario Despliego datos LCD Verifico mi interrupción Despliego en el LCD en Valor
CODIGO
program medidorfrecdim L as bytedim A,B as bytedim valor as string[6]sub procudere inittrisc=$0trisc=$0trisc=$0OPTION_REG=%10000011INTCON=%1001000'RBOL=0A=0B=0Lcd_config(portc, 7, 6, 5, 4, portc,0 ,1, 2)lcd_cmd(lcd_cursor_off)end subsub procedure interruptPORTD=INC(B)INTCON.INTF=0IFL=0thenTMR0=0
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
L=1ELSEL=0A=TMR0END IFend submain:initLOOP:byteTOSTR(A, valor)lcd_cmd(lcd_clear)LCD_OUT(1,1,valor)delay_ms(500)GOTO LOOP
DIAGRAMA DE FLUJO
SIMULACION
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
Ejercicio Nº 5:
Que cambios debo realizar para observar la frecuencia en el LCD
A LGO R IT M O
Entradas:
La señal del generador de frecuencia
Salidas:
En el LCD observamos la frecuencia de entrada en el pin 33Proceso:
Defino las variables L, A y B como byte y valor como string
Habilito el Port C y D como salida
Configuro el puerto B como entrada
Configuro el TMR0
Habilito todas las interrupciones por flanco descendente
Habilito interrupciones e interrupción externa
Bandera L=0
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
Configuro LCD
CODIGO
program interrupcion5dim L as bytedim a,b as bytedim fre as worddim valor as string[6]sub procudere inittrisc=0trisd=0trisb=$FFoption_reg=%10000111intcon=%10010000L=0a=0b=0lcd_config(portc,7,6,5,4,portc,0,1,2)lcd_cmd(lcd_cursor_off)end subsub procedure interruptportd=inc(b)INTCON.INTF=0if L=0 thenTMR0=0L=1elseL=0a=TMR0fre=(1000/a*19)end ifend submain:initLOOP:wordtostr(fre,valor)lcd_cmd(lcd_clear)lcd_out(1,1,valor)delay_ms(500)goto LOOPend.
DIAGRAMA DE FLUJO
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
SIMULACION
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
CONCLUSIONES
Es importante conocer la función de cada bit dentro de los registros utilizados para poder configurar los timers y las interrupciones.
Tener siempre presente que la interrupción va hacer utilizada para la operación que vamos a ejecutar al momento de llamarla sin importar lo que se esté ejecutando.
BIBLIOGRAFIA
Datashett pic16f877A
Hojas de la practica de laboratorio. Ing Oñate.
Manual de ayuda de microbasic para PIC.
Angulo Martínez Ignacio; Romero Yesa Susana; Angulo Usategui, José María Microcontroladores Pic. Diseño Practico de Aplicaciones. Segunda Parte: PIC16F87XX.
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I