Sie sind auf Seite 1von 12

Universidad Nacional de Colombia. Cuervo Diana, Villamizar Csar.

IDE de programacin CodeWarrior

Uso de IDE de programacin CodeWarrior


(Agosto 2015)
Cuervo Espinosa Diana Gerlid, Villamizar Castellanos Csar Augusto
{dgcuervoe, cavillamizarc}@unal.edu.co
Universidad Nacional de Colombia
Resumen En ste documento se consignan los resultados y
anlisis del desarrollo de tres cdigos bsicos en el IDE de
programacin CodeWarrior en proyectos pensados para la
programacin del microcontrolador MC9S08QG8 de Freescale.
El primer ejemplo analiza el cdigo generado en un proyecto
por defecto en el IDE, as como los archivos necesarios en el
proyecto y su funcin. Posteriormente unos cdigos de ejemplo
desarrollados en lenguaje Assembler y C++ muestran los
principios bsicos para generar una salida digital en el
microcontrolador.
Palabras Clave Microcontrolador, MC9S08QG8, Freescale,
CodeWarrior, Assembler, C++.
Abstract In this document the results and analysis of the
development of three basic codes in the CodeWarrior IDE
programming projects designed for programming the
microcontroller Freescale MC9S08QG8 are recorded.
The first example analyzes the generated code into a default
project in the IDE, and the necessary files in the project and its
function. Subsequently developed codes of Assembler language
and C ++ are given and show the basic fundaments for
generating a digital output in the microcontroller.
Index Terms Microcontroller, MC9S08QG8, Freescale,
CodeWarrior, Assembler, C++.

I. INTRODUCCIN
Para iniciar la programacin de un nuevo
microcontrolador es importante familiarizarse con
las variables e instrucciones propias del mismo,
para lo cual siempre resulta til la ayuda de un IDE,
el cual puede proporcionar herramientas como la
generacin automtica de los archivos necesarios y
un entorno de debugging, desde el cual es posible
verificar paso a pas qu operaciones deber

cumplir el microcontrolador.
Adems de esto, el programador debe ser capaz de
leer la documentacin propia del dispositivo, en la
cual podr encontrar descripciones ms precisas de
cmo funciona el mismo para as poder aplicar este
conocimiento en sus proyectos.
En ste documento se describe el anlisis y
simulacin de tres programas bsicos que pueden
ser una ayuda para el entendimiento de la
programacin de microcontroladores.
II. PROCEDIMIENTO
A. Creacin de un proyecto por defecto
Inicialmente se genera un proyecto por defecto
desde el IDE Codewarrior desde el men:
File->new->Bareboard Project.
Una vez seleccionado el nombre del proyecto, se
selecciona como device el MC9S08QG8 y se marca
la opcin de tipo de proyecto como aplicacin.
La conexin a usar ser la P&E Full Chip
simulation y el lenguaje Relocatable Assembly.
Una vez seleccionadas stas especificaciones se
finaliza el ayudante para creacin de proyecto.
B. Identificacin de archivos del proyecto
En la Tabla 1 se encuentran organizados y descritos
los archivos generados en un proyecto por defecto.

Tabla 1. Descripcin de archivos generados en un proyecto default de lenguaje Assembler


Ubicacin
Project_Headers

Nombre de archivo
derivative.inc

MC9S08QG8.inc

Descripcin
Librera que incluye la definicin de macros como
feed_watchdog y realiza la inclusin del archivo
MC9S08QG8.inc. ()
Librera que incluye los registros propios del
microcontrolador MC9S08QG8

Universidad Nacional de Colombia. Cuervo Diana, Villamizar Csar.

Project_Settings
Project_Settings/Debugger

MC9S08QG8.mem

burner.bbl

Project_Settings/Startup_Code
Sources

Project.prm
main.asm

Archivo de configuracin de memoria que define


