0% encontró este documento útil (0 votos)
146 vistas37 páginas

Lab04 - Puertos de Entrada y Salida Parte2 - DISPLAY - TECLADO-2

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1/ 37

PROGRAMACIÓN DE MICROCONTROLADORES

Laboratorio N°4
Puertos de Entrada y Salida Parte II

Integrantes:

- Amaya Canchumanta, Fabrizio Santiago


- Vigo Cuadrado, Diego Fabricio
- Yancan Lanazca, Cristhian

Profesor:
Ciriaco Martínez, Cesar

Sección:
5 C16 – B

2022
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 ;0x20
clrf TRISD ;0x22
setf TRISB ;0x24 11111111
INICIO:
movf PORTB,W ;0x26 WREG <-- PORTB
movwf 0x20 ;0x28 0x20 <-- WREG = PORTB
comf 0x20,W ;0x2A COMPLEMENTA EL REGISTRO 0X20 Y EL RESULTADO EN
WREG
movwf LATD ;0X2C LATD <-- WREG
goto INICIO ;0x2E

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.

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

2. ¿Qué significado tiene la siguiente declaración: movf 0x20,W?

 Esta instrucción mueve el contenido del registro de memoria 0x20 al registro


W del microcontrolador.

3. ¿Cuál es la función de la instrucción COMF 0x20,W?

 Esta instrucción complementa el contenido del registro de memoria 0x20 y


coloca el resultado en el registro W del microcontrolador.

4. ¿Qué significado tiene que TRISD sea 0x00?

 Establece el registro TRISD del microcontrolador PIC18F4550 en cero (0x00


en hexadecimal), lo que significa que se configura como un registro de salida.

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

 A partir de esta instrucción setf TRISB ;0x24 11111111

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

 En el programa, primero se establece TRISD como 0x00 para configurar el


Puerto D como salida. Luego se utiliza la instrucción "clrf LATD" para borrar
cualquier valor previamente almacenado en LATD y se utiliza la instrucción
"movwf LATD" para enviar el valor complementado del registro 0x20 al Puerto
D.

Por lo tanto, al utilizar el registro LATD en lugar de PORTD, se garantiza que


el valor se envía correctamente a los pines del Puerto D. Si se utilizara
PORTD en lugar de LATD, el valor se escribiría directamente en los pines del
Puerto D sin pasar por el registro de latch interno, lo que podría causar
errores o interferencias en los datos transmitidos.

pá g. 6
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
contador EQU 0x10

org 0x00
goto MAIN
org 0x100

MAIN:
movlw 0xF0 ; b'11110000'
movwf TRISD ; RD0:RD3 --> SALIDAS RD4:RD7--> ENTRADAS
clrf contador ; 0X10 <-- B'00000000'
INICIO:
call RETARDO ;retardo de 500 ms
movf contador,W ; wreg <-- 0x10
movwf LATD ;LATD <-- WREG
incf contador,f ;0X10 = 1
movlw .10 ; WREG= 10
cpfseq contador ; 0X10 =WREG
goto INICIO
clrf contador
goto INICIO
RETARDO:
movlw .25 ;(25(100*(200)))*1us = 500000us = 500ms = 0.5s
movwf var3

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

RET1:
movlw .100
movwf var2
RET2:
movlw .200
movwf var1
RET3: ; SI 20MHz ---> 1 inst.= 0.2 us
nop ;0.2us
nop ;0.2us
decfsz var1,f ;0.2us
goto RET3 ;0.4us
decfsz var2,f
goto RET2
decfsz var3,f
goto RET1
return
END

Circuito para implementar:

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

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

Responda las siguientes preguntas:

1. Dibuje el diagrama de flujo del programa.

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

2. ¿Cuál es la función de la instrucción cpfseq 0x10 en el programa?

 Esta instrucción compara el valor del registro de estatus con 0x10 y establece
la bandera de cero (Z) en 1 si son iguales, o en 0 si son diferentes.

3. ¿En qué momento el registro de la SRAM de dirección 0x10 se pone a 0?

 El registro de la SRAM de dirección 0x10 se pone a 0 en la línea que dice:

clrf contador; 0X10 <-- B'00000000'

Esta instrucción utiliza la función clrf para borrar el contenido del registro de la
SRAM que se encuentra en la dirección 0x10, es decir, coloca todos los bits
en 0, lo que equivale a poner el valor del registro a 0.

4. ¿Qué cambio haría en el programa para que el contador vaya de 0 a 5?

 Para hacer que el contador vaya de 0 a 5 en lugar de 0 a 10, podemos


modificar la siguiente línea de código:

movlw .10 ; WREG= 10

Cambiar el valor de 10 por el 6 ,de esta forma, cuando el contador alcance el


