Sistemas Basados en
    Microprocesadores

Programación en Ensamblador
Lenguaje ensamblador
 Laprogramación en ensamblador es el modo de
 programación de más bajo nivel.
    Las instrucciones se traducen literalmente a código
     máquina sin un compilado previo.
    Es especifico de cada plataforma.
 Características:
    Más difícil de aprender que los lenguajes de alto nivel
    Dificulta el mantenimiento y recude la productividad del
     programador.
    Mayor velocidad y eficiencia de ejecución



 http://paginaspersonales.deusto.es/jonathan.garibay/
Ensamblador (assembler)
 Es un programa que genera código máquina
 (llamado también código objeto) traduciendo
 instrucciones de un programa fuente escrito en
 ensamblador a códigos ejecutables.
    Interpreta los nombres simbólicos para direcciones de
     memoria y otras elementos.




 http://paginaspersonales.deusto.es/jonathan.garibay/
Estructura de programa
                          list      p=18f4520
 Fichero de               include   "p18f4520.inc“
                                                                     Directivas
  etiquetas
                          config WDT=OFF, OSC=XT, PBADEN=OFF
 Palabra de
                                                                    Dirección de
configuración    temp     equ       0x005                           la memoria
                                                                      de datos
Etiqueta de               org       0x0000       ;Vector de reset
   datos                  bra       inicio
                                                                    Dirección de
                                                                     la memoria
                          org       0x0020                          de programa
Etiqueta de      inicio   clrf      TRISB        ;PuertaB salida
 dirección                setf      TRISC        ;PuertaC entrada
                 bucle    movf      PORTC,W
                                                                     Operando
                          movwf     temp
Instrucciones                                                        Parámetro
                          movf      temp,W
                          movwf     LATB
                          bra       bucle                           Comentario
    Fin del
  programaº
                          end                    ;Fin de programa

http://paginaspersonales.deusto.es/jonathan.garibay/
Elementos básicos
 Etiquetas:  es una palabra utilizada para designa
 alguna línea o sección del programa, se pueden
 utilizar para saltar de una parte hacia esa etiqueta.
    Las etiquetas deben empezar con una letra o con un
     guión bajo “_”.
 Instrucciones:  son las operaciones que realiza el
  microcontrolador, de forma que ya están definidas
  para cada familia de PIC.
 Operandos: son los elementos que emplea la
  instrucción que se está ejecutando. Normalmente,
  son registros o constantes.
    Algunos operandos configuran algunos detalles de las
     instrucciones.

 http://paginaspersonales.deusto.es/jonathan.garibay/
Elementos básicos (continuación…)
 Directivas: son similares a las instrucciones, pero a
 diferencia de estas son propias del lenguaje
 ensamblador e independientes del microcontrolador
 que se utilice.
    Se utilizan para especificar al la configuración del
     procesador utilizado o para asignar localizaciones de
     memoria, entre otras cosas.
 Comentarios:  son las palabras y frases que se
 escriben en el código para hacer el programa más
 legible.
    Los comentarios se pueden escribir en cualquier parte del
     código pero siempre deben empezar con punto y
     coma ”;”.

 http://paginaspersonales.deusto.es/jonathan.garibay/
Elementos básicos (continuación…)
 Directivas
    ”list“ sirve para especificar el PIC seleccionado, en este
     caso un PIC 18F4520.
    “include” se utiliza para incluir un archivo externo en el
     programa.
    “config” establece la configuración del PIC: el tipo de
     reloj, la configuración del watchdog, el reset interno…
    ”org“ define la dirección de memoria a partir de la cual el
     programa se guarda.
    ”end“ es la directiva que marca el final del programa.




 http://paginaspersonales.deusto.es/jonathan.garibay/
Juego de Instrucciones
 Operandos       típicos
    Registro “f”  indica el registro que será utilizado por la
     instrucción.
    El destino del resultado “d”  es un bit que indica donde
     se almacena el resultado de una operación:
      Si es “0” o “w”, el resultado se guardará en el registro de
       trabajo.
      Si es “1” o “f”, el resultado se guardará en el mismo registro.

    El parámetro “a”  es también un bit que indica el tipo de
     acceso a memoria de datos:
      Si es “0” o se omite, se utilizará el banco de acceso.
      Si es “1”, la instrucción utilizará direccionamiento directo.



 http://paginaspersonales.deusto.es/jonathan.garibay/
Juego de Instrucciones (continuación…)
 Operadores       típicos (continuación…)
    Literal “k”  una constante que será utilizada por la
     instrucción.
    Dirección de programa “n”  utilizada en las operaciones
     de control, indica una dirección para un salto condicional
     o incondicional.
 Ejemplos:
    addfw      0x34, 0, 0        
    movlw      0x19              
    goto       0x0456            



 http://paginaspersonales.deusto.es/jonathan.garibay/
