Está en la página 1de 30

TECNOLÓGICO​​NACIONAL​​DE​​MÉXICO

INSTITUTO TECNOLÓGICO DE TIJUANA

SEMESTRE:
Enero - Julio 2023

CARRERA:
Ing. Biomédica

MATERIA:
Microcontroladores

Práctica 3

NOMBRE Y NÚMERO DE CONTROL DEL ALUMNO:


Aceves Gutierrez Jennifer Sheccid 20212710
Castillo Santiaguin Javier Ismael 20212495
Lezama Lopez Kenia Giselle 20212868
Vega Rodriguez Victor Manuel 20212000

NOMBRE DEL MAESTRO (A):


Angel Corral Dominguez

Viernes 31 de marzo del 2023


ÍNDICE GENERAL

INTRODUCCIÓN 1
PROCEDIMIENTO 2
MARCO TEÓRICO 3
Microcontrolador 3
PIC 4
Memoria de datos 5
Especificaciones 10
Características 10
Instrucciones para programar el PIC16F877 11
Directivas 13
Programa MPLAB IDE 13
DESARROLLO 15
Circuito Simulado 16
Circuito Físico 17
RESULTADOS 20
Simulación 20
Físico 21
CONCLUSIÓN 22
REFERENCIAS 24
ANEXOS 25
ÍNDICE DE FIGURAS

Figura 1. Circuito simulado en Proteus. 2

Figura 2. Esquema básico del microcontrolador. 3

Figura 3. Datasheet del PIC. 4

Figura 4. Código en lenguaje ensamblador para el PIC. 14

Figura 5. Código compilado de manera correcta. 14

Figura 6. Representación de la programación de nuestro pic. 15

Figura 7. Circuito simulado. 15

Figura 8. Programación de nuestro PIC, mediante el dispositivo “PICk it 3”. 16

Figura 9. Representación de nuestro reloj de cuarzo utilizado y sus respectivos 16


capacitores.

Figura 10. Representación del interruptor y la resistencia utilizada. 17

Figura 11. Representación de los ocho leds y sus resistencias utilizadas. 17

Figura 12. Representación del dip switch y sus resistencias utilizada. 18

Figura 13. Circuito Final. 19

Figura 14. Circuito con el cero en la entrada y el uno por la salida. 19

Figura 15. Circuito con el número uno en la entrada y el 2 en la salida. 20

Figura 16. Circuito Final Físico. 21


ÍNDICE DE TABLAS

Tabla 1. Tabla de instrucciones del circuito. 7

Tabla 2. Función de los pines utilizados en la práctica. 9

Tabla 3. Instrucciones para programar el PIC16F877. 12


INTRODUCCIÓN

Un PIC es un circuito integrado programable, programable quiere decir que se puede


planificar la manera como va a funcionar, que se puede adaptar a las necesidades. En otras
palabras que el integrado es capaz de modificar su comportamiento en función de una serie
de instrucciones que es posible comunicarle.

Entre algunas de sus aplicaciones se encuentran las siguientes:


● Control de pantallas alfanuméricas LCD.
● Control de teclados.
● Control de temperatura.
● Control de Robots.
● Control para motos.

En el presente trabajo se presenta una investigación sobre las características, especificaciones


e instrucciones para el uso práctico del PIC PIC16F877, se siguieron las indicaciones
proporcionadas por el docente para la descarga y ejecución de los programas y el armado del
circuito físicamente, adicionalmente se realizó su simulación en Proteus para tener un
panorama entero de su buen funcionamiento.

1
PROCEDIMIENTO

Se realizará el circuito de la Figura 1 de forma física, el cual está compuesto por la resistencia
de 10 Kilo Ohms y ocho resistencias 330 Ohms para limitar la corriente que llegará al LED,
un cristal (XTAL) de 4 MHz, dos capacitores (C1 y C2) de 27 pF, 8 leds rojos (D), un
interruptor y el PIC 16F877A además del programa MPLAB IDE para la ejecución del
código.

Figura 1. Circuito simulado en Proteus.