valor de 6, el programa volverá al inicio y comenzará a contar nuevamente
desde 0.

5. ¿Qué cambios haría en el programa para que el contador vaya de 2 a 8?

 Cambiar el valor inicial del contador a 0x02:


clrf contador ; 0X10 <-- B'00000000'
movlw 0x02 ; Inicializar el contador en 2
movwf contador ;

INICIO:
call RETARDO ; retardo de 500 ms
movf contador,W ; wreg <-- 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
movwf LATD ; LATD <-- WREG
incf contador,f ; 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
movlw 0x08 ; WREG = 0x08

Cambiar el valor de 10 por el valor de 8 en movlw 0x10

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

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 ;WREG <-- PORTB
movwf numA ; PORTB= 0011 0010
movwf numB ; NUMB NUMA
movlw 0x0F ;
andwf numA,f ; NUMA 00000010 = 00110010 AND 00001111 =2
movlw 0xF0 ;
andwf numB,f ; NUMB 00110000 =00110010 AND 11110000
swapf numB,f ; NUMB = 00000011 =3
movf numA,W ; WREG= 2
subwf numB,W ; WREG = NUMB - WREG
btfsc STATUS,Z ;salta si es 0 (sera 0 si no son iguales)
goto AIGUALB
btfsc STATUS,C ; es 0 cuando es negativo y 1 para positivo (salta cuando es 0)
goto BMAYOR
goto AMAYOR

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

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 para implementar:

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

B>A

A>B

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

A=B

Diagrama de flujo:

pá g. 15
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 para ingresar en el archivo ejemplo.asm es el siguiente:

pá g. 16
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
endc
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

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

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

SIMULACION PROTEUS:

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

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

Responda lo siguiente:

1. Dibuje el diagrama de flujo del programa.

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

2. La instrucción addwf PCL,f ¿Qué valores numéricos se encuentra sumando?

 La instrucción hace que el valor en el registro PCL se sume con el valor del bit
carry y se almacene en PCL. Esto tiene el efecto de saltar a una dirección de
memoria diferente, calculada a partir del valor actual de PCL y el valor del bit
de acarreo.

3. ¿Cuál es la función de la instrucción retlw 0x40?

 La función de la instrucción "retlw 0x40" es devolver un valor específico de la


tabla de valores en la subrutina TABLA para su uso en la subrutina principal.

4. ¿Qué pasaría en el programa al ejecutar la instrucción addwf PCL,f si W=.8?

 Si hacemos eso en lugar del contador ir de 0 a 9 en el display, solo iría de 0 a


3 pues el contador solo seguiría 4 iteraciones antes del reiniciar todo el ciclo
otra vez.

5. ¿Por qué el registro cont se compara con .20? ¿Qué pasaría si no se hiciera?

 Se compara con 20 para tener una referencia de cuanto debe durar el ciclo
pues depende de este valor cuantas iteraciones tendrá, por ejemplo, si se
cambia a un valor diferente el número de iteraciones se alterará y el ciclo del
contador podría durar más o menos dependiendo del valor. Si no se hace
directamente el programa no arranca.

6. Modifique el programa para que la cuenta vaya de 2 a 8.

 Lo que se haría es sencillo solo basta con modificar el valor con que se
compara cont en lugar de 20 seria 14 y debemos borrar de la tabla estas
instrucciones:

retlw 0x40 ; NUMERO 0


retlw 0x79 ; NUMERO 1
retlw 0x18 ; NUMERO 9
pá g. 21
Lab. N° 4 Puertos de Entrada y Salida Parte II

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:

#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

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

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
movwf var1
RET3:
nop
nop
decfsz var1,f
goto RET3
decfsz var2,f
goto RET2
decfsz var3,f
goto RET1
return

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

CAMBIO:
incf vez,f
movlw .1
cpfseq vez
goto INICIO
PARAR:
call RETARDO
btfsc PORTB,0
goto PARAR
clrf vez
goto SIGUE
END

SIMULACION PROTEUS:

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

Responda lo siguiente:

1. Dibuje el diagrama de flujo del programa.

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

2. ¿Cuál es la función de la directiva db en el programa?

 La directiva db se utiliza para definir un byte de datos en el programa. Es


decir, se utiliza para asignar valores a una variable o constante de un byte en
el programa. En el caso del programa, se utiliza para definir la tabla de
valores que se utilizarán para controlar los LED.

3. El byte 0x18 definido en la TABLA. ¿Qué dirección de la memoria FLASH ocupa?

 La directiva org 0x00700 se utiliza para establecer la dirección de inicio de la


