Вы находитесь на странице: 1из 20

Objetivos:

Realizar las configuraciones iniciales del microcontrolador PIC16F887 y aprender a realizar las
conexiones ya se en una placa o de manera manual.

Configurar puertos del microcontrolador PIC16F887 como entrada y/o salida para poder
realizar las respectivas operaciones y poder utilizar unos puertos unos como entradas y otros
de salida.

Utilizar las diferentes instrucciones del microcontrolador PIC16F887 para poder realizar las
operaciones aritméticas de suma, resta, multiplicación y división cuando sea solicitado y
mostrando cada resultado por los respectivos puertos que solicite.

Introducción:

La práctica realizada “Uso de puertos y operaciones” pone en práctica y nos ayuda a mejorar
nuestro conocimiento sobre las operaciones aritméticas como es el caso de la suma, resta,
multiplicación y división utilizando los datos que se introducen por el PORTD para poder
realizar las respectivas operaciones y mostrando los datos obtenidos en un puerto configurado
como salida (PORTC).

Las entradas y salidas se encontrarán en sistema binario, las entradas de información serán a
través de un dip switch el cual dará números de 8 bits y 4 push button el cual nos permitirá
elegir para decidir qué operación queramos realizar y en el momento que nosotros decidamos.

La salida del sistema era por el PORTC el cual contiene 8 leds el cual nos mostrara el resultado
de dichas operaciones y 2 leds del PORTB los cuales nos indicaron cuando una operación lleva
acarreo y el otro que estamos presionando muestra cuando realizamos una operación.

Para realizar esta práctica ocupamos el PIC16F887 y la tarjeta de desarrollo QL200.

Marco teórico:

Puertos de entrada y salida


1
“Los puertos del microcontrolador son el medio de comunicación con el mundo exterior, en
ellos podremos conectar los periféricos o circuitos necesarios como por ejemplo los módulos
LCD, motores eléctricos, etc., pero estas conexiones no se podrán realizar arbitrariamente.
Existen unas reglas básicas que deberán cumplirse para que el microcontrolador no sufra
daños o se destruya. Para ello es necesario conocer los límites de corriente que puede manejar
el microcontrolador.”

A partir de los datos proporcionados por el fabricante en la hoja de datos del microcontrolador
PIC 16F887:

Maximum current out of VSS pin .................................................................... 300 mA

Maximum current into VDD pin .......................................................................250 mA

Maximum current sunk by PORTA, PORTB and PORTE (combined).............…..200 mA

1
https://entrrnadorpic16f84.wordpress.com/4-puertos-de-entrada-y-salida/
Maximum current sourced by PORTA, PORTB and PORTE (combined) …....……200 mA

Maximum current sunk by PORTC and PORTD (combined)................................200 mA

Maximum current sourced by PORTC and PORTD (combined)… ........................200 mA

Estos parámetros son fundamentales a la hora de utilizar un pic ya que nos permiten proteger
a un pic de generarle algún daño.

Para poder determinar el control de flujo se ocupan los registros el cual corresponden: TRISA,
TRISB, TRISC etc. Lo que determina el comportamiento de bits del puerto, pero no la
información que pasará por el bit.

Al poner un cero en un bit del registro TRISX, el pin correspondiente del puerto se configurará
como una salida. De manera similar, al poner un uno en un bit del registro TRISX, el pin
correspondiente del puerto se configurará como una entrada. Esta regla es fácil de recordar:
0 = Output, 1 = Input el profe nos mencionaba que esta regla la decidió así PIC para facilitar el
aprendizaje de esta misma.

La siguiente figura1 muestra un ejemplo gráfico de entradas y salidas.


2

Ilustración 1 Explicación de entras y salidas con 0 Y 1 de un microcontrolador

2
http://panamahitek.com/entradas-y-salidas-analogicas-y-digitales/
Instrucciones y directivas:

El microcontrolador PIC16F887 contiene 35 instrucciones ya que es de tipo RISC (instrucciones


completas y reducidas), las funciones más importantes en esta práctica fueron BTFSS y BTFSC
los cuales nos permitieron tomar decisiones sobre todo para resolver multiplicación y división.

Para esta práctica utilizamos el software de MPLAB 8.92, el cual nos permite ensamblar los
códigos y verificar si están bien ensamblados ya que nos permite generar los archivos
necesarios para quemar el PIC.

ALU (Unidad Aritmético Lógica)

“La ALU es la parte del computador que realiza realmente las operaciones aritméticas y lógicas
con los datos. El resto de los elementos del computador (unidad de control, registros,
memoria, E/S) están principalmente para suministrar datos a la ALU, a fin de que esta los
procese y para recuperar los resultados. Con la ALU llegamos al estudio de lo que puede
considerarse el núcleo o esencia del computador”.

Una unidad aritmético-lógica, y en realidad todos los componentes electrónicos del


computador, se basan en el uso de dispositivos lógicos digitales sencillos que pueden
almacenar dígitos binarios y realizar operaciones lógicas booleanas elementales.” (Stallings,
2007, pág. 302)

“La Figura 2 indica, en términos generales, cómo se interconecta la ALU con el resto del
procesador. Los datos se presentan a la ALU en registros, y en registros se almacenan los
resultados de las operaciones producidos por la ALU. Estos registros son posiciones de
memoria temporal internas al procesador que están conectados a la ALU. La ALU puede
también activar indicadores (flags) como resultado de una operación.” (Stallings, 2007, págs.
302-303)

Ilustración 2 Entradas y salidas de la ALU.

3
https://www.differencebtw.com/difference-between-alu-and-cu/
Desarrollo

La primera parte del programa es realizar las palabras de configuraciones necesarias para
trabajar con el PIC y regresar al banco necesario para trabajar como la muestra la figura 3.

Ilustración 3 Instrucciones de la configuración del pic

En este punto el programa está esperando a oprimir el RB0 para agregar el valor que tengamos
en el PORTD y mostrarlo en los leds del PORTC (figura 4).

Ilustración 4 Es un ciclo donde el programa espera que se apriete el RB0 para mostrarlo en el PORTC

Ya una vez agregado el primer valor el programa se va a un menú donde espera que el usuario
oprima cualquiera de los 3 botones restantes donde tiene que elegir qué operación quiera
realizar ya sea suma, resta o multiplicación.
Ilustración 5 Menú donde el programa espera a recibir una instrucción para realizar una operación

El programa espera en el menú hasta que el usuario haya agregado el valor deseado en el
PORTD entonces oprime cualquiera de los 3 botones y el programa manda a una parte
deseada del código dependiendo de qué botón haya presionado en el caso de la suma.

Si oprimió la suma (RB1) realiza dicha operación y al final testea para saber si dicha operación
conlleva acarreo y prende dicho led después de esto va a un submenú llamado “YA” figura 6.

Ilustración 6 Operación de la suma

En el caso de la resta es (RB2) va a otra parte del código donde realiza la operación entre el
número que ya se había almacenado y el que al oprimir el botón se agrega, lo cual testea de la
misma manera para saber si hay acarreo y al finalizar manda al submenú “YA” figura 7.

Ilustración 7 Operación de resta


En el caso de la multiplicación es porque el usuario oprimió (RB3) donde también se realiza
dicha operación pero también se testea con anterioridad para saber si hay una multiplicación
por 0, luego también para saber si hay acarreo y finalmente lo manda al submenú “YA” como
lo muestra la figura 8.

Ilustración 8 Operación de multiplicación

Una vez realizada cualquiera de las operaciones anteriores todas mandaron a un submenú
llamado Ya el cual se encargaba de esperar que el usuario presionara el botón RB0 otra vez y
de esa manera se realizará la operación división como lo muestra la figura 9.

Ilustración 9 Submenú “YA”.

Una vez presionado el RB0 realiza la división del número que se encuentra en el PORTD, y lo
muestra por el PORTC como lo muestra la siguiente figura 10,11.
Ilustración 10 Testea si hay un cero en la división

Ilustración 11 Operación de la división

Diagrama de flujo

Diagrama general de la práctica.

En él se muestra cada aspecto de manera general del programa como comienza por configurar
el pic seguido de leer el RB0 para saber si da el siguiente paso , si detecta que presionaste el
botón RB0 y guarda el valor en registro 20 seguido de esto lo muestra en los leds del PORTC,
seguido de esto pasa al menú donde esta recibir la orden según el botón que se presiona y
realiza dicha operación seguido esto se va a un submenú YA donde realiza la división muestra
el resultado en el PORTC y termina el programa como lo muestra la figura 11.
Ilustración 11 Diagrama de flujo general.
Suma

Ilustración 13 Diagrama de flujo de la suma

Resta

Ilustración 14 Diagrama de flujo de la resta


Multiplicación

Ilustración 15 Diagrama de flujo de la multiplicación


DIVISION

Ilustración 16 Diagrama de flujo de división


Diagrama Eléctrico

Ilustración 17 Diagrama eléctrico del 16f887


Fotos de las operaciones

Para fines prácticos utilizaremos el numero 10 y el 5 para hacer todas las operaciones y
posteriormente se invertirá el orden de los números para mostrar las operaciones con acarreo.

Operación suma.

Primero agregaremos el 10 como lo muestra la figura 18.

Ilustración 18 se agrega el numero 10 por el PORTD

Después se agrega el número 5 y se suma con el numero 10. El resultado se muestra en la


figura 19.