2
MARCO TEÓRICO

Microcontrolador
Un microcontrolador es un circuito integrado que en su interior contiene una unidad central
de procesamiento (CPU), unidades de memoria (RAM y ROM), puertos de entrada y salida y
periféricos. Estas partes están interconectadas dentro del microcontrolador, y en conjunto
forman lo que se conoce como microcomputadora. La siguiente Figura 2 representa un
esquema básico y simple del microcontrolador.

Figura 2. Esquema básico del microcontrolador.

Se puede decir con toda propiedad que un microcontrolador es una microcomputadora


completa encapsulada en un circuito integrado. El microcontrolador es un computador
dedicado a diversas aplicaciones. En su memoria sólo reside un programa destinado a
gobernar una aplicación determinada; sus líneas de entrada/salida soportan el conexionado de
los sensores y actuadores del dispositivo a controlar, y todos los recursos complementarios
disponibles tienen como única finalidad atender sus requerimientos. Una vez programado y
configurado el microcontrolador solamente sirve para gobernar la tarea asignada.

El propósito fundamental de los microcontroladores es el de leer y ejecutar los programas que


el usuario le escribe, es por esto que la programación es una actividad básica e indispensable
cuando se diseñan circuitos y sistemas que los incluyan. El carácter programable de los
microcontroladores simplifica el diseño de circuitos electrónicos. Permiten modularidad y
flexibilidad, ya que un mismo circuito se puede utilizar para que realice diferentes funciones
con solo cambiar el programa del microcontrolador [1].

3
PIC
Un PIC es un circuito integrado programable (Programmable Integrated Circuit), el cual
contiene todos los componentes para poder realizar y controlar una tarea, por lo que se
denomina como un microcontrolador. Los PIC son una familia de microcontroladores tipo
RISC fabricados por Microchip Technology Inc. y derivados del PIC1650, originalmente
desarrollado por la división de microelectrónica de General Instrument.

El PIC original se diseñó para ser usado con la nueva CPU de 16 bits CP16000. Siendo en
general una buena CPU, ésta tenía malas prestaciones de entrada y salida como se muestra en
la Figura 3, y el PIC de 8 bits se desarrolló en 1975 para mejorar el rendimiento del sistema
quitando peso de entrada/salida a la CPU. El PIC utilizaba microcódigo simple almacenado
en ROM para realizar estas tareas; y aunque el término no se usaba por aquel entonces, se
trata de un diseño RISC que ejecuta una instrucción cada 4 ciclos del oscilador [2].

Figura 3. Datasheet del PIC.

4
Memoria de datos
Los datos que manejas los programas varían continuamente, y esto exige que la memoria que
los contiene debe ser de lectura y escritura, por lo que la memoria RAM estática, es decir la
SRAM, es la más adecuada aunque sea volátil. Hay microcontroladores que disponen con una
memoria de datos de lectura y escritura no volátil, del tipo EEPROM. De esta forma, un corte
en el suministro de la alimentación no ocasiona la pérdida de la información, que está
disponible al reiniciar el programa.

A excepción de dos pines destinadas a recibir la alimentación, otras dos el cristal de cuarzo,
que regula la frecuencia de trabajo, y una más para provocar el Reset, los pines restantes de
un microcontrolador sirven para soportar su comunicación con los periféricos externos que
controla. Las líneas de E/S que se adaptan con los periféricos manejan información en
paralelo y se agrupan en conjuntos de ocho, que reciben el nombre de Puertas.

A continuación se presentan de algunos de los registros de configuración:

BANCO 0:
● TMR0: Registro del temporizador/contador de 8 bits.
● PCL: Byte menos significativo del contador de programa (PC).
● STATUS: Contiene banderas (bits) que indican el estado del procesador después de
una operación aritmética/lógica.
● FSR: Registro de direccionamiento indirecto.
● PORTA, PORTB, PORTC, PORTD, PORTE: Registro de puertos de E/S de datos.
Conectan con los pines físicos del micro.
● PCLATH: Byte alto (más significativo) del contador de programa (PC).
● INTCON: Registro de control de las interrupciones.
● ADRESH: Parte alta del resultado de la conversión A/D.
● ADCON0: Controla la operación del módulo de conversión A/D