las reas accesibles para modificacin y/o lectura
en el microprocesador seleccionado
Script en el cual se pueden almacenar comandos
para realizar debugging de forma automtica.
(bbl= batch burner language)
Archivo de configuracin de la construccin del
proyecto.
Archivo de propiedades del proyecto
Cdigo fuente a simular y/o programar en el
microcontrolador

MC9S08QG8.tcl
Project_Settings/Linker_Files

IDE de programacin CodeWarrior

El cdigo generado por defecto por el IDE de


programacin se encuentra como Anexo 1 a ste
documento. Cada una de las lneas de comando son
explicadas y analizadas a continuacin.

En esta etapa se declara una seccin llamada


MY_ZEROPAGE, de tipo de dato short
Las secciones son porciones de cdigo o datos que
no pueden ser divididas en elementos ms
pequeos. Cada seccin tiene un nombre, un tipo y
algunos atributos. Cada archivo assembly contiene
por lo menos una seccin.

INCLUDE 'derivative.inc'
La instruccin INCLUDE puede interpretarse como

Sintaxis para la declaracin de secciones:


<Nombre> : SECTION [SHORT][ < Nmero > ]

C. Anlisis de cdigo generado por defecto

XDEF _Startup, main

La directiva XDEF o External symbol


definition, especifica etiquetas en el mdulo actual
y que pueden ser referenciadas por otros mdulos
conectados al mdulo actual
Para este caso se definen dos etiquetas, _Startup y
main, las cuales se podrn usar en diferentes
partes del cdigo para ejecutar las instrucciones que
se encuentren dentro de ellas

XREF __SEG_END_SSTACK
La directiva XREF o External symbol
Reference especifica smbolos referenciados en el
mdulo actual, pero estn definidos en otro mdulo.
En este caso se hace referencia al smbolo
__SEG_END_SSTACK.

MY_ZEROPAGE: SECTION SHORT

MyCode:

SECTION

Al igual que en la instruccin anterior, sta lnea de


cdigo se encarga de crear una nueva seccin, sta
vez con nombre MyCode.

main:

Etiqueta usada para poder ser referenciada luego


como punto de inicio de una ejecucin de
instrucciones. (Inicio del programa).

_Startup:

Etiqueta usada para poder ser referenciada luego


como punto de inicio de una ejecucin de
instrucciones.

LDHX #__SEG_END_SSTACK

Universidad Nacional de Colombia. Cuervo Diana, Villamizar Csar.

La directiva LDHX o Load Index Register from


Memory se encarga de cargar los contenidos de
una ubicacin especfica en la memoria en el
registro de ndices (index register).

TXS
La directiva TXS o Transfer Index Register to
Stack Pointer carga el stack pointer (SP) con los
contenidos del registro de ndices (index register)
menos 1.

CLI

La directiva CLI limpia el bit de mscara de


interrupcin, denominado I, en el Condition
Code Register (CCR). Al limpiar este bit, se
habilitan las interrupciones.

mainLoop:

Etiqueta usada para poder ser referenciada luego


como punto de inicio de una ejecucin de
instrucciones.

IDE de programacin CodeWarrior

La directiva BRA o Branch Always crea una


rama hacia la direccin especificada. De ste modo,
sta instruccin hace que se vuelvan a realizar las
instrucciones dentro de la etiqueta mainLoop de
forma infinita.
D. Cdigos de ejemplo
En los anexos 2 y 3 de ste documento se encuentra
el contenido de los archivos main.asm y main.cpp,
usados como cdigos principales de los ejemplos 1
y 2 respectivamente.
E. Anlisis de simulacin
1) Ejemplo 1
En primer lugar se realiza la carga de un valor
equivalente a 0x52 en el registro A del core del
dispositivo. sta operacin es realizada mediante el
comando LDA
#$52
y
puede
ser
evidenciado desde la simulacin en el proceso de
debugging.

NOP
Instruccin de No operation, la cual consume un
ciclo del reloj del procesador y no realiza cambios
en registros o memoria.

