Beruflich Dokumente
Kultur Dokumente
Ejercicio 1
Uso de interrupciones externa cero.
Desarrollo
Proceso:
Declarar variables
Iniciar subrutina procudere init
Configurar los puertos C y D como salidas y el puerto B como entrada.
Configurar los registros Option_reg e Intcon.
Configurar el LCD.
Finalizar subrutina
Iniciar subrutina procedure interrupt.
Acumular en una variable el número de veces que se ejecuta la interrupción.
Finalizar subrutina
Transformar la variable byte a variable string
Visualizar en el LCD el valor de la variable string.
SISTEMAS MICROPROCESADOS I
Diagrama de flujos:
Inicio
Declarar Variables
Configurar puerto C y D
como salida y puerto B
como entrada.
Configurar el LCD.
End sub
Acumular a=a+1
End sub
Transformar variable
tipo byte a string
Visualizar variable
string en el LCD
End.
SISTEMAS MICROPROCESADOS I
Programa:
program interrupcion1
dim L as byte
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
portd=inc(b)
intcon.intf=0
a=a+1
end sub
main:
LOOP:
SISTEMAS MICROPROCESADOS I
bytetostr(a,valor)
lcd_cmd(lcd_clear)
lcd_out(1,1,valor)
delay_ms(500)
goto LOOP
end.
Esquemático:
Anexo:
SISTEMAS MICROPROCESADOS I
EJERCICIO 2
Interrupción Temporizadores.
Desarrollo
Proceso:
Declarar variables
Iniciar subrutina procudere init
Configurar los puertos B, C y D como salidas.
Configurar los registros Option_reg e Intcon.
Inicializar variables en 0 y TMR=en 92
Configurar el LCD.
Finalizar subrutina
Iniciar subrutina procedure interrupt.
Mediante la sentencia IF-ELSE hacer las comparaciones respectivas para obtener a la salida
una señal cuadrada.
Finalizar subrutina
Transformar la variable byte a variable string
Visualizar en el LCD “UPS QUITO”.
SISTEMAS MICROPROCESADOS I
Diagrama de Flujos:
Inicio
Declarar Variables
Configurar puerto B, C
y D como salida.
Configurar el LCD.
End sub
si
portb.0=0 y L=1
End sub
Transformar variable
byte a string
End.
SISTEMAS MICROPROCESADOS I
Programa:
trisc=0 portb.0=1
trisb=0 L=0
trisd=0 TMR0=92
option_reg=%10000011 end if
L=0 main:
TMR0=92 init
a=0 LOOP:
b=0 lcd_cmd(lcd_clear)
lcd_cmd(lcd_cursor_off) delay_ms(500)
INTCON.T0IF=0
SISTEMAS MICROPROCESADOS I
Esquemático:
Anexos:
SISTEMAS MICROPROCESADOS I
EJERCICIO 3
Mediante el uso de la interrupción del timer 1 realizar un generador de onda cuadrada de periodo
1ms.
Desarrollo
Proceso:
Declarar variables
Iniciar subrutina inicial
Configurar los puertos B como salidas.
Configurar los registros T1CON, PIE1 Y PIR1.
Inicializar variables en 0.
Configurar el LCD.
Finalizar subrutina
Iniciar subrutina Interrupción.
Mediante la sentencia IF-ELSE hacer las comparaciones respectivas para obtener a la salida
una señal cuadrada.
Finalizar subrutina.
Finalizar programa.
SISTEMAS MICROPROCESADOS I
Diagrama de Flujos:
Inicio
Declarar Variables
Configurar puerto B
como salida.
Configurar el LCD.
End sub
si
portb.0=0 y L=1
End sub
End.
SISTEMAS MICROPROCESADOS I
Programa:
program Timer1
dim B as byte
Inc(cnt)
TMR1H = $FF
TMR1L = $00
end sub
main:
TMR1L = $00
while TRUE
if (cnt = 3) then
PORTB = inc(B)
cnt = 0
SISTEMAS MICROPROCESADOS I
end if
wend
end.
Esquemático:
SISTEMAS MICROPROCESADOS I
Anexos:
SISTEMAS MICROPROCESADOS I
EJERCICIO 4
Desarrollo
Proceso:
Declarar variables
Iniciar subrutina procudere init
Configurar los puertos B, C y D como salidas.
Configurar los registros Option_reg e Intcon.
Inicializar variables en 0 y TMR en 0
Configurar el LCD.
Finalizar subrutina
Iniciar subrutina procedure interrupt.
Acumular en una variable el valor que tiene el Timer0 al momento de la interrupción.
Finalizar subrutina.
Transformar la variable byte a variable string.
Visualizar en el LCD el valor de la variable string.
SISTEMAS MICROPROCESADOS I
Diagrama de Flujos:
Inicio
Declarar Variables
Configurar puerto B, C
y D como salida.
Configurar el LCD.
End sub
si
portb.0=0 y L=1
End sub
Transformar variable
tipo byte a string
End.
SISTEMAS MICROPROCESADOS I
Programa:
program interrupcion4
dim L as byte
trisc=0
trisd=0
trisb=$FF
option_reg=%10000011
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
portd=inc(b)
INTCON.INTF=0
if L=0 then
TMR0=0
L=1
else
L=0
SISTEMAS MICROPROCESADOS I
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:
SISTEMAS MICROPROCESADOS I
Anexo:
EJERCICIO 5
Desarrollo
Proceso:
Declarar variables
Iniciar subrutina procudere init
Configurar los puertos B, C y D como salidas.
Configurar los registros Option_reg e Intcon.
Inicializar variables en 0 y TMR en 0
Configurar el LCD.
Finalizar subrutina
Iniciar subrutina procedure interrupt.
Acumular en una variable el valor que tiene el Timer0 al momento de la interrupción.
Utilizar la variable auxiliar fre para calcular la frecuencia de entrada.
Finalizar subrutina.
Transformar la variable fre byte a variable string.
Visualizar en el LCD el valor de la variable string.
SISTEMAS MICROPROCESADOS I
Diagrama de Flujos:
Inicio
Declarar Variables
Configurar puerto B, C
y D como salida.
Configurar el LCD.
End sub
si
portb.0=0 y L=1
End sub
Transformar variable
tipo byte a string
End.
SISTEMAS MICROPROCESADOS I
Programa:
program interrupcion5
dim L as byte
trisc=0
trisd=0
trisb=$FF
option_reg=%10000011
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
portd=inc(b)
INTCON.INTF=0
if L=0 then
TMR0=0
L=1
else
L=0
SISTEMAS MICROPROCESADOS I
a=TMR0
fre=(1000/a*19)
end if
end sub
main:
init
LOOP:
bytetostr(fre,valor)
lcd_cmd(lcd_clear)
lcd_out(1,1,valor)
delay_ms(500)
goto LOOP
end.
Esquemático:
SISTEMAS MICROPROCESADOS I
Anexo:
SISTEMAS MICROPROCESADOS I
Conclusiones:
Tener en cuenta 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 en el programa
principal.
Debemos tener presente los registros que nos permitirán configurar las interrupciones y
los pines que serán utilizados para esta ejecución.
Es importante conocer la función de cada bit dentro de los registros utilizados para poder
configurar los timers y las interrupciones.
Bibliografía:
Datashett pic16f877A
Angulo Martínez Ignacio; Romero Yesa Susana; Angulo Usategui, José María
Microcontroladores Pic. Diseño Practico de Aplicaciones. Segunda Parte: PIC16F87XX.