PROGRAMACIÓN DE MICROCONTROLADORES
IV CICLO
Laboratorio N°3
Puertos de entrada y salida parte 1
TECSUP
Lima - Perú
Puertos de entrada y salida del microcontrolador PIC16F877A
Puertos de entrada y salida
Objetivos
1. Utilizar las instrucciones para programar al microcontroladorPIC16F877.
2. Utilizar software de desarrollo proporcionada por el fabricante.
3. Modificar entradas y salidas digitales de los puertos del microcontrolador.
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. Para que realicen los eventos que
queramos es necesario utilizar los puertos como entrada para que la data ingrese y
se procese en el PIC.
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
● Tarjeta de desarrollo
2
Puertos de entrada y salida del microcontrolador PIC16F877A
Seguridad
Trabajar con Seguridad evita que las personas sufran daños, y provee un ambiente
satisfactorio de trabajo.
Al trabajar en este laboratorio o taller y cualquiera de los subsiguientes, realice el
siguiente procedimiento:
1. Al ingresar, inspeccione:
Las vías de acceso.
Orden y limpieza.
2. En su estación de trabajo evalúe las condiciones de:
Orden y Limpieza.
Herramientas y equipos.
3. Realice su trabajo teniendo en cuenta:
Orden y limpieza.
Seguridad.
Proceda a realizar las conexiones de los equipos o implementación de los circuitos
comprobando que la línea eléctrica se encuentre desconectada.
Solicite visto bueno al profesor antes de aplicar energía eléctrica.
4. Realice el análisis de riesgo personal:
¿Qué es lo que voy a hacer?
¿Qué es lo que puede salir mal?
¿Qué debo hacer para que no salga mal?
5. Al terminar sus labores, deje su estación de trabajo en buenas condiciones:
Ordenado y limpio.
Seguro.
Desconecte el suministro de energía eléctrica.
3
Puertos de entrada y salida del microcontrolador PIC16F877A
Procedimiento
El PIC16F877A contiene 5 puertos que pueden ser configurados como entradas o salidas
digitales (A, B, C, D, E). El puerto A contiene 6 bits (RA0-5) por defecto está configurado
como entrada analógica y puede ser configurado como entrada y/o salida digital.
El puerto B (RB0-7), el puerto C (RC0-7) y el puerto D (RD0-7) son de 8 bits y por
defecto están como entradas digitales y pueden ser configurados como entradas y
salidas digitales.
El puerto E solo cuenta con 3 líneas (RE0-2) y por defecto está configurado como
entrada analógica y puede ser configurado como entrada y salida digital.
La configuración de los puertos en general implica la siguiente secuencia:
Ingresar al banco 1.
Configurar los puertos (registros TRISA, TRISB, TRISC, TRISD y TRISE).
Regresar al banco 0.
Escribir o leer datos desde los puertos. (Registros PORTA, PORTB, PORTC, PORTD y
PORTE).
Hemos indicado que la memoria de datos del PIC16F877A se divide en cuatro bancos: 0,
1, 2 y 3. En las posiciones inferiores de ambos bancos se encuentran los registros
especiales de función (SFR). En la posición 0x05, 0x06, 0x07, 0x08 y 0x09
respectivamente se encuentran los registros PORTA, PORTB, PORTC, PORTD y PORTE
que se usan para leer o escribir datos en tanto que en las posiciones 0x85, 0x86, 087,
0x88 y 0x89 se encuentran los registros TRISA, TRISB, TRISC, TRISD y TRISE
respectivamente, es allí donde se configuran los puertos. Cabe señalar que el PORTB
también aparece en el banco 2 en la posición de memoria 0x106 y el TRISB en la
posición de memoria 0x186.
4
Puertos de entrada y salida del microcontrolador PIC16F877A
Bancos de memoria
Cada una de las líneas de los puertos puede ser configurada como entrada o como salida.
En los registros TRIS determinamos la configuración de los puertos. Los registros son
una suerte de mascara. Por ejemplo si escribimos un 0 en el bit 0 del TRISB la línea RB0
se comportará como una línea de salida. Si colocamos a 1 el bit 0 del TRISB a la línea RB0
se comportará como entrada. A través de los valores que escribamos en los registros
TRIS determinamos el comportamiento de los puertos. La escritura y lectura de valores
desde los puertos se hace a través de los registros PORT que se encuentran en el Banco 0
(y banco 2 para el puerto B). Desde luego si configuramos un puerto como entrada
(lectura) los valores que escribamos en el no tendrán efecto porque fue configurado
como entrada y no como salida. A través de las instrucciones MOV podemos leer o
escribir valores.
5
Puertos de entrada y salida del microcontrolador PIC16F877A
1. Copiar el siguiente programa, analizar, comentar, simular e implementar:
;*************************************************************
;Configuración de los pines del PORTB y PORTD
;*************************************************************
LIST P=16f877A ;Comentar:
Include<[Link]> ;Comentar:
__Config 0x3f32 ;Comentar
Cblock 0x20 ;Comentar:
endc
org 0000h
;-----------------------------------------------
bsf STATUS,RP0 ;comentar:
movlw b’11111111’ ;comentar:
movwf TRISB ;comentar:
movlw b’00000000’ ;comentar:
movwf TRISD ;comentar:
bcf STATUS,RP0 ;comentar:
repite
movf PORTB,0 ;comentar:
movwf PORTD ;comentar:
goto repite ;Comentar:
;-----------------------------------------------
end
2. Copiar el siguiente programa, analizar, comentar, simular e implementar:
;*************************************************************
;Forzamiento y Testeando pines
;*************************************************************
LIST P=16f877A ;Comentar:
Include<[Link]> ;Comentar:
__Config 0x3f32 ;Comentar
Cblock 0x20 ;Comentar:
endc
org 0000h
;--------------------------------------------
bsf STATUS,RP0 ;comentar:
bsf TRISC,0 ;comentar:
bcf TRISD,4 ;comentar:
bcf STATUS,RP0 ;comentar:
TesteaPin
btfss PORTC,0 ;Comentar:
goto ApagarLed ;Comentar:
6
Puertos de entrada y salida del microcontrolador PIC16F877A
goto PrenderLed ;Comentar:
ApagarLed
bcf PORTD,4 ;Comentar:
goto TesteaPin ;Comentar:
PrenderLed
bsf PORTD,4 ;Comentar:
goto TesteaPin ;Comentar:
;--------------------------------------------
end ;Comentar:
3. Analizar y comentar la rutina de tiempo y de control para displays de 7
segmentos
;**************************************************************
;**************************************************************
Cblock
Cont_1
Cont_2
Cont_3
Cont_4
contador_1
contador_2
endc
;***************************************************************
;Rutinas para generación de retardos
;Frecuencia de cristal:20Mhz
;***************************************************************
Milisegundo
movwf Cont_1
xx
movlw .17
movwf Cont_2
xx1
movlw .58
movwf Cont_3
xx2
nop
nop
decfsz Cont_3
goto xx2
decfsz Cont_2
goto xx1
decfsz Cont_1
goto xx
return
;Comentar como opera la rutina Milisegundo:
Segundo
movwf Cont_1
xxx
movlw .250
movwf Cont_2
xxx1
movlw .250
7
Puertos de entrada y salida del microcontrolador PIC16F877A
movwf Cont_3
xxx2
movlw .19
movwf Cont_4
xxx3
nop
decfsz Cont_4
goto xxx3
decfsz Cont_3
goto xxx2
decfsz Cont_2
goto xxx1
decfsz Cont_1
goto xxx
return
;Comentar como opera la rutina Segundo:
;***************************************************************
;Rutinas para el uso de display 7 segmentos ánodo y cátodo común
;***************************************************************
DisplayCatodoComun
addwf PCL,1
retlw 0X3F ;Número 0
retlw 0X06 ;Número 1
retlw 0X5B ;Número 2
retlw 0X4F ;Número 3
retlw 0X66 ;Número 4
retlw 0X6D ;Número 5
retlw 0X7D ;Número 6
retlw 0X07 ;Número 7
retlw 0X7F ;Número 8
retlw 0X6F ;Número 9
DisplayAnodoComun
addwf PCL,1
retlw 0X40 ;Número 0
retlw 0X79 ;Número 1
retlw 0X24 ;Número 2
retlw 0X30 ;Número 3
retlw 0X19 ;Número 4
retlw 0X12 ;Número 5
retlw 0X02 ;Número 6
retlw 0X78 ;Número 7
retlw 0X00 ;Número 8
retlw 0X10 ;Número 9
; Comentar como opera la rutina DisplayCatodocomun y
DisplayAnodoComun:
8
Puertos de entrada y salida del microcontrolador PIC16F877A
4. Copiar el siguiente programa, analizar, comentar, simular e implementar:
;*************************************************************
;Captura datos del teclado 4x4 y se visualiza en el PORTD
;*************************************************************
list P=16f877
include<[Link]>
include< [Link]> ;comentar:
__CONFIG 0X3F32 ;comentar:
cblock 0x20 ;comentar:
endc ;comentar:
org 0000h
;------------------------------------------------------
;Programa principal
bsf STATUS,RP0 ;comentar:
clrf TRISD ;comentar:
bcf STATUS,RP0 ;comentar:
clrf PORTD ;comentar:
call Inicio_Teclado4x4 ;comentar:
repite
call Teclado4x4 ;comentar:
movf NumeroTeclado4x4,0 ;comentar:
movwf PORTD ;comentar:
goto repite ;comentar:
;------------------------------------------------------
;Librerias
include<[Link]> ;comentar:
include<[Link]> ;comentar:
end ;comentar:
Conexión eléctrica
9
Puertos de entrada y salida del microcontrolador PIC16F877A
5. Aplicación de lo aprendido
Realizar el siguiente programa:
Cuando se pulse el pulsador de ASCENDENTE se visualice en el display de 7
segmentos una cuenta ascendente a intervalos de 1 segundo y cuando llegue a 9
para la cuenta y activa un diodo led color verde, el diodo led color rojo esta
desactivado.
Cuando se pulse el pulsador de DESCENDENTE se visualice en el display de 7
segmentos una cuenta descendente a intervalos de 1 segundo y cuando llegue a 0
para la cuenta y activa un diodo led color rojo, el diodo led color verde esta
desactivado.
Cuando se pulse el pulsador de INTERMITENCIA se visualice en el display de 7
segmentos el segmento g realizando una intermitencia a intervalos de 100 ms de
forma indefinida. Los diodos leds rojo y verde deberán estar apagados
Imagen de la aplicación de lo aprendido
10
Puertos de entrada y salida del microcontrolador PIC16F877A
6. Mostrar evidencias de ejecución de los programas de los ítems 1, 2, 3 ,4 y 5.
● Capturar ventanas que muestran el resultado de la creación del proyecto.
● Capturar ventanas que muestran el resultado del ensamble del proyecto.
● Capturar ventanas que muestren la simulación paso a paso.
Modelo de Informe
Deberá contener lo siguiente:
Carátula
1. Nombre del laboratorio
2. Nombres de los integrantes
3. Sección a la que pertenecen
4. Fecha de realización
5. Fecha de presentación
Fundamento Teórico
Deberá ser conciso y redactado con lenguaje propio. Estará basado en las lecturas
recomendadas o cualquier otra información relacionada con el tema. En cualquier caso
no será mayor de tres (03) páginas.
Resultados del Laboratorio
Deberá contemplar lo siguiente:
1. Los datos, tablas, resultados de los programas y respuestas a las preguntas que se
soliciten en el procedimiento.
2. Los programas deberán contar con líneas de comentarios
3. Deberá acompañarse al programa, el diagrama de flujo del mismo.
Observaciones y Conclusiones
Serán únicamente referidas a la experiencia de laboratorio y redactadas en lenguaje
propio.
11
Puertos de entrada y salida del microcontrolador PIC16F877A
(MODELO DE CARÁTULA)
PROGRAMACIÓN DE MICROCONTROLADORES
Laboratorio N°3
Puertos de entrada salida parte 1
INFORME
Integrantes:
Apellidos y Nombres Sección Grupo
Docente:
Fecha de realización :
Fecha de entrega :
TECSUP
Lima - Perú
12