Programación estructurada
 Esuna forma de escribir programas de forma clara
 haciendo uso de únicamente 3 estructuras:
    Secuencia: se ejecuta una instrucción tras otra de forma
     secuencial.
    Selección: permite la realización de una instrucción u otra
     según un criterio (solo una de estas instrucciones se
     ejecutara).
        if, then, else
    Iteración: se repiten un conjunto de instrucciones
     mientras se cumpla una condición (el número de
     iteraciones no tiene porque estar determinado).
        while, do…while, for


 http://paginaspersonales.deusto.es/jonathan.garibay/
Programación estructurada (continuación…)
 Anidamiento       de estructuras
    El cuerpo de cualquier estructura puede ser una
     instrucción simple u otra estructura, que a su vez puede
     anidar a otra.
 Funciones                  ¿Paso de parámetros?

    Es un conjunto de líneas de código que realizan una
     tarea específica y puede retornar un valor.




 http://paginaspersonales.deusto.es/jonathan.garibay/
Diagramas de flujo
 Tambiénconocidos como organigramas, son una
 representación gráfica de un algoritmo.
    Utilizan símbolos que representan los pasos del
     algoritmo, y representan el flujo de ejecución mediante
     flechas que conectan los puntos de inicio y de fin.
 Simbología      básica
    Círculo: inicio y término del diagrama.
    Rectángulo: representa la ejecución de una o más
     actividades o procedimientos.
    Rombo: formula una pregunta o cuestión, y ejecuta una
     salida u otra.


 http://paginaspersonales.deusto.es/jonathan.garibay/
Diagramas de flujo (continuación…)




 http://paginaspersonales.deusto.es/jonathan.garibay/
Estrategia de diseño Top-Down
 En el modelo Top-Down se crea un resumen del
 sistema, sin especificar detalles. Cada parte del
 sistema se refina con mayor detalle y se realizan
 tantas iteraciones como sean necesarias.
    El enfoque Top-Down enfatiza la planificación y
     conocimiento completo del sistema.
        La codificación no puede comenzar hasta que no se haya
         alcanzado un nivel de detalle suficiente
 Enel diseño Bottom-Up se diseñan en detalle las
 partes individuales y después se enlazan para
 formar componentes más grandes.


 http://paginaspersonales.deusto.es/jonathan.garibay/
Estrategia de diseño Top-Down (continuación…)

                                     Se define la estructura de la función
                                     main y de las rutinas de interrupción

                                         Se estudian todas aquellas
                                         funciones de alto nivel que
                                         surgen del paso anterior

                                      Se repite el proceso anterior hasta
                                      definir el funcionamiento de todas
                                      las funciones

                                       Se complementan las funciones
                                       con detalles relevantes para la
                                       programación final




 http://paginaspersonales.deusto.es/jonathan.garibay/

