0% encontró este documento útil (0 votos)
478 vistas24 páginas

PIC18F45K50

Este documento presenta varios ejemplos de código en lenguaje ensamblador para el microcontrolador PIC18F45K50. Explica instrucciones básicas como movimiento de datos, manipulación de bits y operaciones aritméticas. También muestra cómo implementar funciones lógicas como XOR de un bit y cómo recibir y replicar datos en puertos usando el microcontrolador. Finalmente, revisa aspectos del compilador XC8 PIC Assembler y diferencias con versiones anteriores.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
478 vistas24 páginas

PIC18F45K50

Este documento presenta varios ejemplos de código en lenguaje ensamblador para el microcontrolador PIC18F45K50. Explica instrucciones básicas como movimiento de datos, manipulación de bits y operaciones aritméticas. También muestra cómo implementar funciones lógicas como XOR de un bit y cómo recibir y replicar datos en puertos usando el microcontrolador. Finalmente, revisa aspectos del compilador XC8 PIC Assembler y diferencias con versiones anteriores.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

29/03/2023

Microcontroladores
Laboratorio Semana 2
Semestre: 2023-1
Profesor: Kalun José Lau Gan

Preguntas previas:
• ¿Por qué estudiamos Assembler?
• Manipulamos directamente los recursos disponibles en el microcontrolador
• Mejora la eficiencia en diferentes aspectos: velocidad, consumo energético, disipación
de calor, costos reducidos, tamaño final del PCB
• ¿Cuál es el lenguaje mas usado en microcontroladores?
• El lenguaje C y variantes
• Había leído el capítulo 8 del datasheet sobre el Data EEPROM. ¿Qué es y como
se usa?
• Es una memoria no-volátil que es considerado como un periférico en la arquitectura del
microcontrolador PIC18F45K50. No esta mapeado su contenido en la memoria de datos
• Para acceder a dicha memoria se emplean cuatro registros SFR según se detalla en la
hoja técnica:

1
29/03/2023

Preguntas previas:
• Me vino con una placa verde el Pickit3. ¿Vamos a emplearlo?
• No va a ser necesario emplearlo puesto a que vamos a colocar de manera permanente
el microcontrolador en el breadboard y la conexión con el pickit3 va a ser de manera
directa.
• El osciloscopio solicitado opcionalmente en la lista de materiales
aproximadamente en que semana lo vamos a emplear?
• Desde la cuarta o quinta semana
• No pude conseguir el cable telefónico AWG22 pero he conseguido UTP Cat6,
habrá algún problema?
• No hay problema alguno salvo lo trenzado que están los pares, que se tendrá que
“enderezar” para poder usarlos en el breadboard.

Preguntas previas:
• ¿Cuáles pueden ser las consecuencias “negativas” en cambiar de frecuencia de
trabajo de 4MHz a 48MHz?
• Mayor consumo de energía
• En el caso de leer el estado de un pulsador, será mas sensible a los rebotes
• Al trabajar a mayor frecuencia se debe de tener mayor cuidado en el diseño del PCB
• Ground planes, short paths, etc
• ¿Cómo es lo de soldar las conexiones en el LCD?

2
29/03/2023

Preguntas previas:
• ¿Cómo compruebo si mi LCD esta funcionando?
• Energizamos el display conectando: pin1-GND, pin2-VCC, pin3-GND, pin15-VCC,pin16-
GND.

• He conseguido el PCKIT3.5+✌. Habrá algún problema?


• No hay problema alguno siempre y cuando el MPLAB X lo reconozca correctamente y
pueda grabar el microcontrolador.

Preguntas previas:
• ¿El bit PBADEN para qué sirve?
• Es el habilitador para que los pines 4 al 0 del puerto B funcionen como E/S digitales
(OFF) o como entradas analógicas para el conversor A/D (ON).
• Con el programador viene un CD. ¿És necesario instalarlo?
• No, el MPLABX se encarga de todo.

3
29/03/2023

Agenda
• El flujo de datos en el microcontrolador PIC18F45K50
• Instrucciones básicas en XC8 PIC Assembler
• Ejemplos básicos con el microcontrolador PIC18F45K50 en lenguaje
Assembler
• Nuestra primera implementación física de un circuito basado en el
microcontrolador PIC18F45K50

Aspectos relacionados con el MPASM y el XC8


PIC Assembler
• El año 2020 Microchip dejó de lado el MPASM para dar lugar al XC8 PIC
Assembler (PIC-AS)

• El XC8 Assembler tiene bugs reportados por lo que indicaremos en los


ejemplos el cómo solucionarlos (EDIT 28/03/2022 ya fue solucionado en las
versiones de MPLABX 6.00 y XC8 2.36)

• XC8 Assembler es un lenguaje de bajo nivel (orientado a la máquina),


nosotros debemos de conocer primero cómo funciona la máquina para
luego hacer que funcione mediante la codificación de un programa en
Assembler y dar solución al problema planteado

4
29/03/2023

El flujo de datos en el microcontrolador PIC18F45K50

MPASM vs XC8 PIC Assembler: Partes de un programa


MPASM: XC8 PIC ASM:

Nota: Los bits de configuración se


alojaron en un archivo header llamado
“[Link]”

5
29/03/2023

Instrucciones básicas en XC8 ASM


• Instrucciones de movimiento de datos

Instrucción movff [registro1], [registro2]


• Mueve el contenido de registro1 hacia registro2
• Ocupa el doble y demora el doble

6
29/03/2023

¿Instrucción movfw?
• ¡Instrucción no documentada en la hoja técnica!
• Esta no es una instrucción en sí, sino una “pseudo-instrucción” del
lenguaje assembler.
• Lo que hace es mover el contenido de un registro y lo coloca en el
Wreg.