feed_watchdog

La instruccin feed_watchdog es un macro


contenido en la librera derivative.inc. ste realiza
la siguiente operacin:

Figura 1. Registro del core antes de ser ejecutada la instruccin

STA SRS
La directiva STA o Store Accumulator in
Memory, almacena los contenidos del registro A
en memoria.
El registro SRS o System Reset Status Register es
un registro que incluye siete banderas de estado de
solo lectura para indicar la fuente del ms reciente
reinicio. Escribir cualquier valor en la direccin del
registro limpia el temporizador del COP
watchdog (COP= computer operating properly).

BRA

mainLoop

Figura 2. Registro del core luego de ser ejecutada la instruccin

Posteriormente, la lnea de instrucciones


STA SOPT1 se encarga de almacenar en el
registro SOPT1 (System Option register) el valor

Universidad Nacional de Colombia. Cuervo Diana, Villamizar Csar.

encontrado en el registro A. Al tener un valor de


0x52 en ste registro se desactiva el COP watchdog.

IDE de programacin CodeWarrior

Figura 5. Registro PTBDD antes de la ejecucin

Figura 3. Memoria SOPT1 antes de ejecutar la instruccin


Figura 6. Registro PTBDD luego de la ejecucin

A continuacin se ingresa a un ciclo infinito en el


cual, en primer lugar se vuelve a asignar un nuevo
valor al registro A, en ste caso el de 0x0f.
Continua la ejecucin asignando el valor de 0x08 a
PTBD, lo cual es equivalente a poner en estado alto
la salida PTB3.
Figura 4. Memoria SOPT1 luego de ejecutar la instruccin

Posteriormente la instruccin MOV #$08,PTBDD


mueve el valor 0x08 al registro de PIO llamado
PTBDD (Parallel port B data direction).
Es importante tener en cuenta en un bit en estado
alto (valor binario 1) en un registro de direccin de
datos representa que la posicin asociada con ste
bit ser usada como salida.
El puerto paralelo B tiene un total de 8 bits,
numerados de 0 a 7. Al asignar a PTBDD el nmero
0x08, equivalente en binario a 00001000, se est
asignando PTB3 como salida.

Se realiza un decremento unitario en el registro A


hasta que el mismo llega a ser 0 (puede ser
interpretado como una pausa de 15 ciclos). Esto
mediante la instruccin DBNZA
Se asigna un valor de 0x00 al PTB3 y nuevamente
se asigna un valor de 0x0f a A. Una vez ms se
realiza una cuenta descendente hasta llegar a un
valor de A=0x00, se realiza la operacin
feed_watchdog y se reinicia el ciclo.

En resumen, se puede afirmar que ste programa


genera, aproximadamente, una seal de salida
cuadrada por PTB3 con un ciclo til del 50% y un
periodo de 30 ciclos del reloj.

Figura 7. Seal de salida digital obtenida por la ejecucin del cdigo


de ejemplo 1

IDE de programacin CodeWarrior

Universidad Nacional de Colombia. Cuervo Diana, Villamizar Csar.

2) Ejemplo 2
Es importante destacar en ste ejemplo que, durante
la creacin del proyecto es necesaria la seleccin
del lenguaje de programacin C++ en lugar de
Assembler.
La ejecucin del programa inicia desde el mtodo
main, en el cual la primera instruccin se encarga
de asignar un valor de 0x52 al registro SOPT1,
desactivando as el COP watchdog tal como se
indic en el anterior ejemplo.
SOPT1
=
0x52;
La instruccin ICSC1 = 0b10000000 se refiere a
configuraciones del Internal Clock Source, de
modo al asignar un estado alto nicamente al bit 7,
indica que se usar una referencia externa de reloj.
Por otro lado, la instruccin ICSC2 =
0b00110110; se puede interpretar por los
bits en estado alto y la funcin de cada uno:
Bit1 = Habilita la referencia externa de reloj
Bit2 = Selecciona la fuente de referencia externa,
para este caso un 1 significa que la referencia es un
oscilador.
Bit4 = Configura el oscilador externo para modo de
operacin de alta ganancia
Bit5 = Se selecciona un rango de frecuencia alta del
oscilador.
(Informacin
obtenida
microcontrolador)

