Está en la página 1de 6

Práctica No 1 de Computadoras Digitales

Tutoriales de CodeWarrior HSC12

Introducción
Este curso es sobre el funcionamiento, diseño e implementación de la computadora digital. No obstante la
enorme variedad de situaciones que pueden ser resueltas o controladas por una computadora digital
estas poseen una estructura física interna con pocas variaciones entre una y otra. Las diferencias
realmente radican en la programación y en el tipo de periféricos o puertos utilizados en su diseño, los
cuales dependen estrechamente del tipo de aplicación.
Dos son los elementos esenciales que componen a una computadora digital, uno es el hardware y otro el
software. El hardware es bastante convencional y está formado por todos los elementos físicos que
conforman a la computadora y que a su vez implementan tres secciones elementales: el
microprocesador o a veces llamado CPU (Unidad Central de Procesamiento), la memoria y los
periféricos. El software es el conjunto de programas conformados por las instrucciones que controlan
el quehacer de la computadora y los datos que estos requieren para su operación. Tanto los datos
como los programas residen en la memoria de manera permanente algunos (programas monitores y/o
sistemas operativos) y temporal otros.
Una variante o más bien una extensión del microprocesador es el “microcontrolador MCU” el cual integra
en un solo dispositivo las tres secciones mencionadas con el objetivo de realizar alguna aplicación de
control, de allí el término MCU.
El objetivo principal del curso es el estudio del hardware, del software y de sus variantes enfocados en el
diseño y programación de una computadora tipo genérica. Aunque es posible describir el hardware de
una computadora sin hablar del software llegará el momento en el que hay que probar su
implementación. La única forma de hacerlo es programar funciones básicas que prueben el
funcionamiento correcto de todas sus partes, es aquí en donde el software es importante. Para lograr
este objetivo se ha seleccionado una plataforma específica integrada por el MC98S12C128 como
elemento físico parte del hardware y el CodeWarrior como interfaz de desarrollo para su programación
(software).
Esta práctica y las subsiguientes están orientadas al estudio de estos elementos, inicialmente es necesaria la
familiarización con el IDE o Entorno Integrado de Desarrollo (Integrated Development Enviroment) de
CodeWarrior para tal fin siga el siguiente procedimiento.
Procedimiento
1. Instale el CodeWarrior1
2. Ejecútelo y en el “Startup Dialog” seleccione “Run Getting Started Tutorial”. La mejor forma de
aprender a utilizar un nuevo IDE es ejecutando los tutoriales que le acompañan. Los tutoriales son
sencillos y pueden realizarse con poco esfuerzo de su parte.
3. En el panel izquierdo de la ventana de ayuda se presenta un grupo de siete tutoriales. Ejecute los
tutoriales siguiendo las indicaciones presentes en el propio tutorial pero tomando en cuenta las
consideraciones que a continuación se listan.
a. C Tutorial:
Paso 1 hágalo tal cual. “ Clic en el botón de “Create a New Project” en la ventana de inicio. Si el Code
Warrior ya está corriendo, invoque un nuevo proyecto usando “File New Project”
Paso 2 seleccione HCS12 >> HCS12C >> MC9S12C128 en vez de MC9S12DP256 ya que este no se
provee y aquel sí. Opte por “Full Chip Simulation”
Paso 3 ubique su proyecto en un directorio en la raíz de su disco y con el nombre del grupo de
laboratorio (Las primeras silabas de los apellidos de los integrantes s y ubíquelo en un directorio en la
raíz del Disco. Por ejemplo: c:\CWPRJ12\LOJOCRUZx\TutoC Grupo formado por López, Jolie y Cruz).
Paso4 hágalo tal cual.

1
El procedimiento de instalación de CodeWarrior no difiere del de instalación de otros programas similares, existe un CD
con el programa y los datos necesarios para su instalación.

Ing. M. Logreira V. A.
Práctica No 1 de Computadoras Digitales
Tutoriales de CodeWarrior HSC12

Paso5 hágalo tal cual.