BANCO 1:
● OPTION: Registro de control de frecuencia del TMR0.
● TRISA, TRISB, TRISC, TRISD. TRISE: Registros de configuración de la operación
de los pines de los puertos.
● ADRESL: Parte baja del resultado de la conversión A/D.
● ADCON1: Controla la configuración de los pines de entrada análoga.

5
BANCO 2:
● TMR0: Registro del temporizador/contador de 8 bits.
● PCL: Byte menos significativo del contador de programa (PC).
● FSR: Registro de direccionamiento indirecto.
● EEDATA: Registro de datos de la memoria EEPROM.
● EEADR: Registro de dirección de la memoria EEPROM.
● PCLATH: Byte alto (más significativo) del contador de programa (PC).
● INTCON: Registro de control de las interrupciones.

BANCO 3:
● OPTION: Registro de control de frecuencia del TMR0.
● EECON1: Control de lectura/escritura de la memoria EEPROM de datos.
● EECON2: No es un registro físico [3].

6
Función de los pines del PIC16F877

A continuación se presenta la Tabla 1 la cual contiene el nombre, número y función del pin en
el PIC16F877.

Número del pin Nombre de pin Función

Pin 1 MCLR/Vpp/THV Entrada del Master clear (Reset) o entrada de voltaje


de programación o modo de control high voltage test.

Pin 2 RA0/AN0 ● PORTA es un puerto I/O bidireccional.


Pin 3 RA1/AN1 ● RAO: puede ser salida analógica 0.
Pin 4 RA2/AN2/ Vref- ● RA1: puede ser salida analógica 1.
Pin 5 RA3/AN3/Vref+ ● RA2: puede ser salida analógica 2 o referencia
Pin 6 RA4/T0CKI negativa de voltaje.
Pin 7 RA5/SS/AN4 ● RA3: puede ser salida analógica 3 o referencia
positiva de voltaje.
● RA4: puede ser entrada de reloj el timer0.
● RA5: puede ser salida analógica 4 o el esclavo
seleccionado por el puerto serial síncrono.

Pin 8 REO/RD/AN5 ● PORTE es un puerto I/O bidireccional.


Pin 9 RE1/WR/AN ● REO: puede ser control de lectura para el puerto
Pin 10 RE2/CS/AN7 esclavo paralelo o entrada analógica 5.
● RE1: puede ser escritura de control para el puerto
paralelo esclavo o entrada analógica 6.
● RE2: puede ser el selector de control para el
puerto paralelo esclavo o la entrada analógica 7.

Pin 11 Vdd Fuente positiva para los pines lógicos y de I/O.

Pin 12 Vss Referencia de tierra para los pines lógicos y de I/O

Pin 13 OSC1/CLKIN Entrada del oscilador de cristal /Entrada de señal de


reloj externa.

Pin 14 OSC2/CLKOUT Salida del oscilador de cristal.

Pin 15 RCO/T1OSO/T1CKI ● PORTC es un puerto I/O bidireccional

7
Pin 16 RC1/T1OS1/CCP2 ● RCO puede ser la salida del oscilador timer1 o la
Pin 17 RC2/CCP1 entrada de reloj del timer1
Pin 18 RC3/SCK/SCL ● RC1 puede ser la entrada del oscilador timer1 o
Pin 23 RC4/SD1/SDA salida PMW 2
Pin 24 RC5/SD0 ● RC2 puede ser una entrada de captura y
Pin 25 RC6/Tx/CK comparación o salida PWN
Pin 26 RC7/RX/DT ● RC3 puede ser la entrada o salida serial de
reloj síncrono para modos SPI e I2C
● RC4 puede ser la entrada de datos SPI y modo
I2C
● RC5 puede ser la salida de datos SPI
● RC6 puede ser el transmisor asíncrono
USART o el reloj síncrono.
● RC7 puede ser el receptor asíncrono USART o
datos síncronos

