practica#7 interrupciones

25
UNIVERSIDAD POLITECNICA SALESIANA PRACTICA #7 SISTEMAS MICROPROCESADOS I

Upload: carlitosvoley

Post on 18-Nov-2014

155 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: PRACTICA#7 INTERRUPCIONES

UNIVERSIDAD POLITECNICA SALESIANA

PRACTICA #7

SISTEMAS MICROPROCESADOS I

Page 2: PRACTICA#7 INTERRUPCIONES

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

TEMA INTERRUPCIONES

OBJETIVOELABORAR PROGRAMAS PARA COMPRENDER EL USO DE INTERRUPCIONES

Ejercicio Nº 1:

Uso de la interrupción externa

A LGO R IT M O

Entradas:

Señal de 0-5 vSalidas:

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

dim valor as string[6]

sub procudere init

Page 3: PRACTICA#7 INTERRUPCIONES

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

TRISC=$0

TRISd=$0

trisb=$FF 'Ouerto B como entradas

OPTION_REG=%10000000 'habilita todas las interrupciones por flanco descendente

intcon=%10010000 'habilita interrupciones e interrupcion externa RB0

L=0 'bandera 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:

init

LOOP:

byteTOSTR(A,valor)

lcd_cmd(lcd_clear)

LCD_OUT(1,1,valor)

delay_ms(500)

GOTO LOOP

end.

Page 4: PRACTICA#7 INTERRUPCIONES

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

DIAGRAMA DE FLUJO

SIMULACION

Page 5: PRACTICA#7 INTERRUPCIONES

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

Ejercicio Nº 2:

Interrupciones temporizadores

A LGO R IT M O

Entradas:

Señal de 0-5 vSalidas:

Datos en el LCD “UPS QUITO”.Proceso:

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

dim valor as string[6]

sub procudere init

TRISC=$0

TRISD=$0

TRISB=$0

OPTION_REG=%10000011

INTCON=%10100000

L=0

TMR0=92

Page 6: PRACTICA#7 INTERRUPCIONES

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

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

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.

Page 7: PRACTICA#7 INTERRUPCIONES

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

DIAGRAMA DE FLUJO

SIMULACION

Page 8: PRACTICA#7 INTERRUPCIONES

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

Ejercicio Nº 3:

Mediante el uso de interrupciones del timer1 realizar un generador de onda cuadrada de periodo 1 ms

A LGO R IT M O

Entradas:

señal de entrada

Salidas:

señal cuadrada osciloscopio

Proceso:

Muestro mi señal de entrada Defino mis variables Habilito mi interrupción 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

CODIGO

program timer1dim cnt as worddim B as bytesub procedure interruptInc(cnt)PIR1.TMR1IF = 0TMR1H = $FFTMR1L = $00end submain:PORTB = $00TRISB = 0T1CON = 1PIR1.TMR1IF = 0TMR1H = $80TMR1L = $00PIE1.TMR1IE = 1cnt = 0INTCON = $C0

Page 9: PRACTICA#7 INTERRUPCIONES

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

while TRUEif (cnt = 3) thenPORTB = inc(B)cnt = 0end ifwendend.DIAGRAMA DE FLUJO

SIMULACION

Ejercicio Nº 4:

Page 10: PRACTICA#7 INTERRUPCIONES

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

Conteo del timer0 en un periodo de tiempo

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 medidorfrecdim L as bytedim A,B as bytedim valor as string[6]sub procudere inittrisc=$0trisc=$0trisc=$0OPTION_REG=%10000011INTCON=%1001000'RBOL=0A=0B=0Lcd_config(portc, 7, 6, 5, 4, portc,0 ,1, 2)lcd_cmd(lcd_cursor_off)end subsub procedure interruptPORTD=INC(B)INTCON.INTF=0IFL=0thenTMR0=0

Page 11: PRACTICA#7 INTERRUPCIONES

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

L=1ELSEL=0A=TMR0END IFend submain:initLOOP:byteTOSTR(A, valor)lcd_cmd(lcd_clear)LCD_OUT(1,1,valor)delay_ms(500)GOTO LOOP

DIAGRAMA DE FLUJO

SIMULACION

Page 12: PRACTICA#7 INTERRUPCIONES

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

Ejercicio Nº 5:

Que cambios debo realizar para observar la frecuencia en el LCD

A LGO R IT M O

Entradas:

La señal del generador de frecuencia

Salidas:

En el LCD observamos la frecuencia de entrada en el pin 33Proceso:

Defino las variables L, A y B como byte y valor como string

Habilito el Port C y D como salida

Configuro el puerto B como entrada

Configuro el TMR0

Habilito todas las interrupciones por flanco descendente

Habilito interrupciones e interrupción externa

Bandera L=0

Page 13: PRACTICA#7 INTERRUPCIONES

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

Configuro LCD

CODIGO

program interrupcion5dim L as bytedim a,b as bytedim fre as worddim valor as string[6]sub procudere inittrisc=0trisd=0trisb=$FFoption_reg=%10000111intcon=%10010000L=0a=0b=0lcd_config(portc,7,6,5,4,portc,0,1,2)lcd_cmd(lcd_cursor_off)end subsub procedure interruptportd=inc(b)INTCON.INTF=0if L=0 thenTMR0=0L=1elseL=0a=TMR0fre=(1000/a*19)end ifend submain:initLOOP:wordtostr(fre,valor)lcd_cmd(lcd_clear)lcd_out(1,1,valor)delay_ms(500)goto LOOPend.

DIAGRAMA DE FLUJO

Page 14: PRACTICA#7 INTERRUPCIONES

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

SIMULACION

Page 15: PRACTICA#7 INTERRUPCIONES

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

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

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.

Page 16: PRACTICA#7 INTERRUPCIONES

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

Page 17: PRACTICA#7 INTERRUPCIONES

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

Page 18: PRACTICA#7 INTERRUPCIONES

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

Page 19: PRACTICA#7 INTERRUPCIONES

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

Page 20: PRACTICA#7 INTERRUPCIONES

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I

Page 21: PRACTICA#7 INTERRUPCIONES

INGENIERIA ELECTRONICA

SISTEMAS MICROPROCESADOS I