Paso 6 abra el archivo MCS9S12C128.h en el directorio “includes” y dele un recorrido visual rápido y
observe que en el archivo se declaran todos los símbolos que corresponden a los registros de
configuración de los recursos con los que cuenta el mcu 12C128. Haga un listado con los primeros diez
(el Puerto B incluido) recursos que se listan en este archivo, los recursos se especifican como
comentarios en color rojo y aparecen entre los indicadores de comentario de C /*** PORTA ...
***/ esta es la única parte del recurso que se requiere aparezca en el listado.
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
Paso 7 Después de realizar el COPY and PASTE cambie DDRB = 1 por DDRB = 0x80 y PORTB_BIT0 =
~PORTB_BIT0 por PORTB_BIT7 = ~PORTB_BIT7 este cambio es para apreciar el LED.
Paso 8 hágalo tal cual
Paso 9 hágalo tal cual
Paso 10 recuerde que se cambió el bit 0 por el bit 7 así en vez de variar entre 0 y 1 variará entre 0 y 80
conforme se ejecuta el paso a paso señalado
Paso 11 hágalo tal cual
Paso 12 conecte el APS12C128 proporcionada en el almacén y seleccione TBDML en vez de P&E
Multilink/Cyclone Pro para activar el modo de Depuración en el Trasfondo siga el resto de las
indicaciones.
Paso 13 hágalo tal cual
Paso 14 cuando realice la ejecución continua el LED permanece encendido y no se nota el parpadeo.
Cuando realice el paso a paso note que el LED se ilumina cada dos clics.
Paso 15 hágalo tal cual
Esta parte culmina con el primer tutorial, haga una recopilación de los recursos utilizados del MCU y de
los comandos del Code Warrior que utilizo.
____________________________________________________________________________________
____________________________________________________________________________________
___________________________________________________________________________________.
Liste al menos 5 tareas que aprendió a hacer en el Code-Warrior en este tutorial:
1. Crear un nuevo proyecto; 2. __________________________________________________; 3.
____________________________________; 4. __________________________________; 5.
____________________________________.
b. Relocatable Assembly Tutorial, en este tutorial se trabaja en assembler en vez de C pero se crean
programas que pueden ser dispuestos en cualquier lugar de la memoria por eso el adjetivo de
relocalizable
Paso 1 hágalo tal cual.
Paso 2 seleccione HCS12 >> HCS12C >> MC9S12C128 en vez de MC9S12DP256 ya que este no se
provee y aquel sí.
Paso 3 seleccione el mismo directorio anterior base pero cambie el nombre del proyecto TutAsm1 para
que no se mezcle con el del tutorial anterior, ejemplo c:\CWPRJ12\LOJOCRUZx\TutAsm1, recuerde
marcar y desmarcar lo que se pide.
Paso 4 hágalo tal cual.
Paso 5 Traduzca al español el párrafo que detalla el paso 5:
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________

Ing. M. Logreira V. A.
Práctica No 1 de Computadoras Digitales
Tutoriales de CodeWarrior HSC12

____________________________________________________________________________________
Paso 6 abra el archivo MCS9S12C128.inc en el directorio “includes” y dele un recorrido visual rápido y
observe que en el archivo se declaran todos los símbolos que corresponden a los registros de
configuración de los recursos con los que cuenta el mcu 12C128. Haga un listado con los primeros diez
(el Puerto B incluido) recursos que se listan en este archivo, los recursos se especifican como
comentarios en color rojo y aparecen entre los indicadores de comentario de C /*** PORTA ...
***/ esta es la única parte que atañe al recurso que se requiere aparezca en el listado.
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
Paso 7 posterior al copy and paste cambie las instrucciones LDAA #$01 por LDAA #$80 ya que se
utilizará el LED conectado al pin 7 del PORTB
Paso 8 hágalo tal cual.
Paso 9 hágalo tal cual.
Paso 10 hágalo en la segunda parte dele clic derecho con el cursor ubicado en la ventana Data y en el
menú que aparece Add Expresion... y luego escriba PORTB.
Paso 11 hágalo tal cual.
Paso 12 conecte el APS12C128 proporcionada en el almacén y seleccione TBDML en vez de P&E
Multilink/Cyclone Pro para activar el modo de Depuración en el Trasfondo siga el resto de las
indicaciones.
Paso 13 hágalo tal cual.
Paso 14 cuando realice la ejecución continua el LED permanece encendido y no se nota el parpadeo.
Cuando realice el paso a paso note que el LED se ilumina cada dos clics.
Paso 15 antes de cerrar el depurador haga un listado de las instrucciones utilizadas en el mainLoop
incluyendo una descripción de la operación que realiza c/u:
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
Esto culmina este tutorial, liste al menos 4 tareas que aprendió a hacer en el Code-Warrior en este
tutorial:
1. ______________________________________; 2. ________________________________________;
3. ______________________________________; 4. _________________________________________
c. Absolute Assembly Tutorial
Se espera que este tutorial pueda realizarlo por usted corrigiendo en donde sea necesario los pasos de
manera similar al tutorial anterior. Se sugiere TutAsm2.mcp para el nombre.
¿Cuál es la diferencia entre “relocatable” y “absolute assembly”:
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
¿Cuál es la dirección donde se ubica el programa _Startup: ___________________________________
d. Processor Expert Tutorial para facilitar el uso del MCU el codewarrior cuenta con esta característica
que nos permite en un ambiente gráfico amigable configurar los diferentes registros que controlan el
funcionamiento de los periféricos con que cuenta el MCU. Active este tutorial y siga los pasos del
instructivo.
Paso 1 hágalo tal cual.
Paso 2 seleccione HCS12 >> HCS12C >> MC9S12C128 en vez de MC9S12DP256 ya que este no se
provee y aquel sí.
Paso 3 hágalo tal cual. Note que ahora usa el botón de Siguiente en vez de Finalizar como en los