del

datasheet

del

La instruccin for(;;){} indica que el cdigo


agrupado entre los corchetes se ejecutar
infinitamente.
Dentro de sta instruccin se realiza una asignacin
de salida del puerto B de 0b00111111, de modo que
todas las salidas del puerto B se encontrarn en
estado alto.
PTBD
=
0b00111111;
Luego de esta asignacin se realiza un delay o
retraso, el cual, analizando el cdigo, consiste
simplemente en el conteo de 0 a 6000, conteo
durante el cual no se realiza ninguna operacin.
Una vez ms, se asigna un nuevo valor a las salidas
del puerto B, sta vez de 0b00000000, de modo que
todas adquieren un estado bajo.
Se ejecuta nuevamente un delay de 6000 ciclos y se
inicia una nueva iteracin del ciclo.
PTBD
=
0;
En resumen, se puede firmar que la programacin y
ejecucin de ste cdigo en el microcontrolador
resultar en la generacin de 6 seales cuadradas en
las salidas PTB0-5 con ciclo til del 50% y con un
periodo de 12000.
III. PREGUNTAS SUGERIDAS

Que tipos de archivos son generados en la


carpeta debug?
Archivos en la carpeta Debug son de tipo:
MEM
TLC
LAUNCH

Figura 8. Descripcin de campos para ICSC2

Figura 9. Descripcin de campos para ICSC2

Luego se procede a asignar un valor de 0b00111111


al registro PTBDD, lo cual, como se describi en el
anterior ejemplo, resulta ser la asignacin como
salidas en el puerto B a los pines 0 a 5 (PTB0-5).
PTBDD
=
0b00111111;

Qu tipo de informacin est en los archivos


*.inc y para que se utiliza?
Un archivo .INC es un archivo de inclusin,
una forma de tomar un pedazo de cdigo y
reutilizarlo en una varidedad de scripts de
ASP, uno de los muchos lenguajes script
(PHP, ASP, .NET, JSP, Perl, Phyton, etc.)
que permiten crear webs dinmicas, desde
pginas simples hasta potentes aplicaciones
web. Originalmente los usuarios nombraban

Universidad Nacional de Colombia. Cuervo Diana, Villamizar Csar.

a sus archivos de inclusin con la extensin


.INC para diferenciarlos de los dems, y
muchos la siguen usando. [2][3]
Un archivo .INC es un archivo de texto que
contiene
declaraciones,
encabezados,
funciones y otros datos que puede ser
utilizados por un cdigo fuente como punto
de referencia. Este archivo se puede utilizar
en conjunto con C/C++, Pascal, Java, PHP y
otros lenguajes.
Si hay un visualizador de archivos .INC o un
programa para abrirlos disponible, puedes
encontrar el visualizador en la seccin de
programas de soporte y luego descargar un
programa gratuito para abrir INClude file
(Assembler language or Active Server) File.
[4]

Qu es emulators, in-circuit emulator (ICE),


in-citcuit programiming?
En informtica, un emulador es un software
que permite ejecutar programas o
videojuegos en una plataforma, sea una
arquitectura de hardware o un sistema
operativo, diferente de aquella para la cual
fueron escritos originalmente. A diferencia
de un simulador, que solo trata de reproducir
el comportamiento del programa, un
emulador trata de modelar de forma precisa
el dispositivo de manera que este funcione
como si estuviese siendo usado en el aparato
original. [5]
Un in-circuit emulator (ICE), en espaol un
emulador en circuito, es una interfaz de
hardware que permite a un programador
cambiar o depurar el software en un sistema
embebido. El ICE se instala temporalmente
entre el sistema embebido y un terminal
externo o un computador personal para que
el programador pueda observar y alterar lo
que tiene lugar en el sistema embebido, que
no tiene su propia pantalla o teclado.

