Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
“SALESIANA”
FACULTAD DE INGENIERÍAS
CARRERA DE INGENIERÍA
ELECTRÓNICA
SISTEMAS MICROPROCEADOS I
INFORME Nº 7
SANTIAGO MALDONADO
ARMANDO ALOMOTO
JIMMY ANDRADE
6º ELECTRÓNICA “1”
UNIVERSIDAD POLITÉCNICA SALESIANA
SISTEMAS MICROPROCESADOS I
INFORME Nº 1
Tema: Interrupciones
Objetivo
Desarrollo
Para la práctica se utilizo el PIC 16F877A
ALGORITMO
• Definir la configuración
• Configurar las variables para el TMR0
• Habilito todas las interrupciones por flanco descendente
• Habilito interrupciones e interrupción externa
• Configurar el LCD
• End
CÓDIGO
program contadorcuatro
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
main:
init
loop:
bytetostr(A,valor)
lcd_cmd(lcd_clear)
lcd_out(1,1,valor)
delay_ms(500)
goto loop
end.
DIAGRAMA DE FLUJOS
INICIO
CONFIGURO LAS
VARIABLES
CONFIGURAR EL TMR0
OPTION_REG=%100000
INTERRUPCIÓN EXTERNA
END
SIMULACIÓN
RESULTADO
PROBLEMA Nº 2
Interrupción temporizadores.
ALGORITMO
• Definir la configuración
• Configurar las variables para el TMR0
• Habilito todas las interrupciones por flanco descendente
• Configurar el LCD
• End
CÓDIGO
program ejerciciodos
Dim L as byte
Dim A,B as byte
Dim valor as string[6]
trisc=$0
trisd=$0
trisb=$0
option_reg=%10000011
intcon=%10100000
L=0
TMR0=92
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
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.
DIAGRAMA DE FLUJOS
INICIO
CONFIGURO LAS
VARIABLES
CONFIGURAR EL TMR0
OPTION_REG=%100000
END
SIMULACIÓN
RESULTADO
PROBLEMA Nº 3
ALGORITMO
• Definir la configuración
• Configurar las variables para el TMR1
• Habilito el prescalar de 2
• Configurar el LCD
• End
2
0.5
program ejerciciotres
Dim L as byte
Dim A,B as byte
Dim valor as string[6]
sub procedure init
trisc=$0
trisd=$0
trisb=$0
option_reg=%10000000
intcon=%11000000
TMR1H = $FE ' initialize Timer1 register
TMR1L = $0C
pie1=1
t1con=$11
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
PIR1.TMR1IF = 0
TMR1H = $FE ' initialize Timer1 register
TMR1L = $0C
if L=0 then
portb.0=0
L=1
else
portb.0=1
L=0
PIR1.TMR1IF = 0 ' clear TMR1IF
end if
end sub
main:
init
loop:
lcd_cmd(lcd_clear)
lcd_out(1,1,"UPS QUITO")
delay_ms(500)
goto loop
end.
DIAGRAMA DE FLUJOS
INICIO
CONFIGURO LAS
VARIABLES
CONFIGURAR EL TMR1
END
SIMULACIÓN
RESULTADO
PROBLEMA Nº 4
ALGORITMO
• Definir la configuración
• Configurar las variables para el TMR0
• Habilito todas las interrupciones por flanco descendente
• Habilito interrupciones e interrupción externa
• Configurar el LCD
• End
CÓDIGO
program ejerciciocuatro
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=%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
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.
DIAGRAMA DE FLUJOS
INICIO
CONFIGURO LAS
VARIABLES
CONFIGURAR EL TMR0
OPTION_REG=%100011
END
SIMULACIÓN
RESULTADO
CONCLUSIONES
BIBLIOGRAFÍA
• http://www.disam.upm.es/~cybertech/Nacional/Documentos/Comp
onentes/PIC16F877a.pdf (17/12/2010)
• http://ww1.microchip.com/downloads/en/devicedoc/30292c.pdf
(17/12/2010)
• http://members.fortunecity.es/electronico/tutoriales/tutopic16f84/p
8.html (17/12/2010)
• Manual de ayuda de microbasic para PIC. (17/12/2010)