Ing. M. Logreira V. A.
Práctica No 1 de Computadoras Digitales
Tutoriales de CodeWarrior HSC12

tutoriales anteriores.
Paso 4 hágalo tal cual.
Paso 5 hágalo tal cual. En este paso es donde se selecciona el Processor Expert.
Paso 6 hágalo tal cual. Se recomienda usar la animación. Use las flechas ubicadas en la línea superior
para moverse de pregunta en pregunta del asistente.
Paso 7 hágalo tal cual no atienda el error, posteriormente será subsanado
Paso 8 hágalo tal cual. Use la animación. Aquí se trabaja con un concepto avanzado llamado
interrupción. En realidad nuestros LEDs son verdes.
Paso 9 recuerde que en nuestro board PB0 no tiene LED, el que tiene es PB7 así que use
PB7_ADDR7_DATA7 en vez del que se pide, la dirección sigue siendo salida. (Use la animación si tiene
dudas).
Paso 10 hágalo tal cual. En los métodos del Beam solo permita generación de código para SetDir y
NegVal.
Paso 11 hágalo tal cual. Use la animación. Se selecciona el canal que produce la interrupción y el
periodo entre interrupciones en medio segundo.
Paso 12 hágalo tal cual aparece en la animación.
Paso 13 hágalo tal cual aparece en la animación.
Paso 14: o GreenLed depende del paso 8.
Paso 15: hágalo tal cual.
Paso 16 siga las instrucciones pero recuerde seleccionar TBDML en lugar de “Full chip simulation” y que
el CPU del que disponemos es el C128. Luego active la simulación y ejecute con la flecha verde.
Presente el resultado de su trabajo al instructor para que le firme en el espacio señalado esto le da
derecho a la primera Nota:__________________________________________
¿Qué se espera como comportamiento en la tarjeta cuando ejecuta esta aplicación usando la flecha
verde?
___________________________________________________________________________________.
Liste lo aprendido en este tutorial:
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
e. C with Device Initialization Tutorial la inicialización del dispositivo permite realizar la configuración
inicial de los recursos (periféricos) en un ambiente gráfico amigable. Ejecute este tutorial y siga los
pasos que se indican.
Paso1: hágalo tal cual.
Paso 2 seleccione HCS12 >> HCS12C >> MC9S12C128 en vez de MC9S12DP256 ya que este no se
provee y aquel sí.
Paso 3: hágalo tal cual, pero recuerde ubicar su proyecto en el directorio de trabajo prestablecido.
Paso 4: hágalo tal cual.
Paso 5: hágalo tal cual.
Paso 6: hágalo tal cual.
Paso 7: hágalo tal cual.
Paso 8: habilite el Pin 7 en vez del 0 ya que este es el que tiene LED en nuestra tarjeta.
Paso 9: este paso cambia, haga clic en CPU y expanda “Clock setting” y luego “Input clock”, en “Clock
type” seleccione “External clock source”, en “Clock frecuency” escriba 4 <Intro> y verifque la
frecuencia interna del MCU ______________________, finalmente seleccione Ok.
Paso 10 antes de hacer lo que se indica, haga clic en la opción TIM, luego expanda “Clock settings” y en
el “Prescaler” seleccione Bus Clock / 32 para obtener la frecuencia de 62.5 KHz que sugiere el paso
anterior, a partir de aquí siga el instructivo del paso tal cual.
Paso 11: hágalo tal cual, tenga en cuenta el mensaje que sale al final y corrija lo que se indica en caso

