Práctica 4. Secuenciador de LEDs Utilizando El PIC 16F877A
Práctica 4. Secuenciador de LEDs Utilizando El PIC 16F877A
Práctica 4. Secuenciador de LEDs Utilizando El PIC 16F877A
Ingeniería Biomédica
Microcontroladores
Unidad 2
ELABORADO POR:
FACILITADOR:
Introducción………………………………………………………………………………2
Objetivo
Marco teórico
PIC 16F877A
Lenguaje ensamblador………………………………………………………….…3
Mnemotécnicos……………………………………………………………………..4
Procedimiento y resultados
Implementación virtual……………………………………………………….……..8
Construcción física…………………………………………………….…………...9
Conclusiones…………………………………………………………………………….…10
Referencias……………………………………………………………………………….11
1
1. Introducción
Este informe describe una actividad que investiga el empleo del lenguaje ensamblador para
programar el microcontrolador 16F877A con el propósito de dirigir una secuencia de LEDs
a través del puerto D como salida de 8 bits. Durante esta actividad, se explorarán los
principios básicos de la programación a nivel de ensamblador y se demostrará cómo
controlar el hardware en tiempo real para generar efectos visuales mediante la
manipulación de bits.
2. Objetivo
3. Marco teórico
2
estudiantes y aficionados por que es sumamente sencillo de programar y se encuentra una
gran cantidad de información sobre él en internet. [1]
El lenguaje ensamblador es un lenguaje de programación de bajo nivel que está muy cerca
del lenguaje de máquina, es decir, el código binario que vimos en la anterior entrada.
3
A diferencia de los lenguajes de alto nivel como C++ o Java, que son más fáciles de
entender para los humanos, el lenguaje ensamblador está diseñado para ser más fácil de
entender para el procesador. El lenguaje ensamblador es un lenguaje de programación que
utiliza mnemónicos para representar las instrucciones que se ejecutarán en el procesador.
Estos mnemónicos son traducidos por el ensamblador a su equivalente en código binario.
[2]
4
★ MOV (transferencia): Transfiere datos de longitud byte o palabra del operando
origen al operando destino.
★ LEA (carga dirección efectiva): Transfiere el desplazamiento del operando fuente al
operando destino. Otras instrucciones pueden a continuación utilizar el registro
como desplazamiento para acceder a los datos que constituyen el objetivo.
★ POP (extraer de la pila): Transfiere el elemento palabra que se encuentra en lo alto
de la pila (apuntado por SP) al operando destino que ha de ser tipo palabra, e
incrementa en dos el registro SP.
★ PUSH (introduce en la pila): Decrementa el puntero de pila (SP) en 2 y luego
transfiere la palabra especificada en el operando origen a la cima de la pila.
★ CALL (llamada a subrutina): Transfiere el control del programa a un
procedimiento, salvando previamente en la pila la dirección de la instrucción
siguiente, para poder volver a ella una vez ejecutado el procedimiento.
★ JMP (salto): Transfiere el control incondicionalmente a la dirección indicada en el
operando.
★ RET/RETF (retorno de subrutina): Retorna de un procedimiento extrayendo de la
pila la dirección de la siguiente dirección. Se extraerá el registro de segmento y el
desplazamiento en un procedimiento de tipo FAR (dos palabras) y solo el
desplazamiento en un procedimiento NEAR (una palabra).
★ INT (interrupción): Inicializa un procedimiento de interrupción de un tipo indicado
en la instrucción.
★ ADD (suma): Suma los operadores origen y destino almacenando el resultado en el
operando destino.
★ SUB (resta): Resta el operando destino al operando origen, colocando el resultado
en el operando destino.
★ MUL (multiplicación sin signo): Multiplica el contenido sin signo del acumulador
por el operando origen.
★ DIV (división sin digno): Divide, sin considerar el signo, un número contenido en el
acumulador y su extensión (AH, AL si el operando es de tipo byte o DX, AX si el
operando es palabra) entre el operando fuente. [3]
5
Ilustración 3.3.1.- Diferentes tipos de mnemónicos.
4. Procedimiento y resultados
6
7
Listado 1. Estructura de un programa en lenguaje ensamblador para el PIC16F877A, código en lenguaje
ensamblador para la práctica 4.
En esta sección del código se definen algunas variables constantes que serán utilizadas en el
programa, estas variables determinarán ciertas acciones a lo largo del código. Además, se
especifica el modelo de microcontrolador en el que se ejecutará el programa y se
configuran algunas opciones necesarias para su funcionamiento.
En la parte principal del código se incluyen todas las instrucciones del programa, así
como la configuración de las salidas del microcontrolador PIC16F877A necesarias para
controlar los LEDs. Se asigna el valor de 0 al puerto D, lo que significa que inicialmente
todos los LEDs están apagados.
8
Ilustración 4.2.1.- Circuito para el programa en lenguaje ensamblador de Listado 1.
Ilustración 4.3.1.- Construcción física para la Ilustración 4.3.2.- Construcción física para la
aplicación de secuencia de LED cuando se presiona aplicación de secuencia de LED cuando la salida es
el reset. “00000011”
9
Ilustración 4.3.3.- Construcción física para la Ilustración 4.3.4.- Construcción física para la
aplicación de secuencia de LED cuando la salida es aplicación de secuencia de LED, circuito
“00110000” desenergizado.
5. Conclusiones
10
efectos visuales cautivadores. Esta práctica ha sido fundamental para profundizar en nuestra
comprensión de la programación de microcontroladores y ha ampliado nuestra capacidad
para gestionar hardware en tiempo real mediante el uso de lenguaje ensamblador.
6. Referencias
[1] Geek Factory, «PIC16F877A Microcontrolador PIC 8 bits Microchip - Geek Factory», Geek Factory, 12
de febrero de 2024.
https://www.geekfactory.mx/tienda/componentes/integrados/pic16f877a-microcontrolador-pic-8-bits-microchi
p/
[3] Unknown, «Ejemplos de mnemónicos en lenguaje ensamblador.», PC’s blog, 27 de marzo de 2017.
https://paolacazares.blogspot.com/2017/03/ejemplos-de-mnemonicos-en-lenguaje.html
11