tabla en la memoria de programa. Por lo tanto, la dirección de memoria de la
tabla comienza en 0x00700. Cada elemento de la tabla tiene un tamaño de 1
byte, por lo que el byte 0x18 ocupa la dirección 0x00708 en la memoria de
programa.

4. ¿Cuál es la utilidad del registro vez?

 El registro vez se utiliza en el programa como un contador para determinar


cuándo se ha producido el cambio de sentido de la cuenta. Cuando la cuenta
llega a 9, el programa cambia el sentido de la cuenta y reinicia el valor de cont
a 0. Sin embargo, para evitar que se produzcan cambios de sentido
innecesarios, se utiliza el registro vez para contar el número de veces que se
ha producido un cambio de sentido. Cuando vez alcanza el valor de 1,
significa que ya se ha producido un cambio de sentido y se debe volver a
contar hacia 0.

5. Modifique el programa para que al reanudar la cuenta al pulsar el botón esta


inicie en 0.

 Para modificar el programa para que la cuenta se reinicie en 0 al pulsar el


botón para reanudar la cuenta, se debe agregar una instrucción "clrf cont"
dentro de la sección "CAMBIO". De esta manera, cuando se presiona el botón
para reanudar la cuenta, la variable "cont" se restablece a 0 y la cuenta
comienza desde el principio.

nueva instrucción

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

1. RETO EN CLASE

Realice en clase un programa que configure como salidas a todo el puerto D y luego
active todas para después apagarlas y encender cada salida una por una con un
retardo de 300 ms.

CODIGO:

#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

org 0x100
MAIN:
clrf TRISD

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

INICIO:
clrf LATD
call RETARDO ;retardo de 300 ms
setf LATD
call RETARDO ;retardo de 300 ms
clrf LATD
bsf LATD,0
call RETARDO ;retardo de 300 ms
bsf LATD,1
call RETARDO ;retardo de 300 ms
bsf LATD,2
call RETARDO ;retardo de 300 ms
bsf LATD,3
call RETARDO ;retardo de 300 ms
bsf LATD,4
call RETARDO ;retardo de 300 ms
bsf LATD,5
call RETARDO ;retardo de 300 ms
bsf LATD,6
call RETARDO ;retardo de 300 ms
bsf LATD,7
call RETARDO ;retardo de 300 ms
goto INICIO

RETARDO:
movlw .15
movwf var3
RET1:
movlw .100
movwf var2
RET2:
movlw .200
movwf var1
RET3: ; SI 20MHz ---> 1 inst.= 0.2 us
nop ;0.2us
nop ;0.2us
decfsz var1,f ;0.2us
goto RET3 ;0.4us
decfsz var2,f
goto RET2
decfsz var3,f
goto RET1
return
END

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

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

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
cblock 0x0000
endc

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

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

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
MOVLW .9
btfss PORTB,7
MOVLW .12
MOVWF LATD

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

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

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

Circuito Implementado:

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

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

1. Dibuje el diagrama de flujo del programa.

2. ¿Por qué el registro TRISB se inicializa con 0xF0?

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

 El registro TRISB se inicializa con el valor 0xF0 o 11110000 en binario, lo


que significa que los pines RB0, RB1, RB2 y RB3 se configuran como salidas
y los pines RB4, RB5, RB6 y RB7 se configuran como entradas.
La razón detrás de esta configuración es que los pines RB0 a RB3 se utilizan
para controlar los LED del circuito y se deben configurar como salidas para
poder encenderlos y apagarlos. Los pines RB4 a RB7 se utilizan para leer el
estado de los botones, y por lo tanto deben configurarse como entradas.

3. ¿Cómo se diferencia el programa la tecla pulsada 2 de la tecla 3?

 el programa utiliza la posición de los bits en el registro PORTB para


determinar qué tecla se ha presionado, y luego asigna un valor específico de
MOVLW para cada tecla, de manera que se puedan controlar los valores que
se muestran en el display de 7 segmentos

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.

 No hay necesidad de modificarlo pues cuando se presionan dichos botones


ya se muestra las letras deseadas en el display.

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

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

CONCLUSION:

En conclusión, los puertos de entrada y salida del PIC18F450 son una parte esencial
de su funcionamiento, ya que permiten la comunicación con otros dispositivos y el
procesamiento de datos. Los puertos de entrada permiten al PIC recibir información
del entorno externo, mientras que los puertos de salida permiten al PIC enviar
información a otros dispositivos. La programación adecuada de estos puertos es
crucial para el correcto funcionamiento del PIC y para el logro de los objetivos del
sistema en el que se utiliza. En resumen, los puertos de entrada y salida del
PIC18F450 son componentes clave que permiten que el PIC interactúe con el
mundo exterior y realice su tarea de manera efectiva.

pá g. 37

También podría gustarte