You are on page 1of 21

PROGRAMACIÓN DE MICROCONTROLADORES

Laboratorio N°4
Puertos de Entrada y Salida Parte II
Lab. N° 4 Puertos de Entrada y Salida Parte II

Puertos de Entrada y Salida Parte2


Display 7 segmentos y Teclado Matricial

Objetivos
1. Utilizar las instrucciones para programar al microcontrolador PIC18F4550
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. Para que realicen los eventos que querramos es necesario
utilizar los puertos como entrada para que la data ingrese y se procese en el PIC y puertos de
salida para comunicarlos con otros dispositivos y en conjunto logren un objetivo.

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° 4 Puertos de Entrada y Salida Parte II

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.

pá g. 3
Lab. N° 4 Puertos de Entrada y Salida Parte II
Procedimiento – PARTE 1: Puertos de entrada y salida

Programa N°1
Desarrolle un proyecto en MPLAB X de nombre SEM04, el cual reciba un dato de 8 bits por el Puerto
B y muestre en 8 Logic States conectados al Puerto D dicho valor binario invertido. El programa a
ingresar se llamará SEM04_1 es el siguiente:

#include<P18F4550.INC>

;---------CONFIGURACION DE BITS----
CONFIG PLLDIV = 1
CONFIG CPUDIV = OSC1_PLL2
CONFIG FOSC = HS
CONFIG PWRT = OFF
CONFIG BOR = OFF
CONFIG WDT = OFF
CONFIG PBADEN = OFF
CONFIG MCLRE = ON
CONFIG STVREN = OFF
CONFIG LVP = OFF
;---------------------------------------
org 0x0000
goto MAIN
org 0x20
MAIN:
clrf LATD
clrf TRISD
setf TRISB
INICIO:
movf PORTB,W
movwf 0x20
comf 0x20,W
movwf LATD
goto INICIO
END

pá g. 4
Lab. N° 4 Puertos de Entrada y Salida Parte II

Responda las siguientes preguntas:

1. Dibuje el diagrama de flujo del programa.


…………………………………………………………………………………………………
……………………………………
2. ¿Qué significado tiene la siguiente declaración: movf 0x20,W?
…………………………………………………………………………………………………
……………………………………
3. ¿Cuál es la función de la instrucción COMF 0x20,W?
…………………………………………………………………………………………………
……………………………………
4. ¿Qué significado tiene que TRISD sea 0x00?
…………………………………………………………………………………………….

5. ¿En qué momento se ha configurado el Puerto B como entrada digital?


…………………………………………………………………………………………………
……………………………………
6. ¿Por qué se envía el resultado al registro LATB en vez de PORTB?
…………………………………………………………………………………………………
…………………………………..

Programa N°2

Diseñe un nuevo programa de nombre SEM04_2.asm que permita generar una secuencia
numérica del 0 al 9 controlando un convertidor BCD 7 segmentos 74LS47 conectado a los
cuatro bits menos significativos del Puerto D. El 74LS47 controla un Display 7 segmentos
tipo ánodo común, el cual debe variar las cifras cada 0.5 segundos aproximadamente. El
programa a ingresar en el archivo SEM04_2.asm es el siguiente:

#include<P18F4550.INC>
;---------CONFIGURACION DE BITS----
CONFIG PLLDIV = 1
CONFIG CPUDIV = OSC1_PLL2
CONFIG FOSC = HS
CONFIG PWRT = OFF
CONFIG BOR = OFF
CONFIG WDT = OFF
CONFIG PBADEN = OFF
CONFIG MCLRE = ON
CONFIG STVREN = OFF
CONFIG LVP = OFF
;---------------------------------------
var1 EQU 0x20
var2 EQU 0x21
var3 EQU 0x23
org 0x00
goto MAIN
MAIN:
movlw 0xF0
movwf TRISD

pá g. 5
Lab. N° 4 Puertos de Entrada y Salida Parte II
clrf 0x10
INICIO:
call RETARDO
movf 0x10,W
movwf LATD
incf 0x10,f
movlw .10
cpfseq 0x10
goto INICIO
clrf 0x10
goto INICIO

RETARDO:
movlw .25
movwf var3
RET1:
movlw .100
movwf var2
RET2:
movlw .200
movwf var1
RET3:
nop
nop
decfsz var1,f
goto RET3
decfsz var2,f
goto RET2
decfsz var3,f
goto RET1
return
END

Circuito a implementar:

pá g. 6
Lab. N° 4 Puertos de Entrada y Salida Parte II

Responda las siguientes preguntas:

1. Dibuje el diagrama de flujo del programa.


…………………………………………………………………………………………………
…………………………………..
2. ¿Cuál es la función de la instrucción cpfseq 0x10 en el programa?
…………………………………………………………………………………………………
……………………………………
3. ¿En qué momento el registro de la SRAM de dirección 0x10 se pone a 0?
…………………………………………………………………………………………………
……………………………………
4. ¿Qué cambio haría en el programa para que el contador vaya de 0 a 5?
…………………………………………………………………………………………………
……………………………………
5. ¿Qué cambios haría en el programa para que el contador vaya de 2 a 8?
…………………………………………………………………………………………………
……………………………………

Programa N°3

Cree un proyecto de nombre SEM04_3.asm que se encargue de leer dos números de


cuatro bits: A y B. Ambos números ingresan por el Puerto B (A se conecta a los cuatro
bits menos significativos y B a los cuatro bits más significativos). La salida son tres bits
del Puerto D: RD0 es 1 si A>B, RD1 es 1 si A=B y RD2 indica que B>A. El programa a
ingresar en el archivo SEM04_3.asm es el siguiente:

#include <p18f4550.inc>
CONFIG FOSC = HS
CONFIG PWRT = ON
CONFIG BOR = OFF
CONFIG BORV = 3
CONFIG VREGEN = OFF
CONFIG WDT = OFF
CONFIG PBADEN = OFF
CONFIG MCLRE = ON

numA EQU 0x10


numB EQU 0x11
MAYORA EQU .0
IGUALES EQU .1
MAYORB EQU .2
org 0x00
goto MAIN
org 0x20
MAIN:
setf TRISB
clrf LATD
clrf TRISD
INICIO:
movf PORTB,W
movwf numA
movwf numB

pá g. 7
Lab. N° 4 Puertos de Entrada y Salida Parte II
movlw 0x0F
andwf numA,f
movlw 0xF0
andwf numB,f
swapf numB,f
movf numA,W
subwf numB,W
btfsc STATUS,Z
goto AIGUALB
btfsc STATUS,C
goto BMAYOR
goto AMAYOR
AIGUALB:
clrf LATD
bsf LATD,1
goto INICIO
BMAYOR:
clrf LATD
bsf LATD,2
goto INICIO
AMAYOR:
clrf LATD
bsf LATD,0
goto INICIO
END

Circuito a implementar:

pá g. 8
Lab. N° 4 Puertos de Entrada y Salida Parte II

Display 7 Segmentos – Uso de tablas de memoria de datos y de programa

Programa N°4 – Uso de memoria de datos

Desarrolle un programa en MPLAB X de nombre SEM04_4.asm que se encargue de mostrar las cifras
del 0 al 9 en un Display 7 segmentos de tipo ánodo común conectado al Puerto D tal como se muestra
en la Figura. El tiempo entre cada cuenta debe ser de aproximadamente cada 0.5 segundos. El
programa a ingresar en el archivo ejemplo.asm es el siguiente:

#include <p18f4550.inc>
CONFIG FOSC = HS
CONFIG PWRT = ON
CONFIG BOR = OFF
CONFIG BORV = 3
CONFIG VREGEN = OFF
CONFIG WDT = OFF
CONFIG PBADEN = OFF
CONFIG MCLRE = ON

cblock 0x10
var1
var2
var3
cont
endc

pá g. 9
Lab. N° 4 Puertos de Entrada y Salida Parte II
org 0x00
goto MAIN
org 0x20
MAIN:
setf LATD
movlw 0x80
movwf TRISD
clrf cont
INICIO:
movf cont,W
call TABLA
movwf LATD
call RETARDO
movlw .2
addwf cont,f
movlw .20
cpfseq cont
goto INICIO
clrf cont
goto INICIO
TABLA:
addwf PCL,f
retlw 0x40
retlw 0x79
retlw 0x24
retlw 0x30
retlw 0x19
retlw 0x12
retlw 0x03
retlw 0x78
retlw 0x00
retlw 0x18
RETARDO:
movlw .25
movwf var3
RET1:
movlw .100
movwf var2
RET2:
movlw .200
movwf var1
RET3:
nop
nop
decfsz var1,f
goto RET3
decfsz var2,f
goto RET2
decfsz var3,f
goto RET1
return
END

