Beruflich Dokumente
Kultur Dokumente
Telecomunicaciones
Laboratorio de Microprocesadores
VIII CICLO
Laboratorio N° 5
Integrantes
Apellidos y Nombres Código
2017 – II
Objetivos
1. Utilizar las instrucciones para programar al microcontroladorPIC16F877
2. Utilizar software de desarrollo proporcionada por el fabricante
Introducción
Los PICs constituyen en la actualidad una forma de proveer inteligencia a equipos o sistemas para
un mejor desempeño de los mismos. Esta alternativa de automatización se encuentra prácticamente
a la mano pues la información y herramientas de desarrollo son, en cierta medida, proporcionadas
por el fabricante. El campo de acción de los PICs va desde la activación o desactivación de entradas
o salidas en general hasta el procesamiento digital de señales pasando por aplicaciones específicas
como la conversión A/D, modulación PWM y muchas más.
Para que realicen los eventos que queramos es necesario programarlos insertándoles un lenguaje
apropiado, conformado por instrucciones, que estos puedan entender y por tanto realizar las tareas
específicas que se les asigna.
Preparación
Para la realización de este laboratorio se requiere la lectura previa de la información proporcionada
para el curso, como el texto y el manual del fabricante.
Equipos y Materiales
● Computadora
● Software de desarrollo
● Proyector multimedia
● Texto del curso
● Manual del fabricante
Pág. 2
Lab. N° 5 Puertos de Entrada y Salida 2
Procedimiento – PARTE 1: Display 7 Segmentos
La siguiente figura muestra un display de 7 segmentos cátodo común y su correspondiente conexión a
un puerto del PIC.
;*************************************************************
;Programa que utiliza un display cátodo común
;*************************************************************
__CONFIG _WDT_OFF&_CP_OFF&_PWRTE_ON&_HS_OSC
LIST P=16f877
INCLUDE<p16f877.INC> ;INCLUYE LIBRERIAS
INCLUDE<Macro16f877.INC>
cblock 0x20 ;DECLARACION DE REGISTROS A USAR
cuenta ;REGISTRO USADO EN EL PROGRAMA
endc
ORG 0X00
;-------------------------------------------------
;Programa principal
banco 1 ;TRASLADO A BANCO 1
clrf trisb ;portB-->SALIDA
mover trisd,.3 ;RD0 Y RD1 SON ENTRADAS
banco 0 ;TRASLADO A BANCO 0
clrf cuenta ;LIMPIA "cuenta"
movf cuenta,0 ;cuenta-->Wreg
call DisplayCatodoComun ;llama a subrutina
movwf portb ;muestra el numero en display
Pág. 3
Lab. N° 5 Puertos de Entrada y Salida 2
TesteaUp
btfss portd,0 ;testea si RD0 es 1
goto TesteaDown ;salto a etiqueta
goto IncrementarCuenta ;salto a etiqueta
TesteaDown
btfss portd,1 ;testea si RD1 es "1"
goto TesteaUp ;salto a etiqueta
goto DecrementarCuenta ;salto a etiqueta
IncrementarCuenta
incf cuenta ;incrementa "cuenta"
csi cuenta,.10,IniciaCero ;testea si cuenta es .10
;si fuera el caso salta a etiqueta
movf cuenta,0 ;cuenta-->Wreg
call DisplayCatodoComun ;llama a subrutina
movwf portb ;muestra el numero en display
milisegundo .250 ;retardo de 250 ms
goto TesteaUp ;salto a etiqueta
DecrementarCuenta
decf cuenta ;decrementa "cuenta"
csi cuenta,.255,IniciaNueve ;testea si cuenta es .255
;si fuera el caso salta a etiqueta
movf cuenta,0 ;cuenta-->Wreg
call DisplayCatodoComun ;llama a subrutina
movwf portb ;muestra el numero en display
milisegundo .250 ;retardo de 250 ms
goto TesteaDown ;salto a etiqueta
IniciaCero
clrf cuenta ;limpia cuenta
movf cuenta,0 ;cuenta-->Wreg
call DisplayCatodoComun ;llama a subrutina
movwf portb ;muestra el numero en display
milisegundo .250 ;retardo de 250 ms
goto TesteaUp ;salto a etiqueta
IniciaNueve
movlw .9 ;.9-->Wred
movwf cuenta ;Wreg-->cuenta
movf cuenta,0 ;cuenta-->Wreg
call DisplayCatodoComun ;llama a subrutina
movwf portb ;muestra el numero en display
milisegundo .250 ;retardo de 250 ms
goto TesteaDown ;salto a etiqueta
;------------------------------------------------
;Librerias
include<electronicpic16f877.asm> ;incluye subrutinas
;que se usan en el programa
end ;fin del programa
Pág. 4
Lab. N° 5 Puertos de Entrada y Salida 2
2. ¿Qué encontramos en la librería electronicpic16f877.asm?
Se encuentran las subrutinas que son usadas en el programa y que son muy
importantes para la simplificación del mismo,se encuentran las subrutina
DisplayCatodoComun la cual permite codificar el contenido del registro W a Display
7 segmentos
Pág. 5
Lab. N° 5 Puertos de Entrada y Salida 2
c)Simulacion
display=9
Pág. 6
Lab. N° 5 Puertos de Entrada y Salida 2
esperando pulso de uno de los pulsadores
detecta pulso UP e incrementa “cuenta” pero lo compara y como cuenta =”10” salta a Inicia 0
Pág. 7
Lab. N° 5 Puertos de Entrada y Salida 2
el registro cuenta se limpia y se muestra en el display luego regresa a los testeadores
La siguiente figura muestra una pantalla LCD 2x16 y su correspondiente conexión a un puerto del PIC.
Pág. 8
Lab. N° 5 Puertos de Entrada y Salida 2
;*****************************************************
;Programa que utiliza una pantalla LCD 2x16
;*****************************************************
__CONFIG _WDT_OFF&_CP_OFF&_PWRTE_ON&_HS_OSC
LIST P=16f877
INCLUDE<p16f877.INC> ;comentar:
INCLUDE<Macro16f877.INC>
org 0000h
;--------------------------------------------------
;Programa principal
goto $ ;Comentar:
;----------------------------------------------------
;Librerias
include<electronicpic16f877.asm>
include<lcd.asm>
end ;fin del programa
;****************************************************
;Programa que utiliza una pantalla LCD 2x16
;****************************************************
__CONFIG _WDT_OFF&_CP_OFF&_PWRTE_ON&_HS_OSC
LIST P=16f877
INCLUDE<p16f877.INC> ;comentar:
INCLUDE<Macro16f877.INC>
Pág. 11
Lab. N° 5 Puertos de Entrada y Salida 2
Aplicación de lo aprendido
Hacer un programa con su respectiva implementación eléctrica donde se visualice una cuenta de 0 al 99
infinitamente a intervalos de 1 segundo, usando displays de 7 segmentos ánodo común.
Hacer un programa con su respectiva implementación eléctrica donde se visualice un menú de funciones
con tres pulsadores donde se controle el encendido y apagado de tres focos a 220Vac.
Pág. 12