Pin 19 RD0/PSP0 PORTD es un puerto bidireccional paralelo


Pin 20 RD1/PSP1
Pin 21 RD2/PSP2
Pin 22 RD3/PSP3
Pin 27 RD4/PSP4
Pin 28 RD5/PSP5
Pin 29 RD6/PSP6
Pin 30 RD7/PSP7

Pin 33 TTL/ST ● PORTB es un puerto I/O bidireccional. Puede ser


Pin 34 TTL programado todo como entradas.
Pin 35 TTL ● RB0 puede ser pin de interrupción externa.
Pin 36 TTL ● RB3: puede ser la entrada de programación de
Pin 37 TTL bajo voltaje
Pin 38 TTL ● Pin de interrupción
Pin 39 TTL/ST ● Pin de interrupción
Pin 40 TTL/ST ● Pin de interrupción. Reloj de programación serial

Tabla 1. Pines del PIC16F877.

8
A continuación se presenta la Tabla 2 que muestra la función de cada pin que se usó
específicamente para esta práctica.

Número de pin Nombre del pin Función

Pin 40 RB7/PGD Bit 7 del puerto B (E/S bidireccional). Buffer E/S: TTL/ST.
Interrupción por cambio del pin. Entrada de datos para
programación serial.

Pin 39 RB6/PGC Bit 6 del puerto B (E/S bidireccional). Buffer E/S: TTL/ST.
Interrupción por cambio del pin. Entrada de reloj para
programación serial

Pin 38 RB5 Bit 5 del puerto B (E/S bidireccional). Buffer E/S: TTL.
Interrupción por cambio del pin

Pin 37 RB4 Bit 4 del puerto B (E/S bidireccional). Buffer E/S: TTL.
Interrupción por cambio del pin

Pin 36 RB3/PGM Bit 3 del puerto B (E/S bidireccional). Buffer E/S: TTL
(Programación en bajo voltaje)

Pin 35 RB2 Bit 2 del puerto B (E/S bidireccional). Buffer E/S: TTL

Pin 34 RB1 Bit 1 del puerto B (E/S bidireccional). Buffer E/S: TTL

Pin 33 RB0/INT Bit 0 del puerto B (E/S bidireccional). Buffer E/S: TTL/ST.
También se usa cómo entrada de interrupción externa (INT).

Pin 30 RD7/PSP7 E/S Digital. Puede ser un puerto paralelo en bus de 8 bits.

Pin 29 RD6/PSP6 E/S Digital. Puede ser un puerto paralelo en bus de 8 bits.

Pin 28 RD5/PSP5 E/S Digital. Puede ser un puerto paralelo en bus de 8 bits.

Pin 27 RD4/PSP4 E/S Digital. Puede ser un puerto paralelo en bus de 8 bits.

pin 22 RD3/PSP3 E/S Digital. Puede ser un puerto paralelo en bus de 8 bits.

pin 21 RD2/PSP2 E/S Digital. Puede ser un puerto paralelo en bus de 8 bits.

pin 20 RD1/PSP1 E/S Digital. Puede ser un puerto paralelo en bus de 8 bits.

pin 19 RD0/PSP0 E/S Digital. Puede ser un puerto paralelo en bus de 8 bits.
Tabla 2. Función de los pines utilizados en la práctica.

9
Especificaciones
Las especificaciones del PIC16F877 son las siguientes:
● Familia : PIC16.
● Modelo: PIC16F877A-I/P.
● Voltaje de operación: 4V a 5.5V.
● Comunicación : 1-A/E/USART, 1-MSSP(SPI/I²C).
● Número de I/O: 33.
● Comparadores: 2 ADC 8 ch, 10-bit.
● EEPROM: 256 Bytes.
● RAM: 368 Bytes.
● Memoria Flash: 14Kb.
● Máxima frecuencia de trabajo: 20 MHz.
● Timer: Dos de 8 bit y uno de 16 bit.
● Dimensiones: 3.81 mm x 13.84 mm x 52.2 mm.
● Peso: 6 g.
● Paquete: PDIP-40.
● Temperatura de trabajo: -40°C a 125°C [4].

