Microcontroladores
Benemérita Universidad Autónoma de Puebla
Facultad de Ciencias de la Electrónica
Integrantes en ingeniería en Mecatrónica
Licenciatura
García Molina Carlos Alexis 202082675
Flores Vega José Carlos 202036242
Parra Trujillo Hazel 202050593
Romero Bravo Ignacio 202055217
Maestro: Ricardo Ramírez Álvarez
NRC:20599
Periodo: Otoño 2023
1|Página
Practica 1
Objetivo
En este reporte de laboratorio, se describe el proceso de construcción y programación de una
secuencia de luces con 7 leds utilizando el microcontrolador PIC18F45K50. Este tipo de proyecto
es común en la electrónica y es un programa común en dispositivos de luz, como ambulancias, o
patrullas.
Marco teórico
Movlw
Este es un mnemónico de instrucción en lenguaje ensamblador utilizado en los microcontroladores
PIC. Representa "Move Literal to W" (Mover Literal a W). W es un registro especial en los
microcontroladores PIC que se utiliza para realizar operaciones aritméticas y lógicas. MOVLW se utiliza
para cargar un valor literal de 8 bits en el registro W.
Movwf
Este mnemónico significa "Move W to File register" (Mover W al registro de archivo). Se utiliza para
copiar el contenido del registro W en un registro de archivo específico en la memoria de datos del
microcontrolador.
Call
En el contexto de la programación de microcontroladores, CALL es una instrucción de salto utilizada
para transferir el control del programa a una subrutina o a una dirección específica de memoria. La
instrucción CALL guarda la dirección de retorno actual en la pila antes de transferir el control a la
subrutina.
Retardo
Este término generalmente se refiere a la introducción de un retraso o pausa en la ejecución de un
programa. En el contexto de microcontroladores, a menudo se implementa mediante bucles o
temporizadores para introducir un tiempo de espera específico. Estos retrasos pueden ser necesarios
para sincronizar ciertos eventos o para asegurar que ciertos componentes (como sensores o
dispositivos periféricos) tengan el tiempo necesario para completar una operación antes de que
continúe el programa.
Swapf
Este mnemónico representa "Swap W and f" (Intercambiar W y f). Se utiliza para intercambiar los
nibbles superiores e inferiores en el registro W o en un registro de archivo específico. Un nibble es un
grupo de 4 bits.
2|Página
Desarrollo
1. Conectar el microcontrolador PIC18F45K50 en la protoboard.
2. Conectar los 7 leds en posición vertical seguido uno del otro . Asegurarse de utilizar la resistencia
de 220 ohmios en cada segmento para limitar la corriente.
3. Conectar el cable de programación del PIC18F45K50 entre el microcontrolador y el ordenador.
4. Abrir el software de programación del PIC18F45K50 en el ordenador.
5. Crear un nuevo proyecto en el software y configurar los pines del microcontrolador para controlar
los 7 leds
6. Escribir el código correspondiente para obtener la hora actual del sistema y enviarla a los 7 leds.
7. Compilar el código y programar el microcontrolador PIC18F45K50.
8. Alimentar el circuito conectando el cable de alimentación.
9. Observar el funcionamiento de la secuencia realizada y verificar que vaya uno a uno la secuencia.
Ilustración 1 Definición de variables
Como se muestra en la ilustración anterior (véase, ilustración 2) se han definido algunas nuevas
variables, para mostrar tanto las unidades, decenas, centenas y las unidades de millar. Donde se
han descrito de la siguiente manera : iun es el índice de unidades, cuni es el código de 7 segmentos
de unidades y asi sucesivamente
Ilustración 2 Vector de reinicio
Aquí es donde se declara los vectores de alta prioridad y de baja prioridad.
3|Página
Ilustración 3 Inicio de programa principal
Código
;************************************************************************
******
LIST P=18F45k50 ;directiva para definir el procesador
#include <P18F45k50.INC> ;variables especificas del procesador
;************************************************************************
******
;Bits de configuración
CONFIG FOSC = INTOSCIO ;Oscilador INT
;Apuntes de Microcontroladores O23 Ricardo Álvarez González
;53
CONFIG BOREN = OFF ;BROWNOUT RESET DESHABILITADO
CONFIG nPWRTen = ON ;PWR UP Timer habilitado
CONFIG WDTEN = OFF ;Temporizador vigia apagado
CONFIG MCLRE = OFF ;Reset apagado
CONFIG PBADEN = OFF
CONFIG LVP = OFF
;************************************************************************
******
4|Página
;*************************************************************************
*****
;Definiciones de variables
cont equ 0
inicio equ 0
sirena equ 0
;*************************************************************************
*****
;Reset vector
ORG 0x0000
;Inicio del programa principal bcf OSCCON,IRCF2,0
bcf OSCCON,IRCF1,0
bcf OSCCON,IRCF0,0 ;Oscilador interno a 31 kHz
movlw 0x0F
movwf ADCON1,0 ;Puertos Digitales
clrf PORTD,0
clrf TRISD,0 ;Puerto D Configurado como salida
bcf TRISA,0 ;RA0 Salida
bsf LATD,0,0 ;enciende LED conectado en RD0
correi rlcf LATD,F,0
call retardo
;bra correi ;ciclo infinito- Interruptor entre practicas
;*************************************************************************
*****
;Secuencia de luces
movlw 0xF0
movwf LATD
call retardo
call retardo
call retardo
call retardo
swapf LATD,1
call retardo
call retardo
call retardo
swapf LATD,1 5|Página
call retardo
call retardo
swapf LATD,1
call retardo
call retardo
call retardo
swapf LATD,1
call retardo
call retardo
call retardo
call retardo
movlw 0x0F
call retardo
call retardo
swapf LATD,1
call retardo
call retardo
movwf LATD
call retardo
call retardo
swapf LATD,1
call retardo
call retardo
movlw 0x0FF
bra correi
;¨**************************************************************************
**
retardo movlw 0xFF
movwf cont
6|Página
nada nop
btfsc PORTC,0
;***************************************************************************
****
;buzzer activo
;decfsz cont,1
;bra nada
;btfss PORTC, 0
;return
;btg LATA, 0
;return
;***************************************************************************
***
;Buzzer off bocina apagada
bcf LATA, 0 ;buzzer OFF
btfss PORTC,0
bra nada
bsf LATA, 0 ; buzzer ON
bra nada
;retardo
;movlw 0xFF
;movwf cont,0
;nada nop
;decfsz cont, 1
;bra nada
;return
END
7|Página
Implementación física
Materiales utilizados:
- Microcontrolador PIC18F45K50
- Display de 7 segmentos (x2)
- Resistencia de 220 ohmios (x16)
- Cable de programación para el PIC18F45K50
- Protoboard
- Cable de alimentación
- Ordenador con el software de programación del PIC18F45K50
Después de completar el procedimiento mencionado anteriormente, se pudo observar cómo los displays de 7
segmentos mostraban la hora actual en formato digital. Cada segmento del display se encendía y apagaba
correctamente para representar cada número. El reloj fue capaz de actualizar la hora en tiempo real.
Conclusiones
En este laboratorio, se logró construir y programar un reloj de dos displays de 7 segmentos utilizando el
microcontrolador PIC18F45K50. Se evidenció la utilidad y versatilidad de los displays de 7 segmentos en la
representación de información numérica en la electrónica. Este proyecto demuestra una aplicación práctica de
cómo utilizar un microcontrolador para controlar displays y mostrar información de manera clara y precisa.
8|Página
Bibliografía
• Geek Factory. (2023, 28 julio). PIC18F4550 Microcontrolador 8 bits - Geek Factory.
https://www.geekfactory.mx/tienda/componentes/integrados/pic18f4550-microcontrolador-8-
bits/#:~:text=%C2%BFPara%20qu%C3%A9%20se%20usa%20el%20PIC18F4550%3F%20El%20P
IC18F4550,desarrollo%20de%20prototipos%20e%20incluso%20en%20productos%20comerciales.
• ¿Qué es y para qué sirve el MPLAB? (s. f.). https://electronica.guru/app01/16670/que-es-y-para-que-
sirve-el-mplab
9|Página