Vous êtes sur la page 1sur 5

ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA

INGENIERIA EN COMUNICACIONES Y ELECTRONICA


ACADEMIA DE COMPUTACION MATERIA: MICROPROCESADORES
PROF: JOSE LUIS BRAVO LEON

ALUMNO: FIRMA:

FECHA DE
ENTREGA:

PRACTICA No. 8

Interrupciones.

OBJETIVO: Manejar la interrupción externa INT0.

EQUIPO Y MATERIAL:

• Computadora personal • Transistor Darlington


• Transmisor IR • Módulo de indicadores de 7 segmentos
• Receptor IR • 1 dip switch
• Tarjeta del microcontrolador 18F4550 • osciloscopio
• Motor de CD

DESARROLLO:

1.- Arme el siguiente circuito.

+
1

VCC
+

VCC
A
-
2

RB7 RA0
RB6 RA1
RB5 RA2
RB4 RA3
RB3 RA4
RB2 RA5
VCC RB1 RA6
RB0
MCU

RD0 D0
RD1 D1
RD2 D2
RD3 D3
RD4
RD5 D4
RD6 D5
RD7 D6
D7

PIC18F4550
2.- Elabore un programa que encienda un motor conectado en la línea RA1 del puerto PORTA y cuya
velocidad este controlada a través de los cuatro bits más significativos del puerto PORTB.
El número de vueltas se desplegará a través de dos indicadores numéricos conectados en los ocho bits del
puerto PORTD.

El sistema contemplará la siguiente estructura:


2.1.- Un programa principal encargado de manejar las siguientes subrutinas:
a) Cpuertos.- para la configuración de puertos, interrupción y el temporizador.
b) LEER.- para la lectura de parámetros de velocidad del motor.
c) PWM.- para la generar la señal PWM
d) UNmseg.- para generar intervalos de un milisegundo utilizando el TMR0

2.2.- Una rutina de servicio de interrupción que se ejecutará al momento en que el sistema
detecte un pulso en la línea de interrupción INT0. El pulso es generado cada vez que el motor
realiza una vuelta completa.

Los diagramas de flujo propuestos se muestran a continuación:

Programa principal:
INICIO
Hace el llamado a la subrutina encargada de la programación
de puertos.
Rnv  0
Declara la variable Rnv para el despliegue de la cuenta de
vueltas del motor. Cpuertos

Hace llamado a las subrutinas LEER y PWM


LEER

Cpuertos PWM

ADCON1  0X0F

TRISA  0X00

TRISB  0XFF
Subrutina Cpuertos:
TRISD  0X00
Encargada de la configuración de puertos y la habilitación
de la interrupción INT0.
INTCON  0X90
PORTA: ocho líneas de salida.
PORTB: ocho líneas de entrada
RETURN PORTD: ocho líneas de salida
INTCON: Habilitación de la Interrupción INT0
LEER Subrutina LEER:

Lee los cuatro bits más significativos


W  PORTB del Puerto PORTB y a partir del dato
leído, establece en los registros RL y
RH la cantidad de milisegundos en
PORTA.1 0 W  W ● 0XF0
estado bajo y en estado alto para la
modulación de ancho de pulso.
SI
ZF = 1

NO
RH  W

W  RH RH  ..RH

W  0X10 - W

RL  W RETURN

PWM

R6  RH

PORTA.1  1

Gtime

R6  RL

Subrutina PWM. PORTA.1  0

Genera la modulación de ancho de pulso empleando los


Gtime
valores contenidos en los registros RH y RL para
determinar el tiempo en estado alto y en estado bajo.

Hace uso de la subrutina Gtime enviando los RETURN


milisegundos de espera a través del registro R6.
Subrutina Gtime
Gtime
Configura el timer TMR0 para un tiempo de
Rtcon  0x88 un milisegundo y genera un ciclo de espera
cuya duración depende del valor
almacenado en R6.
Rth  0xd1

Rtl  0x20

TMR0

R6  R6 - 1

NO
ZF = 1

SI

RETURN

Subrutina TMR0 TMR0

Emplea el temporizador TMR0. Toma los valores


TMR0H  Rth
previamente establecidos en los registros Rth, Rtl y
Rtcon para generar un tiempo de espera establecido
en T16ms. TMR0L  Rtl

Antes de regresar al programa de donde fue llamada,


se desactiva la bandera TMR0IF y el temporizador por T0CON  Rtcon
medio del bit TMR0ON
NO
TMR0IF = 1

SI
TMR0IF  0

TMR0ON  0

RETURN
Vector de INTERRUPCION:
Establece la ejecución de la rutina de servicio CUENTA RSI
para la interrupción INTO.

CUENTA

CUENTA

W  Rnv + 1

Rnv  Wda

PORTD  Rnv
Rutina de Servicio Cuenta.

INT0IF  0 Es ejecutada al aparecer un pulso en la línea de


interrupción INT0.
Se encarga de incrementar el registro Rnv que
RETFIE contiene el número de vueltas.

El contenido del registro Rnv es desplegado en


código BCD en el registro PORTD.

Al término de la rutina de servicio es puesta en


cero la bandera de interrupción INT0IF.

CONCLUSIONES

Vous aimerez peut-être aussi