lunes, 17 de abril de 2017

Diseño de programas en ensamblador para PIC ( PARTE 6 )



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;


Microcontroladores PIC – Curso de Programación en MikroC (Parte 6 )

Microcontroladores PIC – Curso de Programación en MikroC Bienvenido nuevamente a los tutoriales de Artes Electrónicas Pachani , con...