Como en el blog anterior se presenta a continuación una comunicación de puerto serial en el que nuestro micro-controlador le enviara una "x" a nuestra computadora.
Materiales:
MC9S08SE4
MAX233
Cable adaptador USB-RS232
Una Tabla de Pruebas (Protoboard)
HCS08_OpenSourceBDM (Con o que se programa el micro)
A continuación el código:
;*******************************************************************
;* 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
ABSENTRY _Startup
;
; variable/data section
;
ORG RAMStart ; Insert your data definition here
ExampleVar: DS.B 1
;
; code section
;
ORG ROMStart
_Startup:
LDHX #RAMEnd+1 ; initialize the stack pointer
TXS
CLI ; enable interrupts
mainLoop:
;Powered by iGus
JSR AR ;saltamos a la etiqueta AR
CICLO: ;Etiqueta ciclo
JSR RET ;Salta a la etiqueta RET
feed_watchdog ;A limenta al perro guardian
BRCLR 7,SCIS1,CICLO ;Salta a la etiqueta CICLO si el bit 7 del registro SCIS1 es cero
LDA #$78 ;Carga en el registro A un nuemro 78 que en ASCII es una x
STA SCID ;Guarda el valor del registro A en el registro SCID
feed_watchdog
BRA CICLO ;Siempre salta a la etiqueta ciclo
AR: ;Etiqueta AR
MOV #0,SCIBDH ;Carga un cero en este registro
MOV #31,SCIBDL ;Carga un 31 decimal al registro
MOV #$00,SCIC1 ;Carga un cero al registro
MOV #$0C,SCIC2 ;Carga una C al registro
RTS ;Regresamos del salto
RET: ;Etiqueta RET
LDHX #$FFF ;Carga en el registro H:X el número 0FFF
RET1: ;Etiqueta RET1
feed_watchdog ;A limenta al perro guardian
AIX #$01 ;Incrementa el registro X en 1
CPHX #$500 ;Compara H:X con un 500 la resta es un cero si son iguales
BNE RET1 ;Salta a etiqueta RET1 si z = 0
RTS ;Regresa del salto
;**************************************************************
;* spurious - Spurious Interrupt Service Routine. *
;* (unwanted interrupt) *
;**************************************************************
spurious: ; placed here so that security value
NOP ; does not change all the time.
RTI
;**************************************************************
;* Interrupt Vectors *
;**************************************************************
ORG $FFFA
DC.W spurious ;
DC.W spurious ; SWI
DC.W _Startup ; Reset

En la imagen de arriba se ve la IDE del CodeWarrior, primero se hace el debug en Full Chip para saber si hay errores en el código; después se hace el Debug con la selección de la imagen, HCS08 OpenSource_BDM.
Al hacer el debug aparece la ventana de simulación, le dan en el botón Start o presionan F5 para programar en circuito el microcontrolador.
Con el Hyper Termianl, si es la primera vez que lo usan aparece una ventana que pide datos de su conexión llenen los de tal manera que lo puedan cerrar y así acedan a programa, después pueden en el menú Archivo hacer una nueva conexión, les aparecerá la siguiente ventana de arriba para que le pongan icono y nombre a su conexión.
Después les pedirá a donde conectarse, pueden ver que en las dos opciones de arriba llene los datos para que me dejara usar el Hyper Terminal, como llamaremos a nuestro micro debemos saber como se llama el puerto donde conectamos el adaptador USB-RS232. Eso lo pueden saber en las opciones de window en administrar hardware donde pueden modificar los Drivers.
Después de llenar ese campo aparecerá las propiedades del puerto, la primera es la velocidad de comunicación tiene que ser la misma que programaron en la codificación al configurar los registros en la etiqueta AR.
Con esto ya tenemos configurado nuestro Hyper Terminal, para que nuestro micro nos envié datos.
Arriba pueden ver el micro que esta trabajando cuando en el simulador corremos el programa, y en el Hyper Terminal que interpreta los datos como código ASCII.
Arriba todos los materiales ya conectados para implementar el programa.