Está en la página 1de 3

Publicacin: Viernes, 19 de Agosto de 2011 Entrega: Martes, 6 de Septiembre de 2011 (3PM) Sustentacin: Semana del 6 al 9 de Septiembre de 2011

PRCTICA DE LABORATORIO No. 1 (Valor 7%)


Programacin del microcontrolador S08 de Freescale usando lenguaje ensamblador

OBJETIVO GENERAL
Manejar el modelo de programacin, los modos de direccionamiento y el conjunto de instrucciones de la CPUS08 usando lenguaje de bajo nivel de manera eficiente y estructurada.

OBJETIVOS ESPECFICOS
Aprender acerca del uso del modelo de programacin y el conjunto de instrucciones de la CPUS08. Introducir al estudiante a programacin de los microcontroladores de la familia S08. Manipular diferentes tipos de datos en memoria de manera eficiente. Utilizar los diferentes modos de direccionamiento que soporta la CPU. Familiarizarse con la herramienta CodeWarrior.

DESCRIPCIN DE LA PRCTICA

Empleando lenguaje ensamblador para la CPUS08, desarrolle y simule un programa que est en capacidad de realizar las siguientes operaciones: 1. Hacer el ordenamiento de MENOR a MAYOR de un vector de 40 bytes sin signo ubicado en la Flash, almacenando el vector ordenado en la RAM as: dato ms pequeo en la direccin ms baja. Para los estudiantes del laboratorio del Martes: Ordenar los datos usando el algoritmo Quick Sort (ver http://www.youtube.com/watch?v=ywWBy6J5gz8 para entender el funcionamiento del algoritmo). Para los estudiantes del laboratorio del Mircoles: Ordenar los datos usando el algoritmo Select Sort (ver http://www.youtube.com/watch?v=Ns4TPTC8whw para entender el funcionamiento del algoritmo). Para los estudiantes del laboratorio del Jueves: Ordenar los datos usando el algoritmo Merge Sort (ver http://www.youtube.com/watch?v=XaqR3G_NVoo para entender el funcionamiento del algoritmo). Para los estudiantes del laboratorio del Viernes: Ordenar los datos usando el algoritmo Insert Sort (ver http://www.youtube.com/watch?v=ROalU379l3U para entender el funcionamiento del algoritmo). 2. Generar a travs de un puerto de I/O una seal cuadrada peridica. Esta seal se controla a travs de un pulsador. Cuando este est presionado, la frecuencia de la seal es de 500Hz. Cuando el pulsador se librera la frecuencia es de 1kHz. (Suponga una frecuencia de bus de 4MHz).

Bonus
Para los estudiantes que implementen (adicionalmente) al menos uno de estos dos algoritmos de ordenamiento: Shell Sort (http://www.youtube.com/watch?v=CmPA7zE8mx0) Bubble Sort (http://www.youtube.com/watch?v=lyZQPjUT5B4) Comparando el desempeo en cuanto a tiempo de ejecucin de los algoritmos implementados.

Publicacin: Viernes, 19 de Agosto de 2011 Entrega: Martes, 6 de Septiembre de 2011 (3PM) Sustentacin: Semana del 6 al 9 de Septiembre de 2011

A continuacin se muestra una plantilla que se recomienda para el desarrollo de este programa.
; rea de definiciones VEC_SIZE: EQU ; Otras definiciones (???) ; Tamao del vector a ser ordenado

ORG (DIRECCIN_MEMORIA) ; Reservar los datos en RAM que sean requeridos

; Programa principal.
ORG _Startup: (DIRECCIN_MEMORIA) ; Inicializacin de todo lo que sea necesario ; Ac llama la subrutina para ejecutar la operacin 1 ; Ac llama la subrutina para ejecutar la operacin 2 ; BRA FINAL

FINAL: SubRtn1:

; Definicin de las subrutinas


; Cdigo dentro de la subrutina 1 ; RTS ; Retorno de subrutina 1

; Dems subrutinas... ; Zona para declarar los datos en la Flash ; Vector de Reset

PARA TENER EN CUENTA


Recuerde que para reservar un espacio en memoria, basta con usar la directiva DS.x seguida por el nmero de estos datos que se quieren almacenar. Por ejemplo:
Vector: DS.L 50 ; Reserva 50 longs en memoria

Recuerde que para llenar un espacio en memoria con datos, basta con usar la directiva DC.x seguida por los datos. Por ejemplo:
Datos: DC.B 20, 50, 250, 10, 4, 0, 6

La tarea1 se implementa en una subrutina de cdigo en ensamblador, con la capacidad de realizar la operacin especfica requerida y guardar el(los) resultado(s) a la(s) variable(s) de salida correspondiente(s). Luego de lo cual, el programa se que anclado generando la seal pedida en el punto 2. El vector en la flash para el ordenamiento tiene un tamao de 40 elementos y cada elemento dentro del vector es de 8 bits sin signo. Recuerde que las variables se guardan en la memoria RAM. Recuerde que las direcciones de memoria son de dos bytes para la CPUS08. Recuerde que si define una variable de ms de un byte en la RAM, la parte alta de la misma siempre quedar en la direccin de memoria ms baja que la variable ocupe. Se deben crear las variables necesarias para cada una de las operaciones. (Es posible que en el

Publicacin: Viernes, 19 de Agosto de 2011 Entrega: Martes, 6 de Septiembre de 2011 (3PM) Sustentacin: Semana del 6 al 9 de Septiembre de 2011

programa necesite definir variables intermedias, es decir adicionales a las que se le piden en esta prctica). Para testear el algoritmo de ordenamiento el estudiante utiliza sus propios valores a ordenar. A la hora de la sustentacin, el profesor le entregar unos datos para corroborar la funcionalidad del mismo. Esta prctica es INDIVIDUAL y la sustentacin se har con los profesores del curso analizando la simulacin del programa enviado.

EVALUACIN DE LA PRCTICA
En el horario de laboratorio correspondiente, cada estudiante sustentar el proyecto que ha enviado al correo del profesor. El estudiante deber estar en capacidad de justificar el trabajo realizado y responder las preguntas relacionadas con el tema. Los elementos a evaluar son: Diseo del programa y algoritmos empleados. Funcionalidad. Modos de direccionamiento. Manejo del software CodeWarrior. Sustentacin acerca de todos los aspectos relacionados con la solucin del problema. Comentarios EN INGLS!!

BIBLIOGRAFA
MC9S08SE08/MC9S08AC60/MC9S08JM60 users manual, Freescale semiconductors, Captulo: Central Processor Unit. Ayuda del CodeWarrior. Material de clase. Libros de de diseo de algoritmos. Fecha de asignacin: Viernes, 19 de Agosto de 2011. Fecha de entrega: Martes, 6 de Septiembre de 2011 hasta las 3PM. Fecha de sustentacin: Semana del 6 al 9 de Septiembre en su horario de Laboratorio correspondiente. La prctica debe enviarse al correo electrnico del curso: microe.udea@gmail.com. Si no se enva la prctica al correo en la fecha estipulada, la nota definitiva tendr una penalizacin.

Elementos a enviar al correo

Proyecto en CodeWarrior comprimido en rar.