Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
Display 7 segmentos………………………………………………………………6
Procedimiento y resultados
Implementación virtual……………………………………………………….……10
Construcción física
Conclusiones…………………………………………………………………………….11
Referencias……………………………………………………………………………….12
1
1. Introducción
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.
6
Ilustración 3.4.1.- Segmentos de ánodo común. Ilustración 3.4.2.- Segmentos de cátodo común.
4. Procedimiento y resultados
7
8
Listado 1. Estructura de un programa en lenguaje ensamblador para el PIC16F877A, código en lenguaje
ensamblador para la práctica 5.
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.
Al inicio del programa, se configuran los puertos B y C como salidas para controlar
los displays de 7 segmentos de unidades y decenas, respectivamente. Estos puertos se
utilizan para enviar la información necesaria a los displays y mostrar los números.
Para generar un retardo entre cada cambio de número y hacer visible la secuencia en
los displays, se utiliza la subrutina "Retardo". Esta subrutina mantiene los displays con el
mismo número durante un tiempo aproximado de 3 segundos antes de avanzar al siguiente
número.
9
4.2 Implementación virtual
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 contador decimal ascendente aplicación de contador decimal ascendente cuando
desenergizado. la salida marca “45” en los displays.
10
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 contador decimal ascendente cuando aplicación de contador decimal ascendente
la salida marca “50” en los displays. desenergizado.
5. Conclusiones
11
retardos. Esto facilita la comprensión y modificación del código, permitiendo adaptarlo a
diferentes necesidades o expandir su funcionalidad en futuros proyectos.
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
[4] admin. “Display de 7 segmentos”. Industrias GSL. Accedido el 12 de abril de 2024. [En línea].
Disponible: https://industriasgsl.com/blogs/automatizacion/display-de-7-segmentos
12