pá g. 10
Lab. N° 4 Puertos de Entrada y Salida Parte II
Responda lo siguiente:

1. Dibuje el diagrama de flujo del programa.


…………………………………………………………………………………………………………………………
…………..
2. La instrucción addwf PCL,f ¿Qué valores numéricos se encuentra sumando?
…………………………………………………………………………………………………………………………
……………
3. ¿Cuál es la función de la instrucción retlw 0x40?
…………………………………………………………………………………………………………………………
……………
4. ¿Qué pasaría en el programa al ejecutar la instrucción addwf PCL,f si W=.8?
…………………………………………………………………………………………………………………………
……………
5. ¿Por qué el registro cont se compara con .20? ¿Qué pasaría si no se hiciera?
…………………………………………………………………………………………………………………………
……………
6. Modifique el programa para que la cuenta vaya de 2 a 8.

Programa N°5 – Uso de memoria de programa y uso de punteros

Diseñe un nuevo programa de nombre SEM04_5.asm que permita realizar la secuencia numérica del 0
al 9 en un Display 7 segmentos conectado al Puerto D. La cuenta ascendente deberá cambiar cada 0.5
segundos aproximadamente. El pulsador conectado al pin RB0 permitirá detener o continuar la cuenta.
El código es el siguiente:

pá g. 11
Lab. N° 4 Puertos de Entrada y Salida Parte II

#include <p18f4550.inc>
CONFIG FOSC = HS
CONFIG PWRT = ON
CONFIG BOR = OFF
CONFIG BORV = 3
CONFIG VREGEN = OFF
CONFIG WDT = OFF
CONFIG PBADEN = OFF
CONFIG MCLRE = ON
cblock 0x10
var1
var2
var3
cont
vez
endc
org 0x700
TABLA: db 0x40,0x79,0x24,0x30,0x19,0x12,0x03,0x78,0x00,0x18
org 0x00
goto MAIN
MAIN:
setf TRISB
setf LATD
movlw 0x80
movwf TRISD
movlw UPPER TABLA
movwf TBLPTRU
movlw HIGH TABLA
movwf TBLPTRH
movlw LOW TABLA
movwf TBLPTRL
clrf cont
clrf vez
INICIO:
btfss PORTB,0
goto CAMBIO
SIGUE:
movf cont,W
movwf TBLPTRL
TBLRD*
movff TABLAT,LATD
call RETARDO
incf cont
movlw .10
cpfseq cont
goto INICIO
clrf cont
goto INICIO
RETARDO:
movlw .25
movwf var3
RET1:
movlw .100
movwf var2
RET2:
movlw .200

pá g. 12
Lab. N° 4 Puertos de Entrada y Salida Parte II
movwf var1
RET3:
nop
nop
decfsz var1,f
goto RET3
decfsz var2,f
goto RET2
decfsz var3,f
goto RET1
return
CAMBIO:
incf vez,f
movlw .1
cpfseq vez
goto INICIO
PARAR:
call RETARDO
btfsc PORTB,0
goto PARAR
clrf vez
goto SIGUE
END

Responda lo siguiente:

1. Dibuje el diagrama de flujo del programa.


……………………………………………………………………………………………………………
…………………………
2. ¿Cuál es la función de la directiva db en el programa?
……………………………………………………………………………………………………………
…………………………
3. El byte 0x18 definido en la TABLA. ¿Qué dirección de la memoria FLASH ocupa?
……………………………………………………………………………………………………………
…………………………
4. ¿Cuál es la utilidad del registro vez?
……………………………………………………………………………………………………………
…………………………
5. Modifique el programa para que al reanudar la cuenta al pulsar el botón esta
inicie en 0.

pá g. 13
Lab. N° 4 Puertos de Entrada y Salida Parte II
1. RETO EN CLASE

Realice en clase un conteo ascendente de un display anodo común que incremente de


0 al 9 y luego decremente del 9 al 0 y viceversa, el intervalo de tiempo debe de ser 400
mS.

2. Mostrar evidencia de ejecución de los programas del ítem 1.

● 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.

Procedimiento – PARTE 2: TECLADO MATRICIAL

Programa N°6 – Uso de teclado matricial

#include <p18f4550.inc>
CONFIG FOSC = HS
CONFIG PWRT = ON
CONFIG BOR = OFF
CONFIG BORV = 3
CONFIG VREGEN = OFF
CONFIG WDT = OFF
CONFIG PBADEN = OFF
CONFIG MCLRE = ON