Instrucciones básicas en XC8 ASM


• Instrucciones de manipulación de bits en un registro

7
29/03/2023

Ejemplo de uso de instrucciones de


manipulación de bits en un registro

Instrucciones básicas en XC8 ASM

8
29/03/2023

Instrucciones básicas en XC8 ASM


• Instrucción decf / incf
• Decremento (decf) o incremento (incf) de registro, ambos de uno en uno

Instrucciones básicas en XC8 ASM

9
29/03/2023

Instrucciones setf [registro] y clrf [registro]


• setf [registro] : Coloca todos los bits del registro indicado a uno lógico

• clrf [registro] : Coloca todos los bits del registro indicado a cero lógico

Tiempo de ejecución de las instrucciones en


XC8 PIC Assembler
• Se utiliza la siguiente fórmula:

• Hay instrucciones simples, dobles y especiales (revisar 26.0 de la


datasheet)
• Recordando la relación periodo vs frecuencia:

10
29/03/2023

Ejemplo: Escribir 0x5A en RD y 0xA5 en RB


usando el PIC18F4550

Análisis:
• El objetivo: Pines del RD como salidas

11
29/03/2023

Ejemplo: Enviar un dato 0x5A al puerto RD y un


dato 0xA5 al puerto RB usando el PIC18F4550

Ejemplo: Escribir 0x5A en RD y 0xA5 en RB


usando el PIC18F45K50

12
29/03/2023

Ejemplo: Enviar un dato 0x5A al puerto RD y un


dato 0xA5 al puerto RB usando el PIC18F45K50

Ejemplo: Implementar una XOR de un bit en el


PIC18F4550 empleando el XC8 Assembler

13
29/03/2023

Ejemplo: Implementar una XOR de un bit en el


PIC18F4550 empleando el XC8 Assembler
• Desarrollando mas a detalle el diagrama de flujo: Teniendo en cuenta que
se usará la instrucción “btfsc” para las preguntas a cada puerto de entrada
de la XOR

Ejemplo: Implementar una XOR de un bit en el


PIC18F4550 empleando el XC8 Assembler
• Tener en cuenta que en
[Link] se encuentra
los bits de configuración y
la llamada a la librería
general “[Link]”

14
29/03/2023

Implementación del circuito:

Implementación del circuito:

15
29/03/2023

Ejemplo: Implementar una XOR de un bit en el


PIC18F45K50 empleando el XC8 Assembler

Ejemplo: Implementar una XOR de un bit en el


PIC18F45K50 empleando el XC8 Assembler
• Código en XC8 PIC Assembler

16
29/03/2023

Ejemplos adicionales
• Tener en cuenta que los ejemplos siguientes:
• El microcontrolador es el PIC18F4550 por lo que se deberá de modificar los
bits de configuración, BSR y demás parámetros de acorde a lo explicado en
clase acerca del PIC18F45K50
• Estan desarrollados en MPASM por lo que se tendrán que migrar al nuevo XC8
PIC Assembler para que puedan compilarse correctamente.

Ejemplo: Recibir un dato en RB y replicarlo en


complemento a RD

Nota:
-Se ha seguido el ejemplo de un negador de un bit
pero replicándolo siete veces mas para para así
obtener un negador de 8 bits solicitado.
-El código resultante es extenso. Por lo que se evaluará
una major alternativa empleando la instrucción COMF
que se verá en la siguiente lámina

17
29/03/2023

Instrucción COMF [registro], d


• Aplica complemento al registro indicado y el resultado lo puede
almacenar en Wreg o en el mismo registro

Optimizando el ejemplo del negador de 8 bits


empleando instrucción comf:

Del código extenso visto anteriormente ahora se


reduce a pocas líneas gracias a comf

18
29/03/2023

Ejemplo: Titilar un LED conectado en RD2

Ejemplo: Titilar un LED conectado en RD2


• Debemos de crear un bucle de repetición para generar retardos mas
prolongados

19
29/03/2023

Propuesta de algoritmo con dos anillos de


repetición

Propuesta de algoritmo con tres anillos de


repetición

20
29/03/2023

Código del titilador de LED en MPASM:

Prototipo físico del circuito:

21
29/03/2023

Recomendaciones al momento de
implementar el circuito en físico:
• Verificar continuidad en los cables jumper utilizados en el circuito
• Verificar que la resistencia en pin MCLR hacia 5V sea de 10K
• Verificar que la PC haya detectado correctamente el PICKIT3
• Revisar siempre los mensajes en la ventana de “output” por posibles
fallos en el evento de compilación y evento de programación.
• Tener a la mano un multímetro para verificar voltajes y continuidad
en el prototipo.

Recomendaciones al momento de
implementar el circuito en físico:
• Si se esta empleando el PICKIT3 como programador y deseas que éste
administre el voltaje de alimentación al circuito de prueba:

22
29/03/2023

Modificar el titileo de LED para que se visualice un


contador autoincremental de 8 bits

Ejercicios adicionales:
Tener en cuenta que se debe de seguir el procedimiento visto en clase
(idea, desarrollo del circuito, diagrama de flujo, código en MPASM,
simulación, prototipo físico)
• Desarrollar un titilador de un LED conectado en RE0 en el cual su
periodo de parpadero dependerá del estado de un switch conectado
en RB0, si RB0=1 el periodo será de 500ms, si RB0=0 el periodo será
de 100ms.
• Desarrollar una señal de cruce de tren con entrada de activación.
• Desarrollar una “vela electrónica” con entrada de activación, dicha
entrada tendrá como sensor de luz a un L.D.R.

23
29/03/2023

Fin de la sesión!

24

También podría gustarte