Características
● 100.000 ciclos de borrado/escritura Enhanced Flash memoria del programa típico.
● 1.000.000 de borrado/ciclo de escritura Datos EEPROM memoria típica.
● Retención EEPROM de datos > 40 años.
● Auto-programable bajo control de software.
● Programación serie en circuito (ICSP) a través de dos pines.
● Programación serie de 5V in-circuit de un solo suministro.
● Temporizador watchdog (WDT) con su propio RC en chip oscilador para un
funcionamiento fiable.
● Protección programable del código.
● Ahorro de energía Modo de suspensión.
● Opciones de oscilador seleccionables.
● Depuración en circuito (ICD) a través de dos pines.

10
Otra característica de los PICs es el manejo de los bancos de registros. En línea general, los
registros se clasifican como de uso general (GPR) y de uso específico o de funciones
especiales (SFR).

● Los registros de uso general pueden ser usados directamente por el usuario, sin existir
restricciones. Pueden servir para almacenar resultados que se reciben desde el registro W
(acumulador), datos que provienen de las puertas de entradas, etc.
● Los registros de uso específicos no pueden ser usados directamente por el usuario. Estos
registros controlan prácticamente todo el funcionamiento del microcontrolador, pues toda
la configuración necesaria para funcionamiento del microcontrolador es hecho a través
de algún tipo de SFR [5].

Instrucciones para programar el PIC16F877


Estos microcontroladores responden a una serie de instrucciones o códigos que se deben
grabar en su memoria de programa, en total son 35. A continuación se encuentra una tabla
con la lista completa y después una descripción de cada una de ellas con el fin de facilitar su
aprendizaje [4].

A continuación se presenta la Tabla 3 la cual contiene las instrucciones del PIC16F877:

Operaciones orientadas a registros

Instrucción Operación

ADDWF Suma de W & F

ANDWF Función AND de W & F

CLRF Borrar un Registro

CLRW Borra el registro de trabajo W

COMF Complementa el Registro F

DECF Decrementa F en 1

INCF Incrementa el registro F

INCFSZ Incrementa en 1 y salta si el registro es 0

IORWF Función OR de W & F

MOVF Mover el registro F

11
RLF Rota el registro F a la izquierda

RRF Rota el registro F a la derecha

SUBWF Resta F – W

SWAPF Intercambio de F

XORWF Función XOR de W & F

NOP No operación

Operaciones orientada a bits

BCF Borrar un bit

BSF Activa un bit

BTFSC Verifica un bit y salta si es 0

BTFSS Verifica un bit y salta si es 1

Operaciones con constantes y de control

ADDLW Sumar literal k a W

ANDLW and entre k y W

CALL Llamada a subrutina

CLRWTD Borra el watchdog timer

GOTO Salto incondicional

IORLW (W OR Literal)

MOVLW Carga un Valor al Registro W

RETURN Regresa de una Subrutina

RETLW Regresa de una Subrutina y carga el valor K


en W

RETFIE Regresa de la rutina de servicio

SLEEP Entra en estado de reposo

XORLW Realiza la función XOR entre W & K, el


resultado se almacena en W

SUBLW Resta L - W

MOVWF Mover el valor del registro W al registro F


Tabla 3. Instrucciones para programar el PIC16F877.

12
Directivas
Las directivas son comandos que afectan al ensamblador, y no al microprocesador, por lo que
no generan código objeto. Se utilizan para definir segmentos, símbolos, procedimientos o
subrutinas, reservar memoria, etc.
● END: Esta directiva indica el fin del programa. Es la única directiva obligatoria, y se
utiliza siempre al final del programa para indicar en donde se termina el
proceso.ORG: Esta directiva le indica al programa la dirección desde la que deben
ensamblar las instrucciones escritas. Si las instrucciones del programa son
ensambladas sin especificar ORG, el ensamblador toma por defecto ORG 0x0.
● __CONFIG: Esta directiva le indica al programa la configuración elegida para la
grabación del programa. Se le denomina también “Palabra de Configuración”
● LIST: Esta directiva indica el modelo de microcontrolador que se va a utilizar.
● INCLUDE: Esta directiva se utiliza para incluir una librería dentro de nuestro
programa.
● CBLOCK y ENDC: Este par de directivas cumplen la función de asignar direcciones,
generalmente de la memoria RAM de datos. La lista queda enmarcada entremedio de
las directivas CBLOCK y ENDC [6].

