Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Documentación Práctica 3
Documentación Práctica 3
SEMESTRE:
Enero - Julio 2023
CARRERA:
Ing. Biomédica
MATERIA:
Microcontroladores
Práctica 3
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
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.
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.
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].
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.
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.
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
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.
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].
Instrucción Operación
DECF Decrementa F en 1
11
RLF Rota el registro F a la izquierda
SUBWF Resta F – W
SWAPF Intercambio de F
NOP No operación
IORLW (W OR Literal)
SUBLW Resta L - W
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].
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
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.
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”.
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.
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.
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.
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.
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.
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.
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.
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.
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.
21
CONCLUSIÓN
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.
23
REFERENCIAS
24
ANEXOS
https://drive.google.com/drive/folders/1nNyHmjrUqZXdCzPoiTZq7313GQ5M4AIB?usp=sh
aring
25
26