Sie sind auf Seite 1von 24

SISTEMAS MICROPROCESADOS I

UNIVERSIDAD POLITECNICA SALESIANA


INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
INTEGRANTES:
OSCAR AYALA
ANDRES VALDIVIESO
INFORME DE LABORATORIO
INTERRUPCIONES
SISTEMAS MICROPROCESADOS I

Objetivo: Elaborar programas para comprender el uso de interrupciones.


.

Ejercicio 1
Uso de interrupciones externa cero.

Desarrollo

Entradas: Señal de 0-5 v

Salidas: Visualizar en LCD y Visualizar en led`s.

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

Sub Procudere init

Configurar puerto C y D
como salida y puerto B
como entrada.

Configurar los registros


option_reg e intcon.

Configurar el LCD.

End sub

Sub Procedure interrupt

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

dim a,b as byte

dim valor as string[6]

sub procudere 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 interrupt

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

Entradas: Señal de 0-5 v

Salidas: Datos en el LCD “UPS QUITO”.

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

Sub Procudere init

Configurar puerto B, C
y D como salida.

Configurar los registros


option_reg e intcon.

Configurar el LCD.

End sub

Sub Procedure interrupt

Si L=0 portb.0=1 y L=0


no

si

portb.0=0 y L=1

End sub

Transformar variable
byte a string

Visualizar “UPS QUITO”

End.
SISTEMAS MICROPROCESADOS I
Programa:

program interrupcion2 if L=0 then

dim L as byte TMR0=92

dim a,b as byte portb.0=0

dim valor as string[6] L=1

sub procudere init else

trisc=0 portb.0=1

trisb=0 L=0

trisd=0 TMR0=92

option_reg=%10000011 end if

intcon=%10100000 end sub

L=0 main:

TMR0=92 init

a=0 LOOP:

b=0 lcd_cmd(lcd_clear)

lcd_config(portc,7,6,5,4,portc,0,1,2) lcd_out(1,1,"UPS QUITO")

lcd_cmd(lcd_cursor_off) delay_ms(500)

end sub goto LOOP

sub procedure interrupt end.

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

Entradas: señal de entrada

Salidas: señal cuadrada osciloscopio

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

Sub Procudere init

Configurar puerto B
como salida.

Configurar los registros


T1CON, PIE1 Y PIR1.

Configurar el LCD.

End sub

Sub Procedure interrupt

Si L=0 portb.0=1 y L=0


no

si

portb.0=0 y L=1

End sub

End.
SISTEMAS MICROPROCESADOS I

Programa:

program Timer1

dim cnt as word

dim B as byte

sub procedure interrupt

Inc(cnt)

PIR1.TMR1IF = 0 ' clear TMR1IF

TMR1H = $FF

TMR1L = $00

end sub

main:

PORTB = $00 ' initialize PORTB

TRISB = 0 ' PORTB is output

T1CON = 1 ' timer1 settings

PIR1.TMR1IF = 0 ' clear TMR1IF

TMR1H = $80 ' initialize Timer1 register

TMR1L = $00

PIE1.TMR1IE = 1 ' enable Timer1 interrupt

cnt = 0 ' initialize cnt

INTCON = $C0 ' set GIE, PEIE

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

Conteo del Timer en un periodo de tiempo.

Desarrollo

Entradas: Señal de Entrada

Salidas: Visualiza conteo LCD.

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

Sub Procudere init

Configurar puerto B, C
y D como salida.

Configurar los registros


option_reg e intcon.

Configurar el LCD.

End sub

Sub Procedure interrupt

Si L=0 portb.0=1 y L=0


no

si

portb.0=0 y L=1

End sub

Transformar variable
tipo byte a string

Visualizar variable String

End.
SISTEMAS MICROPROCESADOS I
Programa:

program interrupcion4

dim L as byte

dim a,b as byte

dim valor as string[6]

sub procudere init

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

sub procedure interrupt

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

Que cambios de debe realizar para observar la frecuencia en el LCD.

Desarrollo

Entradas: Señal de Entrada

Salidas: Visualiza conteo LCD.

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

Sub Procudere init

Configurar puerto B, C
y D como salida.

Configurar los registros


option_reg e intcon.

Configurar el LCD.

End sub

Sub Procedure interrupt

Si L=0 portb.0=1 y L=0


no

si

portb.0=0 y L=1

End sub

Transformar variable
tipo byte a string

Visualizar variable String

End.
SISTEMAS MICROPROCESADOS I
Programa:

program interrupcion5

dim L as byte

dim a,b,fre as byte

dim valor as string[6]

sub procudere init

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

sub procedure interrupt

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

 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.

Das könnte Ihnen auch gefallen