Universidad Politécnica Salesiana
Ingeniería Electrónica
Sistemas Microprocesados
INFORME DE LABORATORIO VII
INTERRUPCIONES
Integrantes:
Juan Villacís S.
Gabriela Chicaiza
Darío Valarezo
Ing. Luis Oñate
Periodo
Sept./2009-feb/2010
Tema: Interrupciones
Objetivo: elaborar programas para comprender el uso de interrupciones
Desarrollo de las Prácticas del laboratorio de Sistemas Microprocesador.
Ejercicio 1
Uso de interrupciones externa cero
Desarrollo del ejercicio
Determinar:
Entradas:
Señal de 0-5 v
Salidas:
Visulizar en lcd y Visualizar en led`s
Procesos:
o entrada de señal
o definó mis variables
o habilitacion de puerto B como entrada
o habilito mis Interrupciones
o Habilita interrupcion Externa
o Bandera L=0
o Verifica interupcion
o Ejecuta mi progrma
o Llama interupcion va al programa lo ejecuta
o Repite la interrupcion
o Despliega en el LCD
Diagrama de Flujo
Puerto B Entrada
Inicio
Habilito interrupción
Defino mis variables, L, A, valor Flanco descendente
Sub procudere init Habilito Interrupciones y
interrupción externa
Sub procedure
Bandera L=0
interrupt
PortD =inc (B)
Inicio lazo
Intcon .INTF=0
Byte TOSTR(A, Valor)
A=A+1
Lcd_cmd(lcd_clear
Despliego el valor
en el LCD
Retardo
Codificación:
program interuppciones
dim L as byte
dim A,B as byte
dim valor as string[6]
sub procedure init
trisc=$0
trisd=%0
trisb=$FF
option_reg=%10000000
intcon=%10010000
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 interrup
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.
Esquemático
Simulación
2.- Interrupción Temporizadores.
Desarrollo del ejercicio
Determinar:
Entradas:
Señal de 0-5 v
Salidas:
Datos en el LCD “UPS QUITO”.
Procesos:
o entrada de señal
o defino mis variables
o habilitacion TODAS LAS Interrupciones.flaco descendente.
o Defino mi prescaler en 1:16
o Habilita mi interrupcion Timer 0
o Bandera L=0
o Se presenta interrupcion llama mi sub procesa
o Despliego en LCD “USP QUITO”
Restardo
Diagrama de Flujo
Puerto B Entrada
Inicio
Habilito interrupción
Defino mis variables, L, A, valor TImer 0
Sub procudere init Habilito Interrupciones y
interrupción externa
Sub procedure
Bandera L=0
interrupt
INTCON=0
Inicio lazo
Limpio LCd L=0 TMR0=92
Salida UPS QUito Portb.0=0
Portb.0=1
Retardo L=1
L=0
TMR0=92
Codificación:
program interuppciones_1
dim L as byte
dim A,B as byte
dim valor as string[6]
sub procedure init
TrisC=$0
TrisD=$0
TrisB=$ff
Option_Reg=%10000011
intcon=%10100000
L=0
TMR0=92
A=0
B=0
Lcd_config(portc,7,6,5,4,portc,0,1,2)'congigura al Lcd
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.
Esquemático
Simulación
Simulación laboratorio Sistemas Microprocesados.
Ejercicio 3.-
Mediante el uso de la interrupción del timer 1 realizar un generador de onda cuadrada
de periodo 1ms
Determinar:
Entradas:
señal de entrada
Salidas:
señal cuadrada osciloscopio
Procesos: Muestro mi señal de entrada
Defino mis variables
Habilito mi interrupcion 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
Diagrama de Flujo
Puerto B Entrada
Inicio
Habilito interrupción
Defino mis variables, L, A, valor TImer 1
Sub procudere init Habilito Interrupciones y
interrupción externa
Sub procedure
Bandera L=0
interrupt
INTCON=0
Inicio lazo
Limpio LCd L=0 TMR0=92
Salida UPS QUito Portb.0=0
Portb.0=1
Retardo L=1
L=0
TMR0=92
Codificación:
Esquemático
Simulación
Ejercicio 4.-
Conteo del Timer en un periodo de tiempo.
Determinar:
Entradas:
Señal de Entrada
Salidas:
Visualiza conteo LCD.
Procesos:
Defino mis variables
Habilito mi interrupcion
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
Retardo
Diagrama de Flujo
Inicio Puerto B Entrada
Habilito interrupción
Defino mis variables, L, A, valor Flanco A.
Sub procudere init Habilito Interrupciones y
interrupción externa
Sub procedure
Bandera L=0
interrupt
INTCON=0
Inicio lazo
Limpio LCD conteo L=0 TMR0=92
Retardo Portb.0=0
Portb.0=1
L=1
L=0
TMR0=92
Codificación:
program interuppciones_4
dim L as byte
dim A,B as byte
dim valor as string[6]
sub procedure init
TrisC=$0
TrisD=$0
TrisB=$ff
Option_Reg=%10000000
intcon=%10010000
L=0
A=0
B=0
Lcd_config(portc,7,6,5,4,portc,0,1,2)'congigura al Lcd
lcd_cmd(Lcd_cursor_off)
end sub
sub procedure interrupt
PortD= inc(B)
intcon.intf=0
if L=0 then
TMR0=0
L=1
ELSE
L=0
A=TMR0
END IF
end sub
main:
init
Loop:
byteTostr(A,valor)
lcd_cmd(Lcd_clear)
Lcd_out(1,1,valor)
delay_ms(500)
goto loop
end.
Esquemático
Simulación
Que cambios de debe realizar para observar la frecuencia en el LCD
Solo se debe configurar bien el Puerto.
Conclusiones:
Tener en cuenta que interrupción va hacer utilizada para la operación que
vamos a ejecutar al momento de llamarla en la ejecución del proyecto.
Tener en cuenta cuando se configura las interrupciones y las salidas a
ocuparse
Recomendaciones:
Ver. Data shett del pic 16f877A