pá g. 14
Lab. N° 4 Puertos de Entrada y Salida Parte II
cblock 0x0000
TECLA
endc

ORG 0x0000
goto MAIN
ORG 0x0020
MAIN:
clrf TRISD
movlw 0xF0
movwf TRISB
BCF INTCON2,RBPU
clrf LATB
clrf LATD
MOVF LATD,W

REPETIR:
BCF LATB,0
BSF LATB,1
BSF LATB,2
BSF LATB,3

btfss PORTB,4
MOVLW .1
btfss PORTB,5
MOVLW .2
btfss PORTB,6
MOVLW .3
btfss PORTB,7
MOVLW .10
MOVWF LATD
BSF LATB,0
BCF LATB,1
BSF LATB,2
BSF LATB,3

btfss PORTB,4
MOVLW .4
btfss PORTB,5
MOVLW .5
btfss PORTB,6
MOVLW .6
btfss PORTB,7
MOVLW .11
MOVWF LATD

BSF LATB,0
BSF LATB,1
BCF LATB,2
BSF LATB,3

btfss PORTB,4
MOVLW .7
btfss PORTB,5
MOVLW .8
btfss PORTB,6

pá g. 15
Lab. N° 4 Puertos de Entrada y Salida Parte II
MOVLW .9
btfss PORTB,7
MOVLW .12
MOVWF LATD

BSF LATB,0
BSF LATB,1
BSF LATB,2
BCF LATB,3

btfss PORTB,4
MOVLW .13
btfss PORTB,5
MOVLW .0
btfss PORTB,6
MOVLW .14
btfss PORTB,7
MOVLW .15
MOVWF LATD
GOTO REPETIR
END

pá g. 16
Lab. N° 4 Puertos de Entrada y Salida Parte II

Circuito a implementar:

Responda lo siguiente:

1. Dibuje el diagrama de flujo del programa.


…………………………………………………………………………………………………………………………
……………
2. ¿Por qué el registro TRISB se inicializa con 0xF0?
…………………………………………………………………………………………………………………………
……………
3. ¿Cómo se diferencia el programa la tecla pulsada 2 de la tecla 3?
…………………………………………………………………………………………………………………………
……………
4. Modifique el programa para que se muestren las letras A, b, C y d cuando se
pulsen las teclas A, B, C y D.

1. Mostrar evidencia de ejecución de los programas de los programas del 1 y 6.

● 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.

pá g. 17
Lab. N° 4 Puertos de Entrada y Salida Parte II
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.

pá g. 18
Lab. N° 4 Puertos de Entrada y Salida Parte II
Aplicación de lo aprendido

1. Diseñe un nuevo programa que se encargue de controlar cuatro Displays 7 segmentos de tipo
ánodo común cuyos cátodos se encuentran interconectados al Puerto D. Los pines RB0-RB3
controlan el ánodo de cada Display, habilitando el encendido de cada Display con un nivel “1”
lógico. El siguiente programa conmuta el encendido de cada Display, de tal manera que se
logra visualizar cuatro dígitos diferentes en cada Display.

2. Usando como base el diagrama del teclado matricial elabore un programa que permita
ingresar una clave de 4 dígitos para ser validada. Sin embargo, si después de pulsar cada tecla
ha pasado más de 3 segundos la clave quedará invalidada y se tendrá que empezar de nuevo.
El Display 7 segmentos deberá mostrar los siguientes resultados:

1. Si la clave ingresada es correcta se mostrará el valor ‘0’.


2. Si la clave ingresada es incorrecta se mostrará el valor ‘E’.
3. Si ha pasado más de 3 segundos desde que se pulsó cualquiera de las cuatro
teclas se mostrará el valor ‘t’.

pá g. 19
Lab. N° 4 Puertos de Entrada y Salida Parte II

pá g. 20
Lab. N° 4 Puertos de Entrada y Salida Parte II
Observaciones Generales

1. La presentación del informe se realiza al ingresar al Laboratorio. En la clase siguiente a su


realización.
2. Se tomará en cuenta las reglas de ortografía en la redacción del informe.
3. La evaluación se realizará del siguiente modo

Curso: Programación de Microcontroladores Sección


Lab. No: 4 Mesa No:
Puertos de Entrada y
Tema: Fecha:
Salida Parte II
Participantes:
1
2
3
4

pá g. 21

You might also like