Pic16f887 Entregar
Pic16f887 Entregar
Pic16f887 Entregar
é í ó
á
í
Curso Básico de PIC 16F887
Generalidades
Historia e importancia de los microcontroladores
Metodología de estudio
Microcontroladores Microchip 16F87X
Arquitectura 16F87X
Arquitectura interna 16F87x
Ciclo de instrucción
Organización de la memoria
Herramientas
Módulo 1: Manejo de Puertos Digitales
Como podemos apreciar todo principia en una idea la cual se ha de plasmar en diagramas
de flujo o autómatas o alguna otra metodología que ayude al modelamiento, una vez
superado este punto
Procedemos a usar un editor de texto para codificar el diagrama de flujo a través de las
instrucciones con que cuenta el microcontrolador.
A continuación presentamos ese archivo a un programa ensamblador (si es que usamos el
lenguaje ensamblador) o un compilador (si usamos otro lenguaje como el C o Basic) aquí
se depuran los errores sintácticos que son errores en la estructura del lenguaje de
programación.
Una vez que superamos esa etapa procedemos a usar un software, para simular el
programa verificando que la solución es válida. En caso que la simulación indique errores
procedemos a replantear la solución retomando el punto inicial. Si la solución es la que
deseamos procedemos a grabar el programa (debidamente compilado) en el
microcontrolador haciendo uso de una herramienta (grabador de microcontroladores). En
este punto es posible aplicar un emulador o un ICD a fin de verificar que los resultados
elaborados por el simulador son apropiados, el emulador o ICD a diferencia del simulador
trabaja sobre hardware real. En caso que falle en este punto retomamos el diseño original.
Superada ambas fases procedemos a colocarlo sobre el hardware final que ha de operar.
Metodologia de Estudio.
3. Microcontroladores Microchip 16F887
Casi todos los fabricantes de microprocesadores lo son también de microcontroladores, en
el mercado existen una serie de marcas bastante conocidas y reconocidas como es el caso
de Microchip, Motorola, Hitachi, etc. Hemos seleccionado a Microchip y en particular la serie
16F887, motivos para usar este dispositivo sobran, el principal de ellos es la abundante
información y herramientas de diseño existente en el mercado (tanto local como
internacional). También salta a la vista el hecho que es sencillo en el manejo y contiene un
buen promedio elevado en los parámetros (velocidad, consumo, tamaño, alimentación).
Arquitectura RISC
El microcontrolador cuenta con solo 35 instrucciones diferentes
Todas las instrucciones son uni-ciclo excepto por las de ramificación
Frecuencia de operación 0-20 MHz
Oscilador interno de alta precisión
Calibrado de fábrica
Rango de frecuencia de 8mhz a 31khz seleccionado por software
Voltaje de la fuente de alimentación de 2.0V a 5.5V
Consumo: 220ua (2.0V, 4mhz), 11ua (2.0 V, 32 kHz) 50na (en modo de espera)
Ahorro de energía en el Modo de suspensión
Brown-out Reset (BOR) con opción para controlar por software
35 pines de entrada/salida
Alta corriente de fuente y de drenado para manejo de LED
Resistencias pull-up programables individualmente por software
Interrupción al cambiar el estado del pin
Memoria ROM de 8K con tecnología FLASH
El chip se puede re-programar hasta 100.000 veces
Opción de programación serial en el circuito
El chip se puede programar incluso incorporado en el dispositivo destino.
Descripción de Pines
La funcionalidad de los pines presentados anteriormente es muy útil puesto que permite un
mejor aprovechamiento de los recursos del microcontrolador sin afectar a su
funcionamiento. Estas funciones de los pines no se pueden utilizar simultáneamente, sin
embargo se pueden cambiar en cualquier instante durante el funcionamiento. Las
siguientes tablas se refieren al microcontrolador DIP de 40 pines.
Caracteristicas PIC16F887.
4. Arquitectura 16F887
Los PIC16F887 de Microchip pertenecen al tipo de procesador RICS que es un procesador
de instrucciones reducidas, se caracteriza por que el número de instrucciones es pequeño
y además casi todas se realizan en la misma cantidad de tiempo, por otro lado posee
unidades que trabajan en paralelo conectadas por pipes o tuberías. Este tipo de procesador
emplea una arquitectura Harvard lo que significa que trabaja las zonas de memoria de
programa y datos en forma separada. En el siguiente diagrama se muestra la arquitectura
Von Neumann frente a la Harvard:
La CPU cuenta con sólo 35 instrucciones simples. Cabe decir que para poder programar
otros microcontroladores en lenguaje ensamblador es necesario saber más de 200
instrucciones
El tiempo de ejecución es igual para casi todas las instrucciones y tarda 4 ciclos de reloj.
La frecuencia del oscilador se estabiliza por un cristal de cuarzo. Las instrucciones de salto
y de ramificación tardan ocho ciclos de reloj en ejecutarse. Esto significa que si la velocidad
de operación del microcontrolador es 20 MHz, el tiempo de ejecución de cada instrucción
será 200nS, o sea, el programa ejecutará 5millones de instrucciones por segundo.
Memoria
El PIC16F887 tiene tres tipos de memoria: ROM, RAM y EEPROM. Como cada una tiene
las funciones, características y organización específicas, vamos a presentarlas por
separado.
Arquitectura interna 16F887
TIMER2
Registro de
Trabajo (W)
SFR (Special Function Register) Registros de propósito especial, son registros que
ayudan a configurar el hardware interno así como sirven para escribir o leer valores
de los diferentes componente que constituyen el microcontrolador. Por ejemplo el
registro “trisa” que nos permite configurar el modo de trabajo de las líneas del puerto
Am.
La memoria ROM se utiliza para guardar permanente el programa que se está ejecutando.
Es la razón por la que es frecuentemente llamada “memoria de programa”. El PIC16F887
tiene 8Kb de memoria ROM (en total 8192 localidades). Como la memoria ROM está
fabricada con tecnología FLASH, su contenido se puede cambiar al proporcionarle un
voltaje de programación especial (13V). No obstante, no es necesario explicarlo en detalles
puesto que se realiza automáticamente por un programa especial en la PC y un simple
dispositivo electrónico denominado programador.
Memoria EEPROM
Similar a la memoria de programa, el contenido de memoria EEPROM está
permanentemente guardado al apagar la fuente de alimentación. Sin embargo, a diferencia
de la ROM, el contenido de la EEPROM se puede cambiar durante el funcionamiento del
microcontrolador. Es la razón por la que esta memoria (256 localidades) es perfecta para
guardar permanentemente algunos resultados creados y utilizados durante la ejecución del
programa.
Memoria RAM
Es la tercera y la más compleja parte de la memoria del microcontrolador. En este caso
consiste en dos partes: en registros de propósito general y en los registros de funciones
especiales (SFR). Todos estos registros se dividen en cuatro bancos de memoria de los
que vamos a hablar más tarde en este capítulo. Aunque los dos grupos de registros se
ponen a cero al apagar la fuente de alimentación, además están fabricados de la misma
forma y se comportan de la manera similar, sus funciones no tienen muchas cosas en
común.
Bancos de la memoria RAM
La memoria RAM está dividida en cuatro bancos. Antes de acceder a un registro al escribir
un programa (para leer o cambiar su contenido), es necesario seleccionar el banco que contiene ese
registro. Más tarde vamos a tratar dos bits del registro STATUS utilizados para selección del
banco. Para simplificar el funcionamiento, los SFR utilizados con más frecuencia tienen la
misma dirección en todos los bancos, lo que permite accederlos con facilidad.
Organización de la memoria
8. Herramientas
Para programar es necesario contar con herramientas en hardware y software, en el
mercado existen muchas herramientas que van de ensambladores a simuladores,
emuladores o Debugger físicos.
MPLAB
El MPLAB es un entorno de desarrollo es decir es un recipiente que incluye varias
herramientas:
Contiene un editor de textos que no permite ingresar el programa expresado en códigos
nemónico (o simplemente llamado ensamblador), normalmente este se guarda en una
archivo con extensión ASM.
Una vez que hemos ingresado el programa dentro de un archivo creamos un proyecto
dentro del MPLAB el proyecto puede contener a su vez varios archivos ASM que se
relacionen a través de llamadas a rutinas o compartan y/o variables, adicionalmente el
proyecto tiene un grupo de variables que debemos configurar como es el tipo de
microcontrolador que vamos a usar ya que el MPLAB soporta todas las familias de
microcontroladores Microchip (MPLAB es producido por Microchip). A continuación
procedemos a llamar al programa ensamblador que lleva el MPLAB capaz de transformar
los código nemónicos (instrucciones) a los correspondientes valores binarios que a su vez
grabaremos en el microcontrolador. El ensamblador (MPASMWIN) también genera otros
archivos de salida que ayudan en el diseño de aplicaciones. Dentro del MPLAB
encontramos también al MPSIM que es un potente simulador que nos permitirá observar el
comportamiento del programa antes de proceder grabar el programa. El archivo .HEX es el
que contiene los códigos binarios a grabar en el microcontrolador. (El MPLAB es un
software de libre distribución que se encuentra disponible en el homenaje de microchip
www.microchip.com)
ICD El ICD (In Circuit Debugger) es una herramienta que tiene componentes en hardware
y en software. El software viene incluido en el MPLAB es de fácil uso y configuración. ICD
es una característica incluida en algunos microcontroladores de Microchip. Se habilita
mediante un bit al momento de grabar el microcontrolador de tal forma que el
microcontrolador ejecuta el programa hasta una determinada instrucción, en ese momento
el microcontrolador se detiene y procese a transmitir vía puerta serial todos los datos que
tiene en los bancos de memoria (SFR y los GFR). De esta forma podemos ver en la pantalla
del ordenador lo que pasa internamente en el microcontrolador cuando ejecutamos un
programa. El hardware es otro componente del ICD consiste en una serie de circuitos que
ejecutan la grabación (transistores que trabajan como interruptores en corte y saturación)
así como un microcontrolador (PIC16F876) que recibe los datos y los transmite a la
computadora. Finalmente el ICD se conecta a una tarjeta básica pero efectiva llamada
DEMOBOARD. El ICD es una herramienta potente en el sentido que permite corregir
rápidamente los errores lógicos que siempre se presentan en la programación.
GRABADORES
Los grabadores de microcontroladores, toman como entrada un archivo HEX para grabarlo
en un
Microcontrolador. Generalmente los grabadores son herramientas que trabaja con un
circuito conectado al puerto paralelo, la idea es tomar el contenido del archivo HEX y
depositarlo en la memoria de programa del PIC. Uno de los más populares es el NOPPP,
en internet está disponible el programa ejecutable, el programa fuente y el circuito. Es un
excelente punto de partida para entender cómo se lleva a cabo el proceso de grabación de
un PIC. Las herramientas descritas anteriormente trabajan íntimamente, si graficamos la
forma como se relacionan podríamos expresar la idea a través del siguiente diagrama:
Hemos indicado que la memoria de datos del PIC16F887 se divide en cuatro bancos: 0, 1,
2 y 3. En las posiciones inferiores de ambos bancos se encuentran los registros especiales
de función (SFR). En la posición 0x05, 0x06, 0x07, 0x08 y 0x09 respectivamente se
encuentran los registros PORTA, PORTB, PORTC, PORTD y PORTE que se usan para
leer o escribir datos en tanto que en las posiciones 0x85, 0x86, 087, 0x88 y 0x89 se
encuentran los registros TRISA, TRISB, TRISC, TRISD y TRISE respectivamente, es allí
donde se configuran los puertos. Cabe señalar que el PORTB también aparece en el banco
2 en la posición de memoria 0x106 y el TRISB en la posición de memoria 0x186.
Cada una de las líneas de los puertos puede ser configurado como entrada o como salida.
En los registros TRIS determinamos la configuración de los puertos. Los registros son una
suerte de mascara. Por ejemplo si escribimos un 0 en el bit 0 del TRISA la línea RA0 se
comportará como una línea de salida. Si colocamos a 1 el bit 0 del TRISA a la línea RA0
se comportará como entrada. A través de los valores que escribamos en los registros TRIS
determinamos el comportamiento de los puertos. La escritura y lectura de valores desde los
puertos se hace a través de los registros PORT que se encuentran en el Banco 0 (y banco
2 para el puerto B). Desde luego si configuramos un puerto como entrada (lectura) los
valores que escribamos en el no tendrán efecto porque fue configurado como entrada y no
como salida. A través de las instrucciones MOV podemos leer o escribir valores
NOTA.- El puerto A es un puerto multifunción que se puede configurar como digital o como
analógico este modo de funcionamiento dependerá del registro ADCON1 (banco 1 posición
0x1F). Por el momento no profundizaremos en el tema sino cuando llegamos al módulo
ADC. Solo nos bastará saber que el debemos configurar los bits de la siguiente manera:
Las instrucciones orientadas a byte reservan los 7 bits de menor peso para indicar la
dirección del registro que será operado. Una vez que se lleva a efecto la operación usamos
el bit d para indicar donde será almacenado el resultado. Si d es 0 el resultado se almacena
en el registro de trabajo W, si d es 1 el resultado será guardado en el mismo registro (o file)
que se operó.
Las operaciones orientas a bit buscan escribir o leer una posición (bit) dentro de un file o
registro. Una vez más los 7 bits inferiores son destinados para indicar la dirección de registro
o file que vamos a trabajar y los siguientes tres bit especifican el bit dentro del registro.
Desarrollar un programa que configure las líneas del puerto A como entrada y las líneas del
puerto B como salida. Y que muestre en forma permanente la entrada del puerto A en el
puerto B. Si desarrollamos el algoritmo se reduce a:
Sirve para indicar la dirección de memoria en la cual será colocado el código generado a
continuación. Si el ORG no es indicado se empieza en la dirección 0. Ejemplo:
Indica que el siguiente “nop” se colocará en la dirección 0x04 de la dirección de programa.
DIRECTIVA EQU
DIRECTIVA END
Es de uso obligatorio y siempre se coloca al final del programa sirve para marcar el final del
programa. El
MPLAB solo reconoce las líneas que estén escritas previas a la aparición de la directiva.
DIRECTIVA LIST
Sirve para indicarle al MPLAB cuál es el formato del archivo *.list dentro de los parámetros
está el tipo de procesador que se va a emplear. Ejemplo:
DIRECTIVA INCLUDE
Sirve para incluir en el ensamblado el archivo indicado por el parámetro “file”. Es como si el
“file” fuera parte del archivo, como si se hubiera situado en la posición en la cual la directiva
aparece. El parámetro “file” puede incluir el path o camino en el cual se encuentra el fichero
a incluir. En caso se omita asumirá los directorios del MPLAB y del archivo fuente.
Incluye el archivo “p16F887.inc” que contiene las etiquetas genéricas del PIC16F887
PRIMERAS INSTRUCCIONES
Sintaxis: [ label ] BSF f,b
Operandos: 0 ≤ f ≤ 127
0≤b≤7
Operación: 1 → (f<b>)
Afecta Status: No
Descripción: El bit 'b' del registro 'f' es puesto a 1-lógico.
CLRF Clear f
Sintaxis: [ label ] CLRF f
Operandos: 0 ≤ f ≤ 127
Operación: 00h → (f)
1→Z
Afecta Status: Z
Descripción: El contenido del registro ’f’ es puesto a 0-lógicos y el bit Z del STATUS es
puesto a 1-lógico.
MOVWF Move W to f
Sintaxis: [ label ] MOVWF f
Operandos: 0 ≤ f ≤ 127
Operación: (W) → (f)
Afecta Status: No
Descripción: Mueve el dato del registro W al registro 'f'.
Con las directivas y las instrucciones mostradas procedemos a elaborar el código del primer
programa.
A) Nociones previas
MPLAB. Es un entorno de desarrollo que incluye varias herramientas que ayudan a
desarrollar aplicaciones en torno a microcontroladores de la familia Microchip. Incluye
un editor, un ensamblador (MPASMWIN), un simulador (MPSIM), el software del
PICSTART (programador), software para el ICD (in Circuit Debugger).
1. Ingresar al MPLAB:
Inicio-> Programas-> Microchip MPLAB-> MPLAB o haga doble click sobre el
icono del programa en el escritorio:
2. Cree un proyecto:
Primero con ayuda del explorador de WINDOWS cree una carpeta de trabajo:
C:\Users\Victrm\Documents\MPLAB\CURSO
4. Ensamble el programa.
Una vez realizado el programa se procede a
compilarlo y para ello se dirige el cursor a la pestaña
“Project” y posteriormente se selecciona la opción
“Quick nombre del archivo.ASM”.
Aparecerá la pestaña “Output” en la que se indicará
el proceso de compilación. Una vez terminado el
proceso aparecerá la leyenda “BUILD SUCCEDED”
como lo muestra la figura 2. En el caso de que el
programa no haya presentado errores en de sintaxis. Figura 1. Pestaña Project.
Figura 4. Stimulus.
En la figura 5. Se muestra un
ejemplo de configuración para el
Stimulus en el cual el puerto A
sirve está configurado como
entrada y cada uno de los pines
tienen configurados la opción
“Toggle” comportándose como un
interruptor que con un click puede
dar una señal lógica binaria.
Figura 6. Watch.
Correr programa
Finalmente, con todas las herramientas configuradas se procede a correr el programa
manipulando en la barra de herramientas las opciones que se presentan para la simulación
del programa en MPLAB mostradas en la figura 8.
Para el caso de este programa la aplicación consiste en pasar lo que se tiene en el puerto
A a la variable y posteriormente realizar la comparación para encender o apagar la lámpara
y gracias al simulador de MPLAB se comprobó el correcto funcionamiento del programa.
7. Principales registros del PIC16F887 (STATUS)
Hemos indicado que la memoria de los datos del microcontrolador se divide en bancos de
memoria, las posiciones inferiores están destinadas a los registros especiales de función
(SPECIAL FUNCTION REGISTER). En esta sección profundizaremos un poco más acerca
de los principales registros y observaremos el uso que se les puede dar en el desarrollo del
programa.
Bit 7: IRP Register Bank Select Bit (es un bit que se usa para las operaciones de
direccionamiento indirecto 0 = Si se trabaja sobre el banco 0 ó 1 (posiciones de memoria
que van desde 00h hasta FFh) 1 = Si trabajamos con el banco 2 ó 3 (posiciones de memoria
que van desde 100h hasta 1FFh)
Bit 6-5: RP1, RP0 Register Bank Select (bits usando en el direccionamiento directo)
00 = Banco 0, (posiciones de memoria 00-7Fh)
01 = Banco 1, (posiciones de memoria 80-FFh)
10 = Banco 2, (posiciones de memoria 100-17Fh)
11 = Banco 3, (posiciones de memoria 180-1FFh)
Los bancos pueden contener hasta 128 posiciones.
Los tres bits que se encuentran en la parte inferior son bits que reportan el estado de la
ALU tras la ejecución de una instrucción. Estos bits son de lectura. Los bits pueden ser de
escritura si y solo si la instrucción no afecta el estado de los bits Z, DC y C. Las instrucciones
que no afectan al STATUS son BCF, BSF, SWAP y MOVWF. Si quisiéramos colocar todos
los bits del STATUS a 0 lógico la aplicación de la instrucción CLRF STATUS fallaría por
que la instrucción afecta a los bis Z, DC y C. De hecho los bits C y DC conservarían el valor
previo a la aplicación de la instrucción CRLF STATUS en tanto que el bit Z se colocaría a 1
por que el resultado de la última operación fue un 0.
Los bits que se encuentran en medio (-T0 y -PD) son usados para registrar si el
microcontrolador está trabajando y cuál es el modo de operación. El microcontrolador puede
estar encendido y a su vez tiene dos modos de operación: activo y reposo (o bajo consumo).
Los bits también reportan el estado del WATCHDOG, cuando el periodo de tiempo del
WATCHDOG se ha vencido el bit -T0 se coloca a 1. Es necesario indicar que ambos bits
son solo de lectura y se modifican en función al modo de operación de microcontrolador
(visto desde el punto de vista de la alimentación o consumo de energía). En consecuencia
la aplicación de la instrucción CLRF STATUS fallaría también porque no es posible
modificar el estado de los bits.
Los bits localizados en la parte superior del registro STATUS son relacionados al uso de
los bancos la combinación de los mismo determina cual es el banco actual con el que
estamos trabajando. Las instrucciones recomendables para manipular los bits son BSF y
BCF. Los bits superiores son de lectura y escritura.
Observaciones
Cuando se aplican las instrucciones de rotación de bits a la izquierda o derecha (RLF o
RRF) el bit de C es el valor que se emplea para llenar el agujero producido por la instrucción,
motivo por el cual es necesario colocar el bit C a cero o uno lógico dependiendo si
deseamos que la posición libre sea cubierta por uno de los dos valores.
La instrucción SWAPF no modifica el estado de los bits Z, DC y C pero eso no implica que
la aplicación de la instrucción sobre el STATUS vaya a lograr el intercambio de los nibles.
Al aplicar las instrucciones seguramente los bits IRP, RP1, RP0, Z, DC y C se
intercambiarán uno a uno pero los bits -T0 y -PD no serán intercambiados ya que son de
lectura.
Cuando una instrucción es ejecutada puede afectar el estado del STATUS, este hecho
resulta aparentemente irrelevante más la ayuda que presta es valiosa en la elaboración de
soluciones por ejemplo:
Considere la instrucción:
8. Ejercicios.
Ejercicio 1: Suponga una lámpara que debe ser prendida o apagada desde tres
puntos. Diseñe un programa que la encienda si y solo si hay dos interruptores
activados.
Supongamos que tenemos los tres interruptores dispuestos en el PORTA (RA0, RA1 y
RA2) y definimos la línea RA3 como salida tendríamos la siguiente tabla de
funcionamiento operacional:
Salida Entrada
RA3 RA2 RA1 RA0
0 0 0 0
0 0 0 1
0 0 1 0
1 0 1 1
0 1 0 0
1 1 0 1
1 1 1 0
0 1 1 1
SUBWF Substrae W de f
Sintaxis: [etiqueta] SUBWF f, d
Operandos: 0 <= f <= 127 d= [0,1]
Operación: (f) – (W) → (destino)
Programación en MPLAB
Diseñar el programa
3. Compilar programa
Una vez realizado el programa se procede a compilarlo y para ello se dirige el cursor a la
pestaña “Project” y posteriormente se selecciona la opción
“Quick nombre del archivo.ASM”.
Aparecerá la pestaña “Output” en la que se indicará el
proceso de compilación. Una vez terminado el proceso
aparecerá la leyenda “BUILD SUCCEDED” como lo muestra
la figura 2. En el caso de que el programa no haya
presentado errores en de sintaxis.
Figura 1. Pestaña Project.
Figura 4. Stimulus.
En la figura 5. Se muestra un
ejemplo de configuración para el
Stimulus en el cual el puerto A
sirve está configurado como
entrada y cada uno de los pines
tienen configurados la opción
“Toggle” comportándose como un
interruptor que con un click puede
dar una señal lógica binaria.
Figura 6. Watch.
Figura 7. Ventana Watch.
Correr programa
Finalmente, con todas las herramientas configuradas se procede a correr el programa
manipulando en la barra de herramientas las opciones que se presentan para la simulación
del programa en MPLAB mostradas en la figura 8.
Para el caso de este programa la aplicación consiste en pasar lo que se tiene en el puerto
A a la variable y posteriormente realizar la comparación para encender o apagar la lámpara
y gracias al simulador de MPLAB se comprobó el correcto funcionamiento del programa.
Simulación en Proteus
1. Realizar el circuito
4. Circuito en Protoboard.
Se armó el circuito en protoboard y quedando de la siguiente manera.
Definiciones previas:
Marco Teórico
PIC16F887
El siguiente diagrama da cuenta de los pines del PIC16F887:
Para esta aplicación utilizamos las siguientes nuevas instrucciones:
MOVF f,w mueve el dato del registro f al registro W
BCF f,d pone en 0 el bit d del registro f
SUBWF f,W resta el dato en el registro f menos el dato del registro de trabajo
BTFSC f,d si el bit d del registro f es cero salta una instrucción si no continua
con la siguiente
BSF f,d pone en 1 el bit d del registro f
Diseñar el programa
3. Compilar programa
Figura 4. Stimulus.
Figura 6. Watch.
Correr programa
Finalmente, con todas las herramientas configuradas se procede a correr el programa
manipulando en la barra de herramientas las opciones que se presentan para la simulación
del programa en MPLAB mostradas en la figura 8.
Para el caso de este programa la aplicación consiste en encender el PIN RB4 de nuestro
puerto B cuando la combinación de los puertos RB0-RB3 sea la correcta y gracias al
simulador de MPLAB se comprobó el correcto funcionamiento del programa.
Simulación en Proteus
1. Realizar el circuito
Figura 10. Circuito en Proteus del programa 2 en PIC.
3. Simular
Figura 12. Simulación del ejercicio 2 en PIC.
4. Circuito en Protoboard.
Se armo el circuito en protoboard y quedando de la siguiente manera.
Salida Entrada
RB4 RB3 RB2 RB1 RB0
1 0 0 0 1
1 0 0 1 1
1 0 1 1 1
1 1 0 1 0
1 1 1 1 1
Para las demás combinaciones RB4 será 0
Algoritmo
Diseñar el programa
7. Compilar programa
Figura 4. Stimulus.
Figura 6. Watch.
Correr programa
Finalmente, con todas las herramientas configuradas se procede a correr el programa
manipulando en la barra de herramientas las opciones que se presentan para la simulación
del programa en MPLAB mostradas en la figura 8.
Para el caso de este programa la aplicación consiste en encender el PIN RB4 de nuestro
puerto B cuando la combinación de los puertos RB0-RB3 sea la correcta y gracias al
simulador de MPLAB se comprobó el correcto funcionamiento del programa.
Simulación en Proteus
5. Realizar el circuito
8. Circuito en Protoboard.
Se armo el circuito en protoboard y quedando de la siguiente manera.
Figura 13. Conexión del ejercicio 3 en PIC.
Algoritmo
Para nuestra práctica vamos a utilizar el puerto B del PIC como entradas y el puerto A
como salidas.
Para esta aplicación utilizamos las siguientes nuevas instrucciones:
MOVF f,w mueve el dato del registro f al registro W
MOVF w,f mueve el dato del registro w al registro f
BCF f,d pone en 0 el bit d del registro f
BSF f,d pone en 1 el bit d del registro f
BTFSC f,d si el bit d del registro f es cero salta una instrucción si no continua
con la siguiente
BTFSS f,d si el bit d del registro f es uno salta una instrucción si no continua
con la siguiente
SWAP f Intercambia los Nibles altos y bajos del registro
ANDWF Hace la función lógica AND entre el registro de trabajo y el registro f
Diseñar el programa
3. Compilar programa
Figura 4. Stimulus.
Figura 6. Watch.
Correr programa
Finalmente, con todas las herramientas configuradas se procede a correr el programa
manipulando en la barra de herramientas las opciones que se presentan para la simulación
del programa en MPLAB mostradas en la figura 8.
Para el caso de este programa la aplicación consiste en comparar los dos números de 4
bits almacenados en los nibles alto y bajo del puerto B, y dependiendo de la comparación
se encenderán una de las 3 lamparas ubicadas en el PortA, representando mayor, menor
o igualdad y gracias al simulador de MPLAB se comprobó el correcto funcionamiento del
programa.
Simulación en Proteus
1. Realizar el circuito
Figura 10. Circuito en Proteus del programa 4 en PIC.
3. Simular
Figura 12. Simulación del ejercicio 4 en PIC.
4. Circuito en Protoboard.
Se armó el circuito en protoboard y quedando de la siguiente manera.
Resultado RC3 RC2 RC1 RC0 RB4 RB3 RB2 RB1 RB0
00000010 0 0 0 1 0 0 0 0 1
00000100 0 0 1 0 0 0 0 1 0
00001000 0 1 0 0 0 0 1 0 0
00010111 1 0 1 0 0 1 1 0 1
00101110 1 1 1 1 1 1 1 1 1
Algoritmo
a) El resultado sea mostrado en binario a través de leds.
1. Seleccionar microcontrolador y librerías
2. Configurar puertos (Puerto B,C entradas y Puerto D salidas)
3. Limpiar puertos
4. Definir variables (MPORTB y MPORTC)
5. Leer port B y mandarlo a la variable MPORTB (enmascarado con AND
b'00011111')
6. Leer port C y mandarlo a la variable MPORTC (enmascarado con AND
b'00001111')
7. Realizamos la suma de MPORTB y MPORTC.
8. Mostrar el resultado en portD.
9. Regresar al paso 5.
Definiciones previas:
Marco Teórico
PIC16F887
El siguiente diagrama da cuenta de los pines del PIC16F887:
El visualizador de siete segmentos (llamado también display por calco del inglés) es
una forma de representar caracteres en equipos electrónicos. Está compuesto de siete
segmentos que se pueden encender o apagar individualmente. Cada segmento tiene la
forma de una pequeña línea. Se podría comparar a escribir números con cerillas o
fósforos de madera.
Cada uno de los segmentos que forman la pantalla están marcados con siete primeras
letras del alfabeto ('a'-'g'), y se montan de forma que permiten activar cada segmento por
separado, consiguiendo formar cualquier dígito numérico. A continuación se muestran
algunos ejemplos:
Diseñar el programa
3. Compilar programa
Figura 4. Stimulus.
En la figura 5. se muestra un ejemplo de
configuración para el Stimulus en el
cual el puerto B y C sirven y estan
configurado como entradas y cada uno
de los pines tienen configurados la
opción “Toggle” comportándose como
un interruptor que con un click puede
dar una señal lógica binaria.
Figura 6. Watch.
Simulación en Proteus
1. Realizar el circuito
Figura 10. Circuito en Proteus del programa 5a en PIC.
3. Simular
Figura 12. Simulación del ejercicio 5a en PIC.
Circuito en Protoboard.
Se armo el circuito en protoboard y quedando de la siguiente manera.
El visualizador de siete segmentos (llamado también display por calco del inglés) es
una forma de representar caracteres en equipos electrónicos. Está compuesto de siete
segmentos que se pueden encender o apagar individualmente. Cada segmento tiene la
forma de una pequeña línea. Se podría comparar a escribir números con cerillas o
fósforos de madera.
Cada uno de los segmentos que forman la pantalla están marcados con siete primeras
letras del alfabeto ('a'-'g'), y se montan de forma que permiten activar cada segmento por
separado, consiguiendo formar cualquier dígito numérico. A continuación se muestran
algunos ejemplos:
Diseñar el programa
3. Compilar programa
Figura 6. Watch.
Figura 7. Ventana Watch.
Correr programa
Finalmente, con todas las herramientas configuradas se procede a correr el programa
manipulando en la barra de herramientas las opciones que se presentan para la simulación
del programa en MPLAB mostradas en la figura 8.
Simulación en Proteus
1. Realizar el circuito
Figura 10. Circuito en Proteus del programa 5b en PIC.
3. Simular
Figura 12. Simulación del ejercicio 5b en PIC.
4. Circuito en Protoboard.
Se armo el circuito en protoboard y quedando de la siguiente manera.
Salida Entrada
RB2 RB1 (Arranque) RB0 (Paro)
0 0 0
0 0 1
1 1 0
0 1 1
Algoritmo
Definiciones previas.
Marco Teórico
PIC16F887
El siguiente diagrama da cuenta de los pines del PIC16F887:
Para nuestra práctica vamos a utilizar el puerto A del PIC RA0-RA2 como entradas y RA3
como salida
Para esta aplicación utilizamos las siguientes nuevas instrucciones:
MOVF f,w mueve el dato del registro f al registro W
MOVF w,f mueve el dato del registro w al registro f
BCF f,d pone en 0 el bit d del registro f
BSF f,d pone en 1 el bit d del registro f
BTFSS f,d si el bit d del registro f es 1 salta una instrucción si no continua con
la siguiente
Todos los generadores necesitan una máquina motriz (motor) de algún tipo para producir
la fuerza de rotación, por medio de la cual un conductor puede cortar las líneas de fuerza
magnéticas y producir una fem. La máquina más simple de los motores y generadores es
el alternador.
Diseño del programa:
Programación en MPLAB
Diseñar el programa
3. Compilar programa
Figura 4. Stimulus.
Figura 6. Watch.
Correr programa
Finalmente, con todas las herramientas configuradas se procede a correr el programa
manipulando en la barra de herramientas las opciones que se presentan para la simulación
del programa en MPLAB mostradas en la figura 8.
Para el caso de este programa la aplicación consiste en manipular un motor por medio del
microcontrolador con un botón de arranque y otro de paro, dándole prioridad al botón de
paro y gracias al simulador de MPLAB se comprobó el correcto funcionamiento del
programa.
Simulación en Proteus
1. Realizar el circuito
Figura 10. Circuito en Proteus del programa 6 en PIC.
3. Simular
Figura 12. Simulación del ejercicio 6 en PIC.
4. Circuito en Protoboard.
Se armo el circuito en protoboard y quedando de la siguiente manera.
S1 S2 S3 S4
Arranque
Algoritmo
Definiciones previas.
Marco Teórico
PIC16F887
El siguiente diagrama da cuenta de los pines del PIC16F887:
144
Sensor electromagnético:
Se basa en el principio de que una variación en el flujo magnético sobre una bobina,
genera una fuerza electromotriz.
145
MOVF f,w mueve el dato del registro f al registro W
MOVF w,f mueve el dato del registro w al registro f
BCF f,d pone en 0 el bit d del registro f
BSF f,d pone en 1 el bit d del registro f
BTFSS f,d si el bit d del registro f es 1 salta una instrucción si no continua con
la siguiente
146
Programación en MPLAB
147
Diseñar el programa
148
149
3. Compilar programa
150
Dentro de la simulación en MPLAB se requiere de la
configuración del Stimulus ya que este nos permitirá
generar señales asíncronas para que así se puedan
observar de mejor manera las condiciones de trabajo
del programa, así como sus respuestas a las diferentes
señales que se le dan por medio del puerto configurado
como entrada.
Esta opción se encuentra dentro de la pestaña
“Debugger” la cual se debe de crear un nuevo cuaderno
de trabajo en donde se configurarán las entradas y la
naturaleza de las señales que se le van a suministrar
para proceder en la simulación.
Figura 4. Stimulus.
151
Otra herramienta por configurar es el “Watch” que nos
servirá para observar los cambios que presentan cada
uno de los registros presentes dentro del
microcontrolador. Estos registros pueden ser
configurados de tal forma que nos muestran el valor
en binario para cada uno de sus 8 bites.
Para abrir la ventana se debe de ir a la opción “View”
en donde encontraremos el nombre “Watch”.
Al seleccionarlo aparecerá la ventana de esta
herramienta la cual se debe configurar, como se
muestra en la figura 7, agregando los registros que se
quiere observar su comportamiento y añadiendo
pestañas dependiendo de la forma en la que se desea
que se muestre el valor que esta tomando el registro
en diferentes momentos de la simulación.
Figura 6. Watch.
Correr programa
Finalmente, con todas las herramientas configuradas se procede a correr el programa
manipulando en la barra de herramientas las opciones que se presentan para la simulación
del programa en MPLAB mostradas en la figura 8.
152
Probar las configuraciones
Simulación en Proteus
1. Realizar el circuito
153
Figura 10. Circuito en Proteus del programa 7 en PIC.
3. Simular
154
Figura 12. Simulación del ejercicio 7 en PIC.
4. Circuito en Protoboard.
Se armo el circuito en protoboard y quedando de la siguiente manera.
155
Para programar el PIC conectamos el programador universal a la computadora por medio
del puerto USB.
La primera pestaña que nos aparecerá será para elegir el tipo de programador que tenemos
y el tipo de conexión, una vez seleccionado daremos click en “Conect” y si el programador
se conecta correctamente aparecerá un mensaje en la pantalla indicándolo.
156
Figura 16. Selección del microcontrolador 16F887.
157
Teniendo ya seleccionado el programa
procedemos a colocar el PIC en el programador,
luego en el software realizamos las operaciones
de Blank y Errase para dejar listo el PIC para ser
Figura 18. Opciones de programación. programado.
Después damos click en “Program” y aparecerá
la siguiente ventana donde colocaremos las opciones como se muestra en la figura 19.
158
Ejercicio 8. Desplegar un mensaje a través de una pantalla LCD configurada a través de
un microcontrolador.
Mensaje a desplegar.
Equipo 1.0
Grupo: 7RM1
Algoritmo
Definiciones previas.
Marco Teórico
PIC16F887
El siguiente diagrama da cuenta de los pines del PIC16F887:
LCD: Una pantalla de cristal líquido o LCD (sigla del inglés Liquid Crystal Display) es una
pantalla delgada y plana formada por un número de píxeles en color o monocromos
colocados delante de una fuente de luz o reflectora. A menudo se utiliza en dispositivos
electrónicos de pilas, ya que utiliza cantidades muy pequeñas de energía eléctrica.
Característica:
Cada píxel de un LCD típicamente consiste en una capa de moléculas alineadas entre
dos electrodos transparentes, y dos filtros de polarización, los ejes de transmisión de cada
uno que están (en la mayoría de los casos) perpendiculares entre sí. Sin cristal líquido
159
entre el filtro polarizante, la luz que pasa por el primer filtro sería bloqueada por el
segundo (cruzando) polarizador.
160
Programación en MPLAB
Diseñar el programa
161
162
163
164
Simulación en Proteus
1. Realizar el circuito
165
Figura 1. Circuito en Proteus del programa 8 en PIC.
3. Simular
166
Figura 3. Simulación del ejercicio 8 en PIC.
4. Circuito en Protoboard.
Se armo el circuito en protoboard y quedando de la siguiente manera.
167
Programación del PIC con el software PG4UW
Para programar el PIC conectamos el programador universal a la computadora por medio
del puerto USB.
La primera pestaña que nos aparecerá será para elegir el tipo de programador que tenemos
y el tipo de conexión, una vez seleccionado daremos click en “Conect” y si el programador
se conecta correctamente aparecerá un mensaje en la pantalla indicándolo.
168
Posteriormente se procede a elegir el
microcontrolador utilizando la opción “Select
device…” ubicada en la pestaña “Device” como se
muestra en la figura 15.
A continuación, se abrirá una ventana con todas las
opciones de microcontroladores para programar
para este caso se procede a buscar el PIC16F887
y se selecciona.
169
Figura 7. Selección del microcontrolador 16F887.
170
Teniendo ya seleccionado el programa
procedemos a colocar el PIC en el programador,
luego en el software realizamos las operaciones
de Blank y Errase para dejar listo el PIC para ser
Figura 18. Opciones de programación. programado.
Después damos click en “Program” y aparecerá
la siguiente ventana donde colocaremos las opciones como se muestra en la figura 19.
171
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: