Hola nuevamente a
los tutoriales de Artes Electrónicas Pachani, hoy
continuaremos con la serie programación en componentes
PIC, en este tutorial encontraras mis experiencias que van dirigido a lectores novatos,
aficionados (hobbistas), estudiantes, que deseen implementar
programas para microcontroladores en lenguaje ensamblador (ASM), para
el desarrollo de aplicaciones.
¡Operaciones
aritméticas con el Microcontrolador!
Nuestro
Primer Proyecto
Ahora que hemos alcanzado cierta confianza en la programación de los
microcontroladores, podemos realizar las operaciones básicas que
conocemos como la suma, resta, multiplicación y división:
Problema 5.-
El docente de la materia de
microprocesadores pide que realicemos una calculadora con las
operaciones básicas, el puerto A se selecciona el tipo
de operación, por el puerto B y E se introduce los valores y por el
puerto C se obtiene el resultado .
Respuesta: Ahora
empecemos por delimitar el
alcance de nuestro problema, primero tenemos cuatro operaciones
aritméticas básicas que los vamos a realizar de la siguiente
manera:
La
simulación en Proteus sera de la siguiente manera de modo que cuando
armemos nuestro pseudocódigo sea fácil describir las operaciones
que solicita la pregunta:
Ahora
una vez definido el tipo de operación y
demás, desarrollemos un
pseudocódigo apropiado para poder describir de mejor manera nuestras
instrucciones, primero para
no tener una gran desbordamiento con nuestros cálculos solo vamos a
tomar 3 bits para cada
numero así el resultado tendrá el numero adecuado de bits para
representar el resultado final.
1.- Inicio de programación
2.- Se lee el valor del selector
3.- Si PORTA ==0x00h , Entonces
Ir a Suma
4.- Si PORTA ==0x01h , Entonces
Ir a Resta
5.- Si PORTA ==0x02h , Entonces
Ir a Multiplicación
6.- Si PORTA ==0x03h , Entonces
Ir a División
7.- fin de Programa
El código desarrollado en ensamblador seria el siguiente:
Primero tenemos la configuración en los bancos , donde se
configurara las características de cada puerto tanto de entrada como
de salida. En la siguiente imagen veremos como se inicia con la parte
de la selección de tipo de operación:
En esta etapa configuramos como se realizara la selección del tipo
de operación, con todo lo aprendido hasta el momento hemos de
realizar una sentencia CASE, que ya
hemos visto en la parte de algoritmos pero que aplicado en
ensamblador.
Luego después de identificar una operación aritmética, esta la
parte de selección de operación , aquí es cuando según nuestro
programa se recupera los datos introducidos por el puerto B y puerto
E.
Aquí se realizan las operaciones aritméticas propiamente dichas ya
que una vez tenemos los datos se procede a operara y ademas se
muestra los valores por el puerto C.
Como se habrá dado cuenta este se puede decir que ha sido nuestro
primer proyecto como tal pues hemos aplicado nuestro conocimiento que
hemos aprendido durante los tutoriales anteriores, dentro de las
instrucciones que hemos escrito no hay nada que no hayamos estudiado
por lo menos con algún ejemplo.
Simulación
Proteus
Ahora la simulación viene a ser de la siguiente manera, como es
costumbre es buen realizar la carga de nuestro archivo ejer003.hex
en el microcontrolador simulado de la siguiente manera:
Escogemos el archivo ejer003.hex de modo que solamente lo
cargamos según hemos aprendido:
Ahora viene la parte de realizar nuestra prueba de funcionamiento:
La
Suma
En el selector de operación del puerto A tenemos 0x00h, como primera
prueba realizamos la operación aritmética de suma => 1 + 1 = 2 ,
por el puerto C se nota el valor de 2 en binario.
La
Resta
Aquí de igual manera escogemos la segunda operación por el puerto A
con 0x01, en cuanto a la operación tenemos 2-1=1, se nota que la
operación es correcta, ahora cuando la operación en resta, de un
numero negativo se debe de considerar que en binario los números
negativos tienen mayor peso en el nible superior es decir que -1 en
binario sera 11111110 cuando se toma en
cuanta el signo por lo cual maximo de operaciones que tendremos sera
(127) a 0 a (-128) , por lo cual si notan números con nible alto
realicen su complemento y notaran que es un numero negativo, con lo
cual cumple con una de las características de una calculadora
convencional.
La
Multiplicación
De igual manera escogemos la operación aritmética por el puerto A
con 0x02, aquí notamos en los números a multiplicar 2*1=2, así que
tendremos de igual manera considerar el signo del numero por lo cual
al realizar el calculo de multiplicación tenemos que tomar en cuenta
los desbordamientos , por lo cual de ahí hemos reducido el numero de
bits para cada uno de los números , aunque podemos notar que se
puede tener un bit 4 pero ten en cuenta que deberás tener cuidado
con el desbordamiento de los números, pero si realizar la
modificación adecuada en el código notaras que el resultado es el
adecuado.
La
División
De igual manera escogemos la operación de la división por el puerto
A con 0x03, ahora de igual manera la operación de la división es
un tema especial pues como de momento nuestras operaciones son con
valores enteros el resultado de igual manera es con números enteros
por lo cual solo veremos en este código resultados enteros, vemos en
la imagen 2/2=1, cuando realicemos la división de un 3/2=1 , ya que
ademas tenemos un residuo , pero este residuo no se tomara en cuanto
por lo cual solo veremos resultados enteros, cuando el valor del
divisor sea mayor al del dividendo el resultado que se vera siempre
sera de cero por lo cual también cumple con la característica de
que se debe de trabajar solamente con números enteros.
En cuanto a la división entre cero para ello dentro del código
existe un limitate que hace que cuando el divisor sea cero la
operación te mande directo a cero por el puerto C, con ello
cumplimos ademas con la condición de no división entre cero.
Como reflexión final para este tutorial, una de las características
mas sobresaliente en mi opinión de los microcontroladores es su
capacidad de responder las necesidades de automatización y control,
con los medios adecuados podemos por medio de botoneras controlar un
proceso de funcionamiento de motores dentro de una embotelladora por
ejemplo, o bien la automatización de una puerta hace que la persona
mejore su calidad de vida y lo lleva a un mundo diferente adecuado
para la época. Bien recordaran que ya en los años 50 – 60, en el
mundo industrializado se soñaba con maquinas que lo hagan todo y en
la actualidad muchos procesos son llevados por robots en la
construcción de automóviles y manufacturas donde la precisión es
muy importante.
La mejor aliada para la actualidad de cualquier persona que quiere
mejorar su calidad de vida es el conocimiento y el manejo de
herramientas adecuadas como lo son los microcontroladores y por sobre
todo paciencia para tener una mirada de futuro. Bien hasta aquí este
tutorial los espero en el próximo tutorial donde iremos descubriendo
mas del mundo de los microcontroladores y como podemos aprovechar las
características de los mismos y mejorar nuestra calidad de vida,
bien los espero hasta la próxima .
Todo el material que aquí se encuentra es de mi autoría, ademas de
una recopilación de información de Internet de recursos que se
pueden descargar como libros los cuales son usados como referencia
para los ejercicios y los ejemplos. Cualquier consulta la puedes
realizar en la parte de comentarios.
Bibliografia:
1.- Enrique Palacios , Fernando Ramiro y Lucas J. López,
Microcontrolador PIC16F84 Editorial Alfa Omega; Publicado el año
2004;[Fecha de consulta 10 de Marzo de 2017].
2.-Christian Bodignton Estava; Mikro Basic ; descargada de
WWW.CONEXIONELECTRONICA.COM;
Publicado el año 2010; [Fecha de consulta 5 de Marzo de 2017].
Software
utilizados:
1.- MpLab version 8.52 descargado de la pagina oficial de Microchip;
2.- MikroBasic_PRO_PIC_2016_Build.6.6.3 descargado de la pagina
oficial de Microchip;