Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
PRACTICA #7
SISTEMAS MICROPROCESADOS I
INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA
TEMA INTERRUPCIONES
OBJETIVO
ELABORAR PROGRAMAS PARA COMPRENDER EL USO DE INTERRUPCIONES
Ejercicio Nº 1:
A LGO R IT M O
Entradas:
Señal de 0-5 v
Salidas:
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
TRISC=$0
TRISd=$0
A=0
B=0
Lcd_config(portc,7,6,5,4, portc, 0 , 1, 2)
lcd_cmd(lcd_cursor_off)
end sub
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
SISTEMAS MICROPROCESADOS I
ELECTRONICA
DIAGRAMA DE FLUJO
SIMULACION
INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA
Ejercicio Nº 2:
Interrupciones temporizadores
A LGO R IT M O
Entradas:
Señal de 0-5 v
Salidas:
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
TRISC=$0
TRISD=$0
TRISB=$0
OPTION_REG=%10000011
INTCON=%10100000
L=0
TMR0=92
INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA
A=0
B=0
Lcd_config(portc,7, 6, 5, 4,portc,0,1,2)
lcd_cmd(lcd_cursor_off)
end sub
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
SISTEMAS MICROPROCESADOS I
ELECTRONICA
DIAGRAMA DE FLUJO
SIMULACION
INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA
Ejercicio Nº 3:
A LGO R IT M O
Entradas:
señal de entrada
Salidas:
Proceso:
CODIGO
program timer1
dim cnt as word
dim B as byte
sub procedure interrupt
Inc(cnt)
PIR1.TMR1IF = 0
TMR1H = $FF
TMR1L = $00
end sub
main:
PORTB = $00
TRISB = 0
T1CON = 1
PIR1.TMR1IF = 0
TMR1H = $80
TMR1L = $00
PIE1.TMR1IE = 1
cnt = 0
INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA
INTCON = $C0
while TRUE
if (cnt = 3) then
PORTB = inc(B)
cnt = 0
end if
wend
end.
DIAGRAMA DE FLUJO
SIMULACION
INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA
Ejercicio Nº 4:
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 medidorfrec
dim L as byte
dim A,B as byte
dim valor as string[6]
sub procudere init
trisc=$0
trisc=$0
trisc=$0
OPTION_REG=%10000011
INTCON=%1001000
'RBO
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
IF
L=0
INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA
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
DIAGRAMA DE FLUJO
INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA
SIMULACION
Ejercicio Nº 5:
A LGO R IT M O
Entradas:
Salidas:
Configuro el TMR0
Bandera L=0
Configuro LCD
CODIGO
program interrupcion5
dim L as byte
dim a,b as byte
dim fre as word
dim valor as string[6]
sub procudere init
trisc=0
trisd=0
trisb=$FF
option_reg=%10000111
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 interrupt
portd=inc(b)
INTCON.INTF=0
if L=0 then
TMR0=0
L=1
else
L=0
a=TMR0
fre=(1000/a*19)
end if
end sub
main:
init
LOOP:
wordtostr(fre,valor)
lcd_cmd(lcd_clear)
lcd_out(1,1,valor)
delay_ms(500)
goto LOOP
end.
INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA
DIAGRAMA DE FLUJO
INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA
SIMULACION
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
Angulo Martínez Ignacio; Romero Yesa Susana; Angulo Usategui, José María
Microcontroladores Pic. Diseño Practico de Aplicaciones. Segunda Parte: PIC16F87XX.
INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA
INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA
INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA
INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA
INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA
INGENIERIA
SISTEMAS MICROPROCESADOS I
ELECTRONICA