View
217
Download
0
Embed Size (px)
DESCRIPTION
Practica sobre encendido de LED's usando un switch usando los puertos del microcontrolador 16F887
Citation preview
ESCUELA SUPERIOR POLITÉCNICA DELLITORAL
FIEC
Laboratorio de Micro-controladores
Práctica I
Encendido de leds
Alumno/aPaul Andres Aguilar
Ashley Avilés Bastidas
Paralelo: 3Grupo: 1
Fecha de presentación: 28/05/15
2015 – 1° TÉRMINO
1.- Enunciado del proyecto.
Esta práctica está enfocada en la familiarización del entorno y funcionamiento de MPLAB Y PROTEUS, es decir desde crear un proyecto desde cero hasta la ejecución del mismo (MPLAB) y la simulación del mismo (PROTEUS), lo cual se realizará con un programa que permite el encendido de leds en el Puerto B mediante el cambio de un interruptor en el Puerto A.
2.- Diagramas de bloques.
INTERRUPTOR
PIC 16F887
LEDS: ON
3.- Diagrama de flujo funcional del programa principal y de las subrutinas.
Programa principal.
0
Subrutinas
INICIO
INTERRUPTOR
INICIO
BIT ‘0’ DE PORTA
LEDS ON: FORMA
B'10101010'
LEDS ON: FORMA
B'01010101'
1
0
CONFIGURACIÓN DE PUERTOS
LOOP: LEDS ON FORMA 1
NUEVO_VALOR: LEDS ON FORMA 2
1
4.- Descripción del algoritmo o estrategia utilizada.
1. El programa empieza con la configuración del Puerto B como salida
2. El desarrollo del programa consta de dos lazos LOOP y NUEVO_VALOR, siendo LOOP el lazo de inicio. El desarrollo del lazo LOOP estará regido por una condición de bit (BTFSS) en el bit ‘0’ del registro PORTA para ejecutar la siguiente línea de código. Si en el bit ‘0’ de PORTA se encuentra un ‘1’, el programa saltará una instrucción y continuará en el lazo presente con la siguiente instrucción, caso contrario el programa se dirigirá hacia NUEVO_VALOR, en donde continuará con su respectiva ejecución.
3.- En cada lazo se da un orden específico para el encendido de los leds. En el lazo LOOP el orden es B’10101010’ (notación binaria), mientras en el lazo NUEVO_VALOR el orden es B’01010101’. Este cambio se da al abrir o cerrar el interruptor, ya q este está conectado al puerto A.
5.- Listado del programa fuente en el lenguaje ensamblador.
;********************************************************************
; LECTURA DE SWITCH EN PORTA Y ENCENDIDO DE LEDS EN PORTB ;********************************************************************
; NOMBRE: p1_led.asm
; FECHA: 26/05/2010
; VERSION: 1.00
; PROGRAMADOR:
;********************************************************************
; DESCRIPCION:
; Se coloca un interruptor en RA0. Cuando RA0=1 en el Puerto B; deberá leerse el valor hexadecimal AA y cuando RA0=0 deberá; cambiar al valor hexadecimal 55.;********************************************************************
LIST p=16F887 ; Tipo de microcontroladorINCLUDE P16F887.INC ; Define los SFRs y bits del
; P16F887
CONFIG _CONFIG1, _CP_OFF&_WDT_OFF&_XT_OSC; Ingresa parámetros de; Configuración
BTFSS GOTO MOVLW
PORTA,0NUEVO_VALORB'10101010'
; prueba del bit 0 del puerto
; mueve 0xAA al registro WMOVWFGOTO
PORTBLOOP
; pasa el valor al puerto B
MOVLW MOVWF GOTO
B'01010101' PORTBLOOP
; mueve 0x55 al registro W; pasa el valor al puerto B
END; fin del programa
errorlevel -302 ; Deshabilita mensajes de; Advertencia por cambio; Bancos
;*********************************************************************
; INICIO DEL PROGRAMA
ORG 0x00 ; Comienzo del programa (Vector de Reset)
; SETEO DE PUERTOS
BANKSEL TRISB ; selecciona el banco conteniendo TRISBCLRF TRISB ; puerto B configurado como salidaBANKSEL ANSELCLRF ANSEL ; configura puertos con entradas digitalesCLRF ANSELH ; configura puertos con entradas digitalesBANKSEL PORTB ; selecciona el puerto B como salidaCLRF PORTBCLRF PORTA
; DESARROLLO DEL PROGRAMA
LOOP
NUEVO_VALOR
6.- Copia impresa del circuito armado en PROTEUS para la simulación en el momento de su ejecución.
Interruptor cerrado:
Interruptor abierto:
7.- Conclusiones.
1. La familiarización con el software MPLAB se complementó con lo aprendido en clase, con respecto al funcionamiento del programa y el uso de instrucciones. Además de aprender a utilizar distintos tipos de ventanas para ver el cambio de los registros usados y así tener una idea más clara del cómo funciona el micro controlador.
2. Con respecto al software PROTEUS, la familiarización fue por partes puesto que uno de nosotros tenía experiencia en su uso; sin embargo los recursos investigativos de internet resultaron útiles para comprender el manejo simultáneo de ambos software. La implementación del código al micro PIC 16F887 solo es posible si el código ha sido compilado y probado, además de que la simulación es en tiempo real y permite comprobar de una manera más real el funcionamiento del circuito simulado.
8.- Recomendaciones.
Siempre es recomendable primero crear el archivo .asm antes de crear el proyecto, así cuando se crea el proyecto se puede incluir de una vez.
Escribir la extensión (.asm) al momento de crear el archivo para que el proyecto pueda reconocerlo como un documento de código ensamblador.
Cerciorarse de elegir el PIC correcto al principio de la creación del proyecto para no tener inconvenientes cuando se trate de asignar valores a los pines, además recordemos que en el encabezado del código se incluye la librería del PIC deseado y si estos no coinciden habrá errores cuando se lo quiera simular.
ANEXO DE RESPUESTAS A PRACTICA 1
INTEGRANTE 1: Paul Andres Aguilar
INTEGRANTE 2: Ashley Avilés Bastidas
PARALELO: 3
GRUPO: 1
Indique la función que desempeñan cada uno de los siguientes íconos:
Run .- Permite hacer la prueba de correr o simular el código de forma continua hasta detenerlo pero no actualiza la ventana WATCH sino hasta que se detiene la simulación.
Halt.- Detiene la ejecución del programa y actualiza todos los valores de las ventanas de visualización.
Animate.- Permite hacer la prueba de correr o simular el código de manera continua ejecutando todas las líneas una y otra vez hasta detenerlo manualmente, actualizando la ventana WATCH cada ejecución.
Step Into.- Es una herramienta que me permite ejecutar el código línea a línea incluyendo las subrutinas, entra a cada subrutina y la ejecuta paso a paso y cuando termina de ejecutarlas vuelve al programa principal.
Step Over.- Esta opción también permite ejecutar el código línea a línea pero al contrario de Step Into esta no me permite ejecutar las subrutinas línea a línea, sino que las ejecuta completas como si éstas fueran una sola línea. En otras palabras solo ejecuta el código principal.
Step Out.- Una vez que se ha ingresado a una subrutina y se está ejecutando línea a línea ésta herramienta me permite ejecutar
todas las líneas restantes de la subrutina hasta volver al programa principal.
Reset.- Es el equivalente a un reset físico en el pin MCLR; esto es, poner todo nuevamente en cero.