Programa MPLAB IDE


MPLAB X IDE es un programa de software que se ejecuta en una PC (Windows®, Mac
OS®, Linux®) para desarrollar aplicaciones para microcontroladores Microchip y
controladores de señal digital. Se llama entorno de desarrollo integrado (IDE) porque
proporciona un único "entorno" integrado para desarrollar código para microcontroladores
embebidos.

Incluye los siguientes puntos:


● Un editor de texto con todas las funciones que también sirve como una ventana al
depurador.
● Un administrador de proyecto (visible como ventana de proyectos) que proporciona
integración y comunicación entre el IDE y las herramientas de lenguaje.
● Una serie de conjuntos de ensamblador / enlazador para el desarrollo de firmware para el
dispositivo de su proyecto.

13
● Un motor de depuración que proporciona puntos de interrupción, pasos únicos, ventanas
de relojes y todas las características de un depurador moderno. El depurador funciona
junto con herramientas de depuración, tanto de software como de hardware.
● Un simulador de software para todos los dispositivos PIC MCU y dsPIC DSC. El
simulador en realidad está compuesto por varios ejecutables de simuladores específicos
del dispositivo. MPLAB X IDE decide cuál utilizar según el dispositivo de su proyecto
[7].

14
DESARROLLO

Inicialmente, se escribió el código en un editor de texto que no incluya caracteres especiales


como CR, LF, etc. Dicho editor puede ser Wordpad, o el editor del ambiente MPLAB.

El código consta de escribir en lenguaje ensamblador en donde se lea un valor binario de 8


bits por uno de los puertos de E/S del PIC (este dato debe ser proporcionado por dip switch).
El valor ingresado se incrementará en 1, el dato resultante saldrá por otro puerto donde será
mostrado en 8 LEDs. Nota: En caso de que el valor ingresado sea igual a 255 decimal, es
decir, 11111111, todos los LEDs deben estar apagados.

Posteriormente se creó el archivo como se fue indicado, para generar los archivos con
terminación .HEX, .COF, .ERR, .LST, .MAP, .MSC. Se transcribió el código en el programa
MPLAB, para poder obtener el texto de colores como se muestra la Figura 4.

Figura 4. Código en lenguaje ensamblador para el PIC.

15
Se creó un proyecto en el ambiente de desarrollo de MPLAB, para agregar el nombre
solicitado y de esta manera añadir el código creado al Project Wizard. Como se puede notar
en la Figura 5, debe salir el mensaje de “BUILD SUCCEEDED”.

Figura 5. Código compilado de manera correcta.

Circuito Simulado
Primeramente se realiza el circuito en un programa de simulación (PROTEUS) y en dicho
programa se tiene una interfaz para el PIC, como se observa en la Figura 6. Con el circuito en
la simulación, simplemente se coloca el archivo con terminación .HEX, .COF, .ERR, .LST,
.MAP o .MSC. Esto programará nuestro PIC de tal manera que realice lo solicitado
anteriormente con lenguaje ensamblador.

Figura 6. Representación de la programación de nuestro pic.

16
Esto muestra que a la hora de abrir el interruptor, esté led empezará a parpadear y cuando se
cierre, este mismo parara por completo. Esta fue la instrucción del código, como se muestra
en la Figura 7.

Figura 7. Circuito simulado.

Circuito Físico
Una vez se tenga el código compilado es necesario contar con un dispositivo programador de
PIC´s que pueda seleccionar desde MPLAB. En esta práctica se utilizó el “PICKit 3” que se
muestra en la Figura 8.