IDE de programacin CodeWarrior

Un ICE sirve como una CPU "sustituta"


(unidad central de procesamiento) para el
microcomputador en un sistema embebido.
El ICE por lo general tiene un conector que
se ajuste al zcalo de la CPU en el sistema.
Si el conector suministrado con el ICE no
coincide con el zcalo del sistema, se puede
encontrar un adaptador adecuado. Un ICE
puede ayudar a los ingenieros de diseo en
el desarrollo de productos, y tambin ayudar
a los programadores o usuarios finales en la
mejora del producto, modificacin o
mantenimiento. [6]
Dentro de la programacin del sistema
(ISP), tambin conocida como la
programacin en circuito (ICP) , la
programacin serial o programacin en serie
en el circuito (ICSP) permite la
programacin
y
reprogramacin
de
microcontroladores, memorias EEPROM
serie y memorias flash ya soldada en una
PCB de destino.
In-System Programming (ISP) es una
tcnica donde un dispositivo programable se
programa despus de que los dispositivos
son colocados en una placa de circuito, ICSP
es una tcnica mejorada ISP implementado
en microcontroladores FLASH RISC
(MCU). El uso de slo dos pines I/O en serie
de entrada y de salida de datos ICSP hace
fcil usar y menos intrusivo en el
funcionamiento normal de la MCU.
Debido a que ISP puede adaptarse a los
cambios rpidos de cdigo en una lnea de
fabricacin, ofrece una gran flexibilidad,
reduccin del tiempo de desarrollo y los
ciclos de produccin para mejorar el tiempo
de comercializacin. [7][8]
Qu significa puerto JTAG?
Puerto JTAG, desde su acrnimo en ingls,
Joint Test Action Group, es el nombre
comn utilizado para la norma IEEE 1149.1
titulada Standard Test Access Port and
Boundary-Scan Architecture, en espaol
Test estndar de puertos de acceso y

Universidad Nacional de Colombia. Cuervo Diana, Villamizar Csar.

arquitectura para la exploracin de lmites,


para test de puertos de acceso utilizada para
testear PCBs utilizando boundary scan, es
decir, exploracin de lmites.
JTAG se estandariz en 1990 como la
norma IEEE 1149.1-1990. En 1994 se
agreg un suplemento que contiene una
descripcin del boundary scan description
language (BSDL), en espaol descripcin
del lenguaje de boundary scan. Desde
entonces, esta norma fue adoptada por las
compaas electrnicas de todo el mundo.

Figura 10. Puerto JTAG

Actualmente, Boundary-scan y JTAG son


sinnimos,
aunque
fue
diseado
originalmente para circuitos impresos, ahora
es utilizado para la prueba de sub-mdulos
de circuitos integrados, y es muy til
tambin como mecanismo para depuracin
de aplicaciones embebidas, puesto que
provee una puerta trasera hacia dentro del
sistema. Cuando se utiliza como herramienta
de depuracin, un emulador en circuito que
usa JTAG como mecanismo de transporte
permite al programador acceder al mdulo
de depuracin que se encuentra integrado
dentro de la CPU. El mdulo de depuracin
permite al programador corregir sus errores
de cdigo y lgica de sus sistemas, lo que
lleva a su utilidad a trascender ms all de
una norma. [9]
Qu es BDM, para qu sirve?
Diferentes fabricantes tienen diferentes
medios para la depuracin de software y

IDE de programacin CodeWarrior

hardware, y cada uno de ellos aporta su


