El documento presenta un laboratorio sobre la configuración de puertos, bucles y saltos en un microcontrolador PIC16F877. El objetivo es implementar un sistema para simular una luz intermitente controlada por las entradas RA0 y RA1 según diferentes patrones. Se describe el algoritmo, diagrama de flujo y tabla de etiquetas para el programa, el cual es codificado, simulado en MPLAB y Proteus, y cumple con controlar el LED según la tabla de verdad presentada.
Microcontroladores - Configuración de puertos, bucles y saltos
1. INGENIERIA ELECTRONICA
LABORATORIO DE MIICROCONTROLADORES Y MICROPROGRAMACIÓN
1
CONFIGURACIÓN DE PUERTOS, BUCLES Y SALTOS
I. OBJETIVOS.
-Configurar los puertos de I/O del microcontrolador como I/O digitales.
-Realizar programas que manejen I/O digitales del microcontrolador.
-Emplear bucles y saltos en la construcción de programas para el microcontrolador.
II. ESQUEMA A IMPLEMENTAR.
uC
16F877
RA0
RA1 LED
2. INGENIERIA ELECTRONICA
LABORATORIO DE MIICROCONTROLADORES Y MICROPROGRAMACIÓN
2
III. ESPECIFICACIONES
Implementar un sistema, según la figura anterior, para simular una luz
intermitente que será visualizada a través del diodo LED conectado a una línea de
salida del microcontrolador. Dicha salida se controlara de acuerdo al estado de
RA0 y RA1 según la siguiente tabla de verdad.
RA0 RA1 RA5
0 0 El LED está encendido todo el tiempo.
0 1
El LED está encendido 1.25 segundos y apagado 0.5
segundos repitiéndose el ciclo.
1 0
El LED está encendido 0.5 segundos y apagado 1.25
segundos repitiéndose el ciclo
1 1 El LED está apagado todo el tiempo.
Elaborar el algoritmo y el diagrama de flujo del programa que soluciona el
problema planteado. Presentar una tabla donde se especifique los recursos
empleados así como las variables, etiquetas, etc. Utilizadas en el programa. Los
tiempos de encendido y apagado del LED deberán ser generados por retardos.
Realizar y presentar los cálculos necesarios para conseguir los tiempos requeridos
por el problema.
ALGORITMO:
1. Declaramos nuestras variables
2. Accedemos al banco uno
3. Configuramos las entradas y salidas como digitales
4. Accedemos al banco cero
5. Preguntamos si la entrada RA0 es cero, si lo es o no se saltara a la subrutina
correspondiente
3. INGENIERIA ELECTRONICA
LABORATORIO DE MIICROCONTROLADORES Y MICROPROGRAMACIÓN
3
6. De la misma forma realizamos estos pasos para la entrada RA1
7. Según sean los valores de RA0 y RA1, llamamos a las subrutinas correspondientes para
producir los retardos correspondientes y así cumplir lo que nos indica la tabla anterior.
Si en las entradas
RA0 =0, RA1 =0 ; entonces RA5 debe estar encendido siempre
Pero si RA0 =0, RA1 =1 ; entonces RA5 es “1” por 1,25s y “0” por 0,5s
Pero si RA0 =1, RA1 =0 ; entonces RA5 es “1” por 0,5s y “0” por 1,25s
Pero si RA0 =1, RA1 =1 ; entonces RA5 está apagado siempre
8. Finalmente, sea cual sea el caso el ciclo se repite infinitamente.
DIAGRAMA DE FLUJO:
NO NO
INICIO
RA0, RA1 = Entradas
RA5 = Salida
RA0=0 RA5 = OFF
RA5=ON, 0.5s
RA5=0FF, 1.25s
INICIO
RA1=0
RA1=0
RA5 = ON
RA5=ON, 1.25s
RA5=0FF, 0.5s
SI SI
SI
NO
4. INGENIERIA ELECTRONICA
LABORATORIO DE MIICROCONTROLADORES Y MICROPROGRAMACIÓN
4
TABLA DE ETIQUETAS:
contador1
contador2
contador3
Creamos registros que nos ayudaran a realizar los retardos necesarios
según sea el caso.
Inicio
Dentro de esta etiqueta configuramos las entradas y salidas que
usaremos en el programa.
Principal
Inicio del programa principal, donde se realiza la primera pregunta si
RA0=0, y también se configura el LED para que este encendido todo el
tiempo
RA1Es_1
En esta etiqueta hacemos que el LED este encendido 1.25seg y apagado
0.5seg
ES_RA0_1 En esta etiqueta hacemos que el LED este apagado todo el tiempo.
RA1Es_0
En esta etiqueta hacemos que el LED este encendido 0.5seg y apagado
1.25seg
retardo_0.5s Aquí creamos el retardo de 0.5 segundos
retardo_1.25s Aquí creamos el retardo de 1.25 segundos
SALIDA Lo dirigimos hacia la etiqueta "Principal" para así repetir el ciclo
Codificar el programa que soluciona el problema y comentar todas las líneas (obligatorias).
Separar las partes del programa con comentarios pertinentes (obligatorio).
list p=16f877 ; tipo de procesador
#INCLUDE<P16F877.INC> ; archivo INC para reconocer palabras reservadas
contador1 equ 0x20 ; declaramos nuestras variables de apoyo
contador2 equ 0x21 ;
contador3 equ 0x22 ;
org 0;
Inicio
banksel TRISA ; Acceso al banco 1
movlw b'00000011' ; configuramos las entradas y salidas
movwf TRISA ; como digitales
movlw 0x06 ;
5. INGENIERIA ELECTRONICA
LABORATORIO DE MIICROCONTROLADORES Y MICROPROGRAMACIÓN
5
movwf ADCON1 ;
banksel PORTA ; Acceso al banco 0
Principal
btfsc PORTA,0 ; ¿RA0 es 0 ??
goto ES_RA0_1 ; No, entonces testear si RA0 es 1
btfsc PORTA,1 ; Si, ¿RA1 es 0?
goto RA1Es_1 ; No, entonces es 1
bsf PORTA,5 ; Si, entonces encender el LED
goto SALIDA ; todo el tiempo
RA1Es_1
bsf PORTA,5 ; Encender el LED durante
call retardo_1.25s ; 1.25s y luego
bcf PORTA,5 ; apagar el LED
call retardo_0.5s ; durante 0.5s
goto SALIDA ; ir a SALIDA
ES_RA0_1
btfss PORTA,1 ; ¿RA1 es 1?
goto RA1Es_0 ; No, entonces es 0
bcf PORTA,5 ; Si, entonces apagar el LED
goto SALIDA ; todo el tiempo
RA1Es_0
bsf PORTA,5 ; Encender el LED
call retardo_0.5s ; durante 0.5s y luego
bcf PORTA,5 ; apagar el LED
call retardo_1.25s ; durante 1.25s
goto SALIDA ;
SALIDA
goto Principal ; ir a principal
; Subrutinas para los retardos de 1.25s y 0.5s
retardo_0.5s MOVLW d'6' ; 6 a W
6. INGENIERIA ELECTRONICA
LABORATORIO DE MIICROCONTROLADORES Y MICROPROGRAMACIÓN
6
MOVWF contador1 ; 6 a contador1
ciclo13 MOVLW d'186' ; 186 a W
MOVWF contador2 ; 186 a contador2
ciclo12 MOVLW d'148' ; 148 a W
MOVWF contador3 ; 148 a contador3
ciclo11 DECFSZ contador3 ; bucle interior
GOTO ciclo11 ; ir a ciclo11
DECFSZ contador2 ; bucle medio
GOTO ciclo12 ; ir a ciclo12
DECFSZ contador1 ; bucle exterior
GOTO ciclo13 ; ir a ciclo13
NOP ; generamos un ciclo de maquina
NOP ;
NOP ;
RETURN ; retorno
retardo_1.25s MOVLW d'15' ; 15 a W
MOVWF contador1 ; 15 a contador1
ciclo23 MOVLW d'186' ; 186 a W
MOVWF contador2 ; 186 a contador2
ciclo22 MOVLW d'148' ; 48 a W
MOVWF contador3 ; 48 a contador3
ciclo21 DECFSZ contador3 ; bucle interior
GOTO ciclo21 ; ir a ciclo21
DECFSZ contador2 ; bucle medio
GOTO ciclo22 ; ir a ciclo22
DECFSZ contador1 ; bucle exterior
GOTO ciclo23 ; ir a ciclo23
return
END
Simular el programa en MPLAB. Agregue las variables necesarias para poder observar los
cambios de valor de las variables y verificar los resultados.
Implementar el circuito solución en PROTEUS y “quemar” el programa desarrollado en el
microcontrolador, luego simular y verificar los resultados.
7. INGENIERIA ELECTRONICA
LABORATORIO DE MIICROCONTROLADORES Y MICROPROGRAMACIÓN
7
CASO 1: (RA0=0 Y RA1=0, LED ENCENDIDO TODO EL TIEMPO)
CASO 4: (RA0=1 Y RA1=1, LED APAGADO TODO EL TIEMPO)
8. INGENIERIA ELECTRONICA
LABORATORIO DE MIICROCONTROLADORES Y MICROPROGRAMACIÓN
8
IV. INDICACIONES.
Elaborar un informe detallado del trabajo desarrollado y las conclusiones
obtenidas y presentar según la fecha y hora indicadas en formato impreso y digital
(CD conteniendo el informe (formato word), el programa (proyecto) MPLAB, el
circuito hecho en PROTEUS). Colocar este formato como caratula del informe
consignando el número de grupo y los integrantes del mismo.
V. CONCLUSIONES (Realice al menos 5 conclusiones respecto a la práctica)
1. Aprendimos a configurar las puertas de entradas del PIC tanto como entradas
y/o salidas digitales.
2. Logramos realizar un programa para manejar I/O digitales de nuestro
microcontrolador.
3. Al programar el Microcontrolador usado pudimos observar que las puertas que a
la vez se usan como entradas analógicas debemos de deshabilitar el modo
analógico (ADCON1 0x06), para que sean entradas digitales.
4. Se pudo hacer uso de unos retardos para controlar el encendido y apagado del
LED, lo cual nos enseñó a hacer los cálculos necesarios para conseguir un tiempo
requerido de retardo y así poder controlar el LED.
5. Constantemente usamos bucles en nuestro programa.
6. Recordar que cuando se hace un llamado a una subrutina, en la codificación de
la subrutina, tal cual se hizo para los retardos, no olvidar regresar con RETURN.
9. INGENIERIA ELECTRONICA
LABORATORIO DE MIICROCONTROLADORES Y MICROPROGRAMACIÓN
9
VI. BIBLIOGRAFÍA
(Consigne la bibliografía utilizada por usted para el desarrollo de la práctica).
- MICROCONTROLADORES PIC16F877 – DESARROLLO DE PROYECTOS 2da Edicion,
ENRIQUE PALACIOS M.
- DATASHEET PIC 16F877A
- CURSO: MICROCONTROLADORES Y MICROPROGRAMACION –CLACES PRACTICAS.
ING. WILDOR FERREL SERRUTO, 2011