Professional Documents
Culture Documents
Lab04 - Puertos de Entrada y Salida Parte2 - DISPLAY - TECLADO
Lab04 - Puertos de Entrada y Salida Parte2 - DISPLAY - TECLADO
Laboratorio N°4
Puertos de Entrada y Salida Parte II
Lab. N° 4 Puertos de Entrada y Salida Parte II
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
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.
1. Al ingresar, inspeccione:
Las vías de acceso.
Orden y limpieza.
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
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
Programa N°3
#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. 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
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:
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:
pá g. 13
Lab. N° 4 Puertos de Entrada y Salida Parte II
1. RETO EN CLASE
#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:
pá g. 17
Lab. N° 4 Puertos de Entrada y Salida Parte II
Modelo de Informe
Carátula
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.
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
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:
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
pá g. 21