Figura 8. Programación de nuestro PIC, mediante el dispositivo “PICk it 3”.

17
Mencionado lo anterior, se programa con el dispositivo para poder implementar el
PIC16F877A al circuito físico. Igualmente es de suma importancia no olvidar, el reloj de
cuarzo de 4MHz, a este se le acompañarán dos capacitores cerámicos de 33pF para
implementar su funcionamiento, como se puede observar en la Figura 9.

Figura 9. Representación de nuestro reloj de cuarzo utilizado y sus respectivos capacitores.

Por otra lado, se tiene como puerta un interruptor o switch acompañado de una resistencia de
10k ohms, como se muestra en la Figura 10.

Figura 10. Representación del interruptor y la resistencia utilizada.

Y en la salida, se incluye en el circuito de ocho leds acompañados de sus resistencias de 330


ohms de la misma manera que en la Figura 11.

Figura 11. Representación de los ocho leds y sus resistencias utilizadas.

18
Como entrada, se implementa en el circuito un dip switch de 8 acompañado de ocho
resistencia de 10 k ohms de la misma manera que en la Figura 12.

Figura 12. Representación del dip switch y sus resistencias utilizada.

Por último, se implementa cada uno de los componentes al circuito y el respectivo


PIC16F877A (programado). Cabe mencionar que el PIC cuenta con una alimentación
necesaria de 5V por cuatro de sus extensiones, por los que se proporcionó dicho voltaje.
Concluyendo con el circuito final que se muestra en la Figura 13.

Figura 13. Circuito Final.

19
RESULTADOS

Simulación
En la simulación se logra obtener los resultados deseados, inicialmente se tiene el dip switch
como entrada, se colocan todos en “0”, siendo este el número cero en binario, como se puede
notar en la Figura 14. Al tener el número cero nos debería dar la sumatoria de un elemento, es
decir, el número 0+1=1.

Figura 14. Circuito con el cero en la entrada y el uno por la salida.

Se realizó otro ejemplo colocando en el dip switch “00000001”, que es número uno en
binario. Como salida debe ser la sumatoria de 1+1=1, los leds encenderán como se puede
observar en la Figura 15.

Figura 15. Circuito con el número uno en la entrada y el 2 en la salida.

20
Físico
En un contexto práctico y dejando de lado las simulaciones, se debe tener los mismos
resultados. Lo que efectivamente se logró en la práctica, como se puede observar en la
sección de “ANEXOS”. Como todo circuito, se tienen sus complicaciones a la hora de pasar
una simulación a un protoboard, pero el producto fue el mismo que se encuentra en la Figura
16.

Figura 16. Circuito final en físico.

21
CONCLUSIÓN

Aceves Gutierrez Jennifer Sheccid 20212710


Para que pudiéramos escribir un programa en lenguaje ensamblador para el microcontrolador
fue necesario utilizar nuestros conocimientos básicos de programación y electrónica, también
puedo mencionar que esta práctica nos ayudó a comprender de una mejor forma como
trabajan los diferentes tipos de puertos, así como entender de una mejor manera cuales son las
características principales de cada componente con los que estamos trabajando. Finalmente
puedo decir que fue bastante interesante realizar esta práctica y que tuvimos un poco de
complicaciones para poder lograr que los LEDS se encendieran, ya que nos confundimos un
poco al realizar las conexiones, pero al final se logró el objetivo y todo funcionó
adecuadamente

Castillo Santiaguin Javier Ismael 20212495.


En esta práctica se implementó un código en lenguaje ensamblador creado por nosotros, en el
cual nos basamos en un ejemplo que se miró en clase. En esta práctica se solicitó ingresar un
número para después observar las salidas en los leds. El funcionamiento fue que nosotros
ingresamos un valor en binario por ejemplo 1 y en la salida debe de dar un 2 en binario pero
enciende los leds que deben de ser, es decir se iba incrementando hasta llegar a colocar 255
en binario donde todos los botones del switch estaban en 1 y en la salida los leds están
apagados. Al principio no logramos resolver lo solicitado en la práctica ya que se tenía un
incremento en ciclo, lo que hacía que cuando ingresamos un valor este iba aumentando hasta
llegar a 255 y de ahí se repetía. Sin embargo, después de revisar el código y agregar dos
instrucciones se logró resolver el problema.