03.Programación en ensamblador

  • 1.
    Sistemas Basados en Microprocesadores Programación en Ensamblador
  • 2.
    Lenguaje ensamblador  Laprogramaciónen ensamblador es el modo de programación de más bajo nivel.  Las instrucciones se traducen literalmente a código máquina sin un compilado previo.  Es especifico de cada plataforma.  Características:  Más difícil de aprender que los lenguajes de alto nivel  Dificulta el mantenimiento y recude la productividad del programador.  Mayor velocidad y eficiencia de ejecución http://paginaspersonales.deusto.es/jonathan.garibay/
  • 3.
    Ensamblador (assembler)  Esun programa que genera código máquina (llamado también código objeto) traduciendo instrucciones de un programa fuente escrito en ensamblador a códigos ejecutables.  Interpreta los nombres simbólicos para direcciones de memoria y otras elementos. http://paginaspersonales.deusto.es/jonathan.garibay/
  • 4.
    Estructura de programa list p=18f4520 Fichero de include "p18f4520.inc“ Directivas etiquetas config WDT=OFF, OSC=XT, PBADEN=OFF Palabra de Dirección de configuración temp equ 0x005 la memoria de datos Etiqueta de org 0x0000 ;Vector de reset datos bra inicio Dirección de la memoria org 0x0020 de programa Etiqueta de inicio clrf TRISB ;PuertaB salida dirección setf TRISC ;PuertaC entrada bucle movf PORTC,W Operando movwf temp Instrucciones Parámetro movf temp,W movwf LATB bra bucle Comentario Fin del programaº end ;Fin de programa http://paginaspersonales.deusto.es/jonathan.garibay/
  • 5.
    Elementos básicos  Etiquetas: es una palabra utilizada para designa alguna línea o sección del programa, se pueden utilizar para saltar de una parte hacia esa etiqueta.  Las etiquetas deben empezar con una letra o con un guión bajo “_”.  Instrucciones: son las operaciones que realiza el microcontrolador, de forma que ya están definidas para cada familia de PIC.  Operandos: son los elementos que emplea la instrucción que se está ejecutando. Normalmente, son registros o constantes.  Algunos operandos configuran algunos detalles de las instrucciones. http://paginaspersonales.deusto.es/jonathan.garibay/
  • 6.
    Elementos básicos (continuación…) Directivas: son similares a las instrucciones, pero a diferencia de estas son propias del lenguaje ensamblador e independientes del microcontrolador que se utilice.  Se utilizan para especificar al la configuración del procesador utilizado o para asignar localizaciones de memoria, entre otras cosas.  Comentarios: son las palabras y frases que se escriben en el código para hacer el programa más legible.  Los comentarios se pueden escribir en cualquier parte del código pero siempre deben empezar con punto y coma ”;”. http://paginaspersonales.deusto.es/jonathan.garibay/
  • 7.
    Elementos básicos (continuación…) Directivas  ”list“ sirve para especificar el PIC seleccionado, en este caso un PIC 18F4520.  “include” se utiliza para incluir un archivo externo en el programa.  “config” establece la configuración del PIC: el tipo de reloj, la configuración del watchdog, el reset interno…  ”org“ define la dirección de memoria a partir de la cual el programa se guarda.  ”end“ es la directiva que marca el final del programa. http://paginaspersonales.deusto.es/jonathan.garibay/
  • 8.
    Juego de Instrucciones Operandos típicos  Registro “f”  indica el registro que será utilizado por la instrucción.  El destino del resultado “d”  es un bit que indica donde se almacena el resultado de una operación:  Si es “0” o “w”, el resultado se guardará en el registro de trabajo.  Si es “1” o “f”, el resultado se guardará en el mismo registro.  El parámetro “a”  es también un bit que indica el tipo de acceso a memoria de datos:  Si es “0” o se omite, se utilizará el banco de acceso.  Si es “1”, la instrucción utilizará direccionamiento directo. http://paginaspersonales.deusto.es/jonathan.garibay/
  • 9.
    Juego de Instrucciones(continuación…)  Operadores típicos (continuación…)  Literal “k”  una constante que será utilizada por la instrucción.  Dirección de programa “n”  utilizada en las operaciones de control, indica una dirección para un salto condicional o incondicional.  Ejemplos:  addfw 0x34, 0, 0   movlw 0x19   goto 0x0456  http://paginaspersonales.deusto.es/jonathan.garibay/
  • 10.
    Programación estructurada  Esunaforma de escribir programas de forma clara haciendo uso de únicamente 3 estructuras:  Secuencia: se ejecuta una instrucción tras otra de forma secuencial.  Selección: permite la realización de una instrucción u otra según un criterio (solo una de estas instrucciones se ejecutara).  if, then, else  Iteración: se repiten un conjunto de instrucciones mientras se cumpla una condición (el número de iteraciones no tiene porque estar determinado).  while, do…while, for http://paginaspersonales.deusto.es/jonathan.garibay/
  • 11.
    Programación estructurada (continuación…) Anidamiento de estructuras  El cuerpo de cualquier estructura puede ser una instrucción simple u otra estructura, que a su vez puede anidar a otra.  Funciones ¿Paso de parámetros?  Es un conjunto de líneas de código que realizan una tarea específica y puede retornar un valor. http://paginaspersonales.deusto.es/jonathan.garibay/
  • 12.
    Diagramas de flujo Tambiénconocidos como organigramas, son una representación gráfica de un algoritmo.  Utilizan símbolos que representan los pasos del algoritmo, y representan el flujo de ejecución mediante flechas que conectan los puntos de inicio y de fin.  Simbología básica  Círculo: inicio y término del diagrama.  Rectángulo: representa la ejecución de una o más actividades o procedimientos.  Rombo: formula una pregunta o cuestión, y ejecuta una salida u otra. http://paginaspersonales.deusto.es/jonathan.garibay/
  • 13.
    Diagramas de flujo(continuación…) http://paginaspersonales.deusto.es/jonathan.garibay/
  • 14.
    Estrategia de diseñoTop-Down  En el modelo Top-Down se crea un resumen del sistema, sin especificar detalles. Cada parte del sistema se refina con mayor detalle y se realizan tantas iteraciones como sean necesarias.  El enfoque Top-Down enfatiza la planificación y conocimiento completo del sistema.  La codificación no puede comenzar hasta que no se haya alcanzado un nivel de detalle suficiente  Enel diseño Bottom-Up se diseñan en detalle las partes individuales y después se enlazan para formar componentes más grandes. http://paginaspersonales.deusto.es/jonathan.garibay/
  • 15.
    Estrategia de diseñoTop-Down (continuación…) Se define la estructura de la función main y de las rutinas de interrupción Se estudian todas aquellas funciones de alto nivel que surgen del paso anterior Se repite el proceso anterior hasta definir el funcionamiento de todas las funciones Se complementan las funciones con detalles relevantes para la programación final http://paginaspersonales.deusto.es/jonathan.garibay/