propio nombre. BDM (Background Debug
Mode), es uno de ellos, y ms puntualmente
es el trmino empleado por Motorola para
una determinada forma de depuracin de
sistemas. Tambin se refiere al nombre del
puerto fsico (conjunto de pines) con el que
equipan
a
los
chips
de
los
microcontroladores para acceder al interior
del chip.
Otros chips de otros fabricantes usan el
puerto JTAG (IBM), el puerto OnCE (DSP`s
de Motorola), el puerto MPSD (de Texas
Instruments), etc. Pero la depuracin on-chip
(On-Chip Debbuding, OCD) abarca
cualquiera de estos puertos y se le denomina
a menudo depuracin BDM, aunque sea
realizada a travs de un puerto JTAG.
Todos ellos estn basados en una serie de
facilidades que el fabricante ha instalado
dentro del chip y que sirven para
inspeccionar, modificar y depurar el
funcionamiento tanto del hardware como del
software. [10]
Cmo se hace la programacin de un mcu?
Se debe elegir un lenguaje de programacin,
para este caso se hablara del proceso de
programacin en C.
Escribir el cdigo de ensamble que ser
transmitido, grabado y ejecutado por el
microcontrolador no es fcil, por lo que los
programadores
de
computadoras
de
escritorio recurrieron a un lenguaje de
programacin de nivel alto. Los lenguajes de
nivel alto son cada vez ms populares, y C
es quizs el lenguaje de programacin de
MCU ms usado y ms til.
Adicionalmente,
existen
varios
compiladores de C disponibles en el
mercado, muchos de ellos gratuitos o con
una versin gratuita, por lo que para el buen
funcionamiento de del programa se debe
instalar un compilador de C que genere el

IDE de programacin CodeWarrior

Universidad Nacional de Colombia. Cuervo Diana, Villamizar Csar.

cdigo para el MCU que se desea simular, y


luego TINA, un potente pero accesible
paquete de programas para analizar, disear
y probar en tiempo real circuitos analgicos,
digitales, HDL, MCU, electrnicos mixtos y
sus circuitos impresos (PCB); lo integrar
automticamente en el depurador de cdigo
C.

b)
c)

El cdigo HEX, es decir, el cdigo extrado


y generado por el compilador se almacena
automticamente en los archivos TSC. Ya
no necesita el compilador de C una vez
compilado el cdigo C en HEX. Sin
embargo, necesita el compilador de C
instalado para comprobar el cdigo C. Si
ejecuta la simulacin los pines se manejan
con valores lgicos segn las reglas de la
simulacin en modo mixto. Esto supone una
gran diferencia comparado con la simulacin
externa de MCU en comparacin con TINA.

d)
e)

f)

Dnde encuentro la herramienta Trace en


CW y para qu sirve?
En caso de crear un proyecto con medio de
conexin Open Source JTAG debemos
cambiar la configuracin por defecto para
que
reconozca
el
dispositivo
o
microcontrolador.
a) Hacer Build al proyecto (se debe
tener seleccionado el proyecto en el

Project Panel) y elegir entre RAM,


Flash Debug y Flash Release.
Ir a Run>Debug Configurations.
Seleccionar proyecto en la parte
izquierda (no est seleccionado por
defecto as que verificar que est
seleccionado el proyecto correcto).
Adems del nombre del proyecto,
debe decir el tipo de memoria que
seleccionamos en a) y seguido de
OSJTAG.
Seleccionar botn Edit que est a la
derecha del tipo de conexin.
En la nueva ventana elegir como tipo
de conexin J-Link\J-Trace for
ARM.
Dar OK a las ventanas que quedaron
abiertas. [13]

El depurador CodeWarrior logra trazar


capacidades y perfilar un conjunto de
MCU`s. En trminos bsicos, el rastro de un
programa dice dnde va el programa,
mientras que su perfil informa que pasa con
el programa la mayor parte de su tiempo. El
trazado es til para la depuracin mostrando
si se invoca una funcin o un conjunto de
funciones especficas. [14]

Tambin
se
pueden
voltajes
y
visualizaciones del circuito completo
durante una simulacin e incluso seguir la
operacin paso a paso con la ayuda del
depurador de C de TINA.
Es importante anotar que existen dos
maneras de alimentar el programa para
microcontroladores en TINA. Puede utilizar
el cdigo binario y el archivo de depuracin
creados por cualquier compilador estndar
(por ejemplo, MPLAB para los PIC) o puede
simplemente cargar su cdigo ensamblador
para ejecutarlo y depurarlo directamente en
TINA utilizando su depurador- ensamblador
incorporado. [11][12]

IV. CONCLUSIONES

As como en otros campos de conocimiento,


el campo de la electrnica dedicado a los
microcontroladores tuvo la necesidad de
estandarizar procesos y crear normas a las
que se tuvieran que ceir sus creaciones.
Debido al gran nmero de fabricantes de
estos elementos la tarea de los usuarios se
dificulta al querer tener acceso total y
universal, puesto que aunque la norma exista
cada productor establece la codificacin que
desee, haciendo el abanico muy amplio y
poco genrico para aquella persona que
desea especializarse en el mbito.
Muchas de las siglas e instrucciones usadas
para la programacin del microcontrolador
no resultan intuitivas a primera vista, por lo

Universidad Nacional de Colombia. Cuervo Diana, Villamizar Csar.

cual es importante tener a la mano el manual


del mismo.
Para
la
programacin
de
los
microcontroladores se deben conocer
lenguajes de programacin de alto nivel, los
cuales son dispuestos normalmente para esta
tarea, como Assembler y C++; y de no
conocerse
se
debe
consultar
la
documentacin necesaria y pertinente para
un buen desarrollo de la tarea.
Para la asignacin de salidas o entradas en el
microcontrolador es importante tener en
cuenta la edicin de los registros PTXDD (X
siendo el nombre del puerto deseado).
Siempre puede ser una buena prctica editar
los mismos al inicio del cdigo.
Para el uso de cada microcontrolador es
importante configurar la referencia de reloj
que se utilizar, as como otros campos
necesarios segn la aplicacin.
El programador debe tratar de programar de
una manera intuitiva, ordenada y eficaz en
tiempo y memoria, as como en la
programacin regular, con el fin de
optimizar lo ms que se pueda el desempeo
y los recursos del microcontrolador.
V. REFERENCIAS

[1] Freescale semiconductors, HCS08 Family Reference


Manual.
[2] Disponible Online: http://www.forosdelweb.com/f15/queexactamente-archivo-inc-149619/
[3] Disponible Online: http://www.aulaclic.es/paginasweb/a_11_1_1.html
[4]
Disponible
Online:
http://es.downloadastro.com/Archivos%20de%20Windows/i
nc/
[5] Disponible Online: https://es.wikipedia.org/wiki/Emulador
[6]
Disponible
Online:
http://whatis.techtarget.com/definition/in-circuit-emulatorICE
[7] Disponible Online: http://www.xeltek.com/in-circuitprogramming-icp-in-asystem-programming-serialprogramming
[8] Disponible Online: https://www.elnec.com/sw/30277d.pdf
[9]
Disponible
Online:
http://www.todopic.com.ar/foros/index.php?topic=16129.0;wa
p2
[10]
Disponible
Online:
ftp://ftp.ehu.es/cidira/dptos/depjt/Practicas/SED/documentacio
n/practicas/02_DepuracionProgramas.PDF
[11]
Disponible
Online:
http://es.tina.com/programming_and_debugging_MCUs_using
_c

IDE de programacin CodeWarrior

[12]
Disponible
Online:
http://es.tina.com/microcontroller_circuits
[13]
Disponible
Online:
https://sites.google.com/site/microcontroladorkwikstik/tutorial
es/codewarrior/crear-un-proyecto-en-codewarrior
[14]
Disponible
Online:
http://blogs.freescale.com/mcus/2011/10/its-all-about-tracingfreescale-codewarrior/

Autores:
Diana G. Cuervo E.
Estudiante Ingeniera Mecatrnica
Universidad Nacional de Colombia - Sede Bogot
2015
Csar A. Villamizar C.
Estudiante Ingeniera Mecatrnica
Universidad Nacional de Colombia - Sede Bogot
2015

Universidad Nacional de Colombia. Cuervo Diana, Villamizar Csar.

IDE de programacin CodeWarrior

10

VI. ANEXOS
Anexo 1. Cdigo generado automticamente en el archivo main.asm para un proyecto en cdigo Assembler
;*******************************************************************
;* This stationery serves as the framework for a user application. *
;* For a more comprehensive program that demonstrates the more
*
;* advanced functionality of this processor, please see the
*
;* demonstration applications, located in the examples
*
;* subdirectory of the "Freescale CodeWarrior for HC08" program
*
;* directory.
*
;*******************************************************************
; Include derivative-specific definitions
INCLUDE 'derivative.inc'
; export symbols
XDEF _Startup, main
; we export both '_Startup' and 'main' as symbols. Either can
; be referenced in the linker .prm file or from C/C++ later on

XREF __SEG_END_SSTACK

; symbol defined by the linker for the end of the

stack
; variable/data section
MY_ZEROPAGE: SECTION SHORT

; Insert here your data definition

; code section
MyCode:
SECTION
main:
_Startup:
LDHX
#__SEG_END_SSTACK ; initialize the stack pointer
TXS
CLI
; enable interrupts
mainLoop:
; Insert your code here
NOP
feed_watchdog
BRA
mainLoop

Universidad Nacional de Colombia. Cuervo Diana, Villamizar Csar.

IDE de programacin CodeWarrior

Anexo 2. Ejemplo 1 de simulacin en lenguaje Assembler. Archivo main.asm


;*******************************************************************
;* Universidad Nacional de Colombia - Sede Bogot
;* Facultad de ingeniera
;* Microcontroladores
;* Laboratorio 1. Cuervo Diana, Villamizar Csar
;* Cdigo de ejemplo de programacin en lenguaje Assembler
;*******************************************************************
XDEF _Startup, main
XDEF mainLoop
XDEF loop
XREF __SEG_END_SSTACK
INCLUDE 'derivative.inc'
MyCode:

SECTION

main:
_Startup:
LDHX
#__SEG_END_SSTACK ; initialize the stack pointer
TXS
CLI
; enable interrupts
mainLoop:
LDA
#$52
STA
SOPT1
MOV
#$08,PTBDD
loop: LDA
#$0F
MOV #$08,PTBD
NOP
DBNZA *
MOV
#$00,PTBD
LDA
#$0F
DBNZA
*
feed_watchdog
BRA
loop
BRA
mainLoop

11

IDE de programacin CodeWarrior

Universidad Nacional de Colombia. Cuervo Diana, Villamizar Csar.

Anexo 3. Ejemplo 2 de simulacin. Lenguaje C++. Archivo main.cpp


/*
;*******************************************************************
;* Universidad Nacional de Colombia - Sede Bogot
;* Facultad de ingeniera
;* Microcontroladores
;* Laboratorio 1. Cuervo Diana, Villamizar Csar
;* Cdigo de ejemplo de programacin en lenguaje C++
;*******************************************************************
*/
#include
<MC9S08QG8.h>
void Delay(unsigned
long delay);
void main(){
SOPT1 =
0x52; //
disable
PTBDD =
0b00111111; //
set
//
select
XTAL
ICSC1 =
0b10000000;
ICSC2 =
0b00110110;
for
(;;) //
endless
loop
{
PTBD =
0b00111111; //
Delay(6000);
PTBD =
0;
Delay(6000);
}
}
void
}

Delay(unsigned
unsigned
long
for
(i=0; i<=

long delay){
i;
delay;i++){}

COP
watchdog
PTB0-5
as

output

set

high

PTB0-5

12

Das könnte Ihnen auch gefallen