Lezama Lopez Kenia Giselle 20212868


Ha sido muy satisfactorio el conocer ampliamente el funcionamiento interno de los
microcontroladores en este caso el PIC16F877A y las distintas posibilidades que ofrecen, así
como la forma en que interactúan con el resto de componentes electrónicos que se
introducen, ya sea otro circuito integrado o componentes mecánicos. La aplicación realizada
ha quedado como se esperaba, resultando muy útil y fácil de utilizar. La decisión de tomar los
puertos desde el inicio de utilizar el lenguaje ensamblador ha sido la correcta.

22
Primeramente lo simulamos para ver que funcione bien y así pasarlo a físico, durante el
desarrollo de la práctica se tuvieron unos pequeños errores, pero se solucionaron al instante,
cómo consejo se debe de revisar más de dos veces la programación, en cómo están
conectados los pines y que concuerden con los de la programación.

Vega Rodriguez Victor Manuel 20212000


Primeramente se tiene unas instrucciones diferentes a la práctica pasada, esta fue elaborada
por nosotros. A diferencia del enfoque anterior, esta vez tenemos una entrada de 8 bits y
podemos observar el resultado de la salida utilizando los LED correspondientes al incremento
de un bit, excepto en el caso 11111111, donde obtenemos la salida con los LED apagados. Se
pudo comprobar dichas instrucciones, aunque hubo unas pequeñas complicaciones con la
función de sumar un bit, ya que se usó un incremento en ciclo. Dicho circuito se realizó de
manera previa con simulaciones para comprender un poco más la estructura del pic y como
este se relaciona con el lenguaje ensamblador.

23
REFERENCIAS

[1] D. Nova. "Microcontroladores Arquitectura, programación y aplicación". AIU. [Online].


Available:
https://www.aiu.edu/applications/documentlibrarymanager/upload/despradel%20novas%20pe
ña.pdf [Accessed: Mar. 21, 2023].

[2] “Microcontroladores PIC,” Google Books, 2023. [Online]. Available:


https://books.google.com.mx/books?hl=es&lr=&id=86uGLMp4vgAC&oi=fnd&pg=PA114&
dq=PIC+&ots=LYMFZPBiQF&sig=_X7xhYU6FXqFuYajZ7UMKyNonBE#v=onepage&q=
PIC&f=false. [Accessed: Mar. 04, 2023].

[3] Electrónica Unicrom. "Memoria de datos y de programa en PIC - Electrónica Unicrom".


Electrónica Unicrom. [Online]. Available:
https://unicrom.com/memoria-de-datos-y-de-programa-en-pic/. [Accessed: Mar. 21, 2023].

[4] UNIT ELECTRONICS. “PIC16F877A-I/P Microcontrolador”, uelectronics [Online].


Available: https://uelectronics.com/producto/pic16f877a-i-p-microcontrolador/. [Accessed:
Mar. 21, 2023].

[5] "Descripción del PIC 16F877". Monografias.com. [Online]. Available:


https://www.monografias.com/trabajos18/descripcion-pic/descripcion-pic [Accessed: Mar.
21, 2023].

[6] J. Juarez. "Directivas, Operadores e Instrucciones del Lenguaje Ensamblado". utm.


[Online]. Available: https://www.utm.mx/~jjf/le/LE_APENDICE_D.pdf [Accessed: Mar. 21,
2023].

[7] J. Buenrostro. "Componentes de MPLAB X IDE". Joel Buenrostro Blog. [Online].


Available:http://joelbuenrostroblog.blogspot.com/2018/03/componentes-de-mplab-x-ide.html
[Accessed: Mar. 21, 2023].

24
ANEXOS

https://drive.google.com/drive/folders/1nNyHmjrUqZXdCzPoiTZq7313GQ5M4AIB?usp=sh
aring

25
26

También podría gustarte