Ilustración 19 Resultado de la suma


Resta.

Para la resta tomaremos en cuenta los mismos números 10 y 5 con el resultado mostrado
en la siguiente imagen 20.

Ilustración 20 Resultado de operación de la resta entre 10 y 5.

Multiplicación.

Después utilizaremos los mismos números para mostrar la multiplicación lo que daría como
resultado 50 como lo muestra la imagen 21.

Ilustración 21 Resultado de operación de la multiplicación entre 10 y 5


División.

Y por último la división que mostraría el numero 2 como se observa en la siguiente imagen 22.

Ilustración 22 Resultado de operación de la división de 10 entre 5.

Resta con acarreo.

Ahora utilizaremos el caso contrario de 5 y 10 para resta, con el fin de mostrar la resta con
acarreo, como se muestra en la ilustración 23.

Ilustración 23 Resultado de la resta invertida con acarreo.


Multiplicación con acarreo.

Se hará la multiplicación de 128 * 2, lo cual es 256, y este número no se puede representar en


8 bits, por lo tanto generará acarreo, como se muestra en la ilustración 24.

Ilustración 24 Se ingresa el número 128 y se multiplicará con 2.

El resultado de la multiplicación se muestra en la ilustración 25.

Ilustración 25 Resultado de la multiplicación con acarreo.


División no exacta (con acarreo).

En los casos en que la división no es exacta, existe acarreo, que señala que aún queda residuo.
En la ilustración 26 se añaden los números para realizar la división inexacta.

Ilustración 26 Añadimos el número 7 como numerador.

Posteriormente se añadirá el número 3 como denominador, con lo cual no se tiene una


división inexacta, pues 7/3 = 2.5. El resultado se muestra en la ilustración 27.

Ilustración 27 El resultado es 2 y el residuo se señala con el acarreo (B7).


Suma con acarreo.

En el ejemplo de suma con acarreo se sumará 128 + 128 = 256. Los datos introducidos se
muestran en la ilustración 28.

Ilustración 28 Entrada del dato 128 para la suma con acarreo.

Como el 256 no se puede representar en 8 bits, el resultado generará acarreo, y se desplegará


0x00 en el puerto c, como se muestra en la ilustración 29.

Ilustración 29 Resultado de la suma con acarreo.


Domínguez Delgadillo José Humberto

Con esta práctica pudimos comprobar el funcionamiento de las operaciones aritméticas que
nuestro PIC es capaz de realizar. Nos fue de gran ayuda como primer contacto con las
aplicaciones que se le pueden dar a los microcontroladores. Pudimos una vez más
experimentar con los registros de la RAM, así como con las banderas del registro STATUS
pero esta vez pudimos visualizar de manera física. La parte más importante, a mi parecer,
fue el uso de las operaciones, ya que pudimos ver que sin importar lo básicas que son, se les
pueden dar aplicaciones baste grande e útiles, y solo se necesita de imaginación y una
buena organización para poder utilizarlas.

Garzón Ruiz Carlos Alfredo

La realización de esta práctica nos ayudó a comprender el funcionamiento de los puertos


del microcontrolador configurados como entrada o como salida. Además, pusimos en
práctica varias de las 35 instrucciones con las que cuenta este microcontrolador como
fueron las instrucciones ADDWF, SUBWF, MOVF entre otras. Comprendimos que las
instrucciones dadas son suficientes, aunque en realidad no estemos acostumbrados a tan
pocas instrucciones debido a los lenguajes de programación ya conocidos por nosotros.

De Coss Espinosa Julián David

Actualmente la mayoría de los dispositivos electrónicos tienen un gran poder de cálculo,


dicho poder proviene de algoritmos y operaciones sencillas que construyen un potencial
inmenso, desarrollamos operaciones aritméticas básicas que posteriormente utilizaremos
para desarrollar algoritmos más complejos y densos. Es importante tener un muy buen
control del uso de los registros de la RAM, así como saber aprovechar los registros de uso
específico en especial las banderas que se encienden o apagan tras una operación pues son
esenciales para identificar en que situación se encuentra nuestro sistema.

Bibliografía
Stallings, W. (2007). Organización y arquitectura de computadores. México: Pearson.
José M, Angulo Usategui(2003).Microcontroladores “PIC” diseño práctico de aplicaciones.
México: Mc Graw hill
INSTITUTO POLITECNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERÍA Y
TECNOLOGÍAS AVANZADAS

MICROPROCESADORES, MICROCONTROLADORES E INTERFAZ


Alumnos. De Coss Espinosa Julián David
Garzón Ruiz Carlos Alfredo
Domínguez Delgadillo José Humberto
Profesor. Gutiérrez Begovich David Arturo
Grupo 2MM8

PRACTICA 1

Вам также может понравиться