Ing. M. Logreira V. A.
Práctica No 1 de Computadoras Digitales
Tutoriales de CodeWarrior HSC12

que sea necesario.


Paso 12: solo para lectura.
Paso 13 Recuerde que el terminal que tiene LED es PORTB7, el archivo MCUinit.c se puede acceder en
la estructura a la izquierda en el grupo “Generated Code” y la sección del programa que hay que
modificar es:
__interrupt void LEDtimer (void)
{
// enter your code here
}
Paso 14: hágalo tal cual (recuerde cambiar el modo de simulación a TBDML).
Paso 15: haga un listado de lo aprendido en este tutorial:
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
Muestre al instructor su trabajo y la tarjeta con el LED que debe estar destellando.
_______________________________________
Firma del Instructor.
4. Breakpoints y su uso: como ya experimentó el IDE de CodeWarrior Freescale posee herramientas que
son muy útiles que nos ayudan a programar en código assembler, en código c y con ayuda del
Processor Expert y Device Initialization nos permite manejar periféricos en forma un tanto
independiente de los detalles propios de esta tarea. una herramienta que no ha sido puesta en práctica
es el uso de los breakpoints para corregir este detalles hagamos lo siguiente:
a. En la sesión del simulador de la última parte del tutorial anterior, active la ventana “Source” y en la
barra de menús haga clic en Source luego en “Open Source File...” y luego seleccione el archivo
MCUinit.c para que aparezca en la ventana.
b. Ubique en este archivo la entrada donde aparece la ISR _interrupt void LedTimer (void), apúntele con
el cursor a la instrucción que hace el complemento del bit 7 del puerto B (PORTB_BIT7=~PORTB_BIT7) y
haga clic derecho. Note que la primera opción es “Set Breakpoint” úsela y note la marca que aparece
en la instrucción.
Los breakpoints son útiles durante la depuración de un programa ya que permite la ejecución en
tiempo real del código hasta el punto donde se estableció el mismo, quedando el estado de los
registros y de todos los recursos que utiliza el programa, disponibles para su inspección.
c. Pruebe usando el comando de ejecución continua del Debugger u oprima la tecla F5.
Note como el procesador detiene la ejecución y queda resaltada la instrucción donde se ubicó el
breakpoint, en este momento podemos inspeccionar el estado de los registros de las banderas y de los
recursos.
d. En la ventana “Data 2” haga clic derecho y seleccione la opción “Add Expresion” luego escriba el
nombre del recurso PORTB para desplegar su valor en la ventana de datos.
e. Ejecute nuevamente el programa y verifique como cambia el valor en la salida PORTB.
Anote los valores que se obtienen en PORTB cuando realiza este punto repetitivamente:
_____________________________________________________________________________
Preguntas: (Las respuestas a estas preguntas determinan el 25% de la nota de la guía)
1. ¿Cuál es el principal aspecto en el que una computadora digital se diferencia de otra?
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
2. ¿Cuáles de los siguientes elementos pueden ser catalogados como hardware o software: El archivo que
constituye esta guía, la pantalla en la que se refleja la información, el teclado usado para captarlo, la

Ing. M. Logreira V. A.
Práctica No 1 de Computadoras Digitales
Tutoriales de CodeWarrior HSC12

memoria en la que reside?


____________________________________________________________________________________
____________________________________________________________________________________
___________________________________________________________________________________
3. ¿Cuál es la diferencia entre un microprocesador y un MCU?
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
4. ¿Cuáles elementos conforman la base práctica de este curso?
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
5. ¿Cuál es la función de los comandos “Make” y “Debug” del IDE del CodeWarrior? (cada uno por
separado)
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
6. ¿Cuál es la diferencia entre el usar “Full Chip Simulation” y “TBDML” a la hora de crear nuestro
proyecto?
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
7. ¿Cuál es el nombre del MCU usado en esta práctica?
____________________________________________
8. ¿Presente un listado de los registros que contiene el MCU del curso?
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
Presente esta guía con los espacios completados.

Ing. M. Logreira V. A.