Como es el Contador ascendente/descendente en assembler y c
Enviado por Rebecca • 29 de Diciembre de 2018 • 4.659 Palabras (19 Páginas) • 1.473 Visitas
...
De la misma forma en que se necesitó de subrutinas para dar solución a los problemas planteados en el lenguaje ensamblador, en el lenguaje C se estudió la definición, declaración y llamada de funciones, para así poder aplicarlas y cumplir con los requerimientos de los problemas en cuestión.
Los montajes Nº1 y Nº2 realizados, los cuales están explicados de forma detallada en las secciones 4.2 y 4.3 respectivamente, de forma general plantean los siguientes objetivos:
Montaje Nº1: Hacer un contador de 0 a 999, en donde a través de interrupciones externas, realice las funciones pedidas, como por ejemplo pausar, cambiar el conteo de ascendente a descendente, entre otras cosas.
Montaje Nº2: Para este montaje se ocuparon los diodos LEDs como pieza fundamental; este montaje consistió en crear secuencias de encendido para los diodos, por consiguiente, se utilizaron las interrupciones externas del microcontrolador para ir cambiando las secuencias, conforme estas se activaban.
El informe se dividió en ocho secciones, en las cuales se van a hacer énfasis en dos de estas: marco teórico y desarrollo de la experiencia.
Marco teórico: Consistió en explicar la teoría detrás de cada montaje, por ende, se definió y detalló las funciones usadas en los programas, tales como interrupciones (lenguaje C y lenguaje ensamblador), definición, declaración y llamada de funciones (lenguaje C), llamadas a subrutina y gestión de pila (lenguaje ensamblador), y las diferentes formas de trabajar con las interrupciones: su organización, habilitación/inhabilitación y priorización.
Desarrollo de la experiencia: En esta sección del informe, se presentaron las resoluciones de los problemas planteados; para aquello se fue explicando el procedimiento de cada programación, haciendo hincapié en las funciones que se encontraban inmersas en el programa, así como las subrutinas que eran parte de las soluciones de los problemas.
Finalmente, este documento lo que busca es exhibir de forma exhaustiva la resolución de los problemas planteados; para esto se presentó los contenidos que abarca cada montaje en el marco teórico; luego se procedió a exponer de manera secuencial la solución de cada uno de los montajes, detallando cada una de las funciones y subrutinas de la programaciones pertinentes; la sección de las conclusiones exterioriza las observaciones e ideas fundamentales que se obtuvieron con la realización de cada uno de los montajes; en la sección de anexos, se muestra las programaciones hechas para cada montaje, para que así, el lector de este informe pueda replicar de forma exacta lo hecho en el laboratorio, sólo basándose en este documento como guía.
---------------------------------------------------------------
3. Marco teórico
-
Conceptos
Para tener un entendimiento de la programación hecha, es necesario tener los conocimientos de aquellos conceptos que están envueltos en los programas, por lo que en la sección 3.1.1 se van a explicar los conceptos que atañen al lenguaje ensamblador, mientras que los de lenguaje C se detallan en la sección 3.1.2 y en la sección 3.1.3 se explican conceptos generales del microcontrolador 8051.
- Conceptos de la programación en lenguaje ensamblador:
- Subrutina: Una subrutina es un programa separado del programa principal que es llamado para realizar una función específica.
- Llamada a subrutina y retorno: Las llamadas a subrutinas se hacen con la siguiente instrucción:
“CALL”, que significa llamada. Las instrucciones CALL, o simplemente ACALL es un llamado de 11bits en un tamaño de memoria de 2k y LCALL un llamado de 16 bits para un tamaño de memoria mayor de 65k.
- PC Programa Counter: Cuenta el código en ejecución del programa para cada instrucción que es apuntada por el PC es ejecutada, al ser ejecutada, el PC se incrementa para ejecutar la siguiente instrucción y así sucesivamente por todo el código fuente.
- SP (apuntador de pila): El apuntador de pila es un registro de 8 bits en la dirección 81H, y contiene la dirección del dato que se encuentra actualmente en la parte superior de la pila. Las operaciones de pila incluyen operaciones para “meter” datos a la pila y “sacar” datos de la misma. Al meter datos en la pila se incrementa el SP antes de escribir los datos, y al sacar datos de la pila se leen los datos y entonces disminuye el SP.
- PUSH y POP: Las instrucciones PUSH (meter) y POP(sacar) acceden a la pila de manera explícita para almacenar y recuperar datos de manera temporal, o de manera implícita mediante la llamada a la subrutina (ACALL, LCALL) y las instrucciones de retorno (RET, RETI) para almacenar y restaurar el contador del programa.
- Conceptos de la programación en lenguaje C:
- Funciones: Las funciones son agrupaciones de instrucciones que realizan una tarea concreta y puede ser llamada una o varias veces a lo largo del programa principal o de otras funciones (o incluso desde dentro de la misma función en el caso de las llamadas funciones recursivas).
- Definición: Son las líneas de código donde se indica que se debe realizar la función. Como la primera línea se incluye la designación (el nombre) de la función y la indicación de los tipos de entrada y salida, según el formato indicado en el apartado anterior. A esta línea se le llama cabecera y no finaliza en “;”. Posteriormente y delimitado por llaves se encuentra el cuerpo de la función o programa a ejecutar.
- Declaración: Si la línea de código en la que se realiza la llamada a una función se compila antes de definir dicha función, es necesario incluir una copia de la primera línea de su definición (línea de cabecera). A la copia de esta línea a fin de ser declarada se le denomina prototipo. Esto equivale a decir que es necesario declarar la función, es decir, incluir su prototipo, si la llamada está por encima (en el listado del código) de la función de la función. De igual forma que con las variables, existen declaraciones globales y locales. El concepto de ámbito se aplica también de forma similar; la declaración o prototipo debe finalizar con “;”.
- Llamada: Al realizar la llamada a una función, se ejecutan el conjunto de instrucciones definidas para la misma. Puede repetirse la llamada en varios puntos del programa. La llamada a la función se realiza proporcionando valores
...