Vous êtes sur la page 1sur 58

Universidad Autnoma de Baja California

Facultad de Ingeniera Mexicali

El procesador HCS08
M.C. Jorge Eduardo Ibarra Esquer
Semestre 2011-1

Caractersticas del procesador


Todos los microcontroladores de la familia
HCS08 utilizan al CPU HCS08, junto con
elementos de memoria y diversos
perifricos.
Ofrece alta velocidad y bajo consumo de
energa.

Caractersticas del procesador


Frecuencia del CPU
mxima de 40MHz
Espacio de memoria
de 64KB
16 modos de
direccionamiento
Transferencia de
datos de memoria a
memoria

Compatibilidad de
cdigo con la familia
M68HC05
Instrucciones para
operaciones BCD
Operacin de
multiplicacin de 8x8
bits y divisin de 16/8

Modelo de programacin

El acumulador A
Registro de propsito general de 8 bits
El CPU lo usa para colocar operandos y
resultados de operaciones

Registro ndice H:X


Permite direccionar el espacio de
memoria de 64KB
Se utiliza en los modos de
direccionamiento indexado

Apuntador de la pila
Contiene la direccin de la siguiente
posicin en la pila
La direccin se decrementa con las
operaciones push y se incrementa con las
operaciones pull

Contador de programa
Contiene la direccin de la siguiente
instruccin u operando que se leer

Registro de cdigo de condiciones


Contiene la mscara de interrupcin y
algunas banderas que indican el estado
de la operacin anterior

Mapa de memoria

Mapa de memoria

Programacin del
microcontrolador

Sintaxis de ensamblador
Un programa fuente en ensamblador
consiste en una secuencia de sentencias.
Cada sentencia se codifica en una lnea de
texto y puede ser:
Un comentario
Una lnea de cdigo

Comentarios
Un comentario puede ocupar una lnea
completa con el propsito de explicar el
funcionamiento de un bloque de cdigo
Un comentario se indica con un punto y
coma, despus del cual sigue el texto del
comentario
; Esta lnea es un comentario

Cdigo
Cada lnea de cdigo incluye uno o ms de
los siguientes campos:
Una etiqueta
Un campo de operacin
Uno o ms operandos
Un comentario

Etiquetas
La etiqueta es el primer campo en una lnea de
cdigo. Una etiqueta es un smbolo seguido por
dos puntos :. Las etiquetas estn formadas por:
Letras
Nmeros
Puntos
Guin de subrayado

Las etiquetas no pueden empezar con un nmero.

Etiquetas
Por lo general, el ensamblador considera
que cualquier identificador que inicie a
partir de la primer columna de una lnea,
es una etiqueta, incluso aunque no est
terminado con dos puntos.

Etiquetas
Las etiquetas son obligatorias en las
directivas de ensamblador que definen el
valor de un smbolo (SET o EQU). En estos
casos, la etiqueta toma el valor
correspondiente a la expresin en el campo
del operando.

Etiquetas
A las etiquetas que se especifiquen en
cualquier otra directiva, instruccin o
comentario, se le asigna el valor de la
localidad de memoria en la que se definan.

Campo de operacin
Este campo es el que sigue despus de la etiqueta
y se separa de ella con un espacio en blanco
El campo de operacin no debe empezar en la
primer columna
El campo de operacin contiene alguno de los
siguientes elementos:
Una instruccin
Una directiva
El nombre de una macro

Campo de operacin
Instruccin
Las instrucciones estn definidas en el
manual de referencia del CPU HCS08.

Directivas
Son indicadores para el ensamblador que
permiten definir secciones, constantes, etc.

Macros
Al incluir el nombre de una macro, el cdigo
que ste representa se incluye en esa parte
del programa.

Campo del operando


Cuando se incluye el operando, este sigue al
campo de la operacin, separado por un espacio
en blanco. Si hay dos o ms operandos, stos se
separan con comas.
Para que el ensamblador, y en su momento el
procesador, identifiquen de dnde se tomarn los
datos, se utilizan diferentes modos de
direccionamiento.

Modos de direccionamiento
El CPU HCS08 incluye 16 modos de
direccionamiento:
Inherente
Inmediato
Directo
Extendido
Indexado
sin offset
offset de 8 bits
offset de 16 bits
Relativo
Apuntador de la pila
offset de 8 bits
offset de 16 bits

Memoria a memoria
Inmediato a directo
Directo a directo
Indexado a directo con post
incremento
Directo a indexado con
post incremento
Indexado
con post incremento
offset de 8 bits con post incremento

Direccionamiento inherente
Las instrucciones que utilizan este
direccionamientos no tienen que buscar un
operando sobre el cual actuar.
Algunas de estas instrucciones actan sobre
los datos que se encuentran en los registros.
DIV
CLRA
PSHX

CLI

MUL

LSLA

NEGA

NOP

TAX

Direccionamiento inmediato
El operando en instrucciones con
direccionamiento inmediato se encuentra en los
bytes que siguen al cdigo de operacin.
Estos bytes son el valor del operando que
utilizar la instruccin.
Para indicar que se utilizar direccionamiento
inmediato, se utiliza el smbolo #
El operando est limitado a uno o dos bytes,
dependiendo del registro involucrado.

Direccionamiento inmediato
Algunos ejemplos de uso de este
direccionamiento son:
CPHX #$FFFF
LDA #100
LDHX #etiqueta
SUB #$A0

Otras instrucciones que lo utilizan:


ADC, ADD, AND, CPX, EOR, ORA, SBC

Direccionamiento directo
La mayora de las instrucciones que lo
utilizan pueden acceder a los primeros
256 bytes de la memoria con solo 2
bytes:
1 byte para el cdigo de operacin
1 byte para la parte baja de la direccin
efectiva

El byte ms significativo de la direccin


efectiva se toma siempre como $00

Direccionamiento directo
El uso de este modo de direccionamiento
est limitado a operandos en la pgina
directa o pgina 0 (direcciones $0000 a
$00FF)
En la pgina 0 se encuentra parte de la
memoria RAM del microcontrolador
($0040 a $023F), as como la mayora de
los registros de E/S ($0000 a $003F)

Direccionamiento directo
Algunos ejemplos de uso de este modo de
direccionamiento son:
STA $03 ;A Puerto D
LDX $00 ;Puerto A X
CPX $E0 ;Compara X con el contenido de
$00E0

Direccionamiento extendido
Utilizando este modo de direccionamiento,
las instrucciones pueden acceder a
cualquier direccin en un mapa de
memoria de 64Kbytes
Todas las instrucciones extendidas
utilizan 3 bytes:
1 byte para el cdigo de operacin
Los otros dos son el MSB y LSB de la
direccin del operando

Direccionamiento extendido
Se utiliza cuando es necesario utilizar
memoria por encima de la pgina 0
Algunos ejemplos de uso de este modo de
direccionamiento son:
ADC $5006
AND $0100
LDX $FE04

Direccionamiento indexado, sin


offset
Este modo se utiliza para tener acceso a
datos con direcciones variables. X
contiene la parte baja de la direccin,
mientras que H contiene la parte alta
Estas instrucciones pueden mover un
apuntador a travs de una tabla o
almacenar la direccin de una localidad
de RAM o E/S que se utilice
frecuentemente

Direccionamiento indexado, sin


offset
Algunos ejemplos de uso de este modo de
direccionamiento son:
JMP ,X
STA ,X
ADC ,X
NEG ,X

Direccionamiento indexado,
con offset de 8 bits
En estas instrucciones, el CPU suma los
bytes sin signo en H:X al byte sin signo
que sigue al cdigo de operacin. La
suma es la direccin efectiva del
operando
Estas instrucciones son tiles para
seleccionar el k-simo elemento en una
tabla de n elementos

Direccionamiento indexado,
con offset de 8 bits
Algunos ejemplos de uso de este modo de
direccionamiento son:
JMP $FF,X
STA 18,X
LDA 7,X
NEG $10,X

Direccionamiento indexado,
con offset de 16 bits
En estas instrucciones, el CPU suma los
bytes sin signo en H:X a la palabra sin
signo formada por los dos bytes que
siguen al cdigo de operacin. La suma es
la direccin efectiva del operando
Estas instrucciones son tiles para
seleccionar el k-simo elemento en una
tabla de n elementos

Direccionamiento indexado,
con offset de 16 bits
Algunos ejemplos de uso de este modo de
direccionamiento son:
JMP $20FF,X
STA $A018,X
LDA $FF00,X
JSR $1000,X

Direccionamiento con el apuntador de


la pila, con offset de 8 y 16 bits
Estos modos de direccionamiento son
similares a los indexados con offset, slo
que utilizan el apuntador de la pila en
lugar del registro ndice
Estas instrucciones son tiles para
acceder de una manera sencilla a los
datos en la pila

Direccionamiento con el apuntador de


la pila, con offset de 8 y 16 bits
Algunos ejemplos de uso de estos modos
de direccionamiento son:
STA $10,SP
TST $25,SP
LDA $FF00,SP
STX $0500,SP

Direccionamientos de memoria a
memoria
El CPU HCS08 incorpora la capacidad de
realizar transferencia de datos directa
entre localidades de memoria.
Se utiliza la instruccin MOV.
Se cuenta con cuatro modos de
direccionamiento de memoria a memoria.

Memoria a memoria: Inmediato a


Directo
Generalmente se utiliza para inicializar
variables y registros en la pgina directa
El operando en el byte que sigue al
cdigo de operacin se almacena en la
localidad de la pgina directa indicada
por el segundo byte
La instruccin MOV asociada a este modo
no altera el contenido del acumulador

Memoria a memoria: Inmediato a


Directo
"PSHA" " ; Respalda el valor de A
"LDA "#$27 " ; A=$27
"STA "$A0" ; Se almacena #$27 en $00A0
"PULA" " ; Se restaura el valor de A
El cdigo anterior se puede cambiar por el siguiente:

"MOV"#$27,$A0

Memoria a memoria: Directo a


Directo
Generalmente se utiliza para intercambiar datos
entre registros en la pgina directa.
El operando en la localidad de la pgina directa
indicada por el byte que sigue al cdigo de
operacin se almacena en la localidad de la
pgina directa indicada por el segundo byte.
La instruccin MOV asociada a este modo no
altera el contenido del acumulador.

Memoria a memoria: Directo a


Directo
"PSHA" " ; Respalda el valor de A
"LDA "$04 " ; A=Contenido de la dir. $0004
"STA "$05 " ; $0005=$0004
"PULA" " ; Se restaura el valor de A
El cdigo anterior se puede cambiar por el siguiente:

"MOV"$04,$05

Memoria a memoria: Indexado a


Directo con Post Incremento
Generalmente se utiliza para transferir tablas
direccionadas por el registro ndice a un
registro en la pgina directa.
El operando direccionado por H:X se almacena
en la localidad de la pgina directa indicada por
el byte que le sigue al cdigo de operacin. H:X
se incrementa al terminar.
La instruccin MOV asociada a este modo no
altera el contenido del acumulador.

Memoria a memoria: Indexado a


Directo con Post Incremento
Si quisiramos escribir el contenido de la
direccin a la que apunta H:X en el puerto B, se
hara lo siguiente:
"

"

"MOV "X+,$01
Una vez que se ha movido el dato, H:X incrementa
su valor en 1, apuntando as a la siguiente
direccin.

"

Memoria a memoria: Directo a


Indexado con Post Incremento
Generalmente se utiliza para llenar tablas
desde registros en la pgina directa.
El operando en la localidad de la pgina directa
indicada por el byte que le sigue al cdigo de
operacin, se almacena en la localidad
direccionada por H:X. H:X se incrementa al
terminar.
La instruccin MOV asociada a este modo no
altera el contenido del acumulador.

Memoria a memoria: Directo a


Indexado con Post Incremento
Si quisiramos escribir el contenido del puerto D
en la direccin a la que apunta H:X, se hara lo
siguiente:
"

"

"MOV "$03,X+
Una vez que se ha movido el dato, H:X incrementa
su valor en 1, apuntando as a la siguiente
direccin.

"

Direccionamiento relativo
Todas las instrucciones de salto condicional
utilizan el direccionamiento relativo para
calcular la direccin efectiva resultante.
Si la condicin es verdadera, la direccin
efectiva se carga en el PC. Si es falsa, avanza
a la siguiente instruccin.

Direccionamiento relativo
El desplazamiento es un byte en complemento a
2 que permite un rango de salto de -128 a 127
bytes desde la direccin que sigue a la del
salto.
Inicio: LDA #1
CMP #-2
BLT Inicio
; Salta si A es < -2
Fin:
BRA Fin

Direccionamiento relativo
"Inicio: "LDA #1
""CMP #-2
""BLT "Inicio "; Salta si A es < -2
"Fin: "BRA"Fin

Direccionamiento indexado con post


incremento, sin offset y con offset de
8 bits
Este modo de direccionamiento es til para
bsquedas en tablas.
Una vez direccionado el operando, H:X se
incrementa.
Slo se utiliza con la instruccin CBEQ
(Compare and Branch if Equal)

Direccionamientos indexados con


post incremento
"

"LDA

STA
MOV
CLRX
ciclo:
CBEQ
BRA
iguales: CLRX
ciclo2:
CBEQ
BRA
iguales2: BRA

#$FF
$10
$10,$60
X+,Iguales
Ciclo

; Sin offset

$50,X,Iguales
Ciclo2
Iguales2

; Offset de 8 bits

Directivas

Declaracin de secciones
Secciones absolutas: Directiva ORG
Permite definir secciones de datos, de constantes y
de cdigo
Var1:
Var2:

ORG
DS.B
DS.B

$50
1
1

;Esta es una seccin de datos


;Igual a RMB

Cnst1:
Cnst2:

ORG
DC.B
DC.B

$B000
$35
$A8

;Seccin de constantes
;Igual a FCB

ORG
CLI
CLRA

$B100

;Seccin de cdigo

Inicio:

La directiva EQU
Esta directiva asigna el valor de la expresin en
el campo del operando a la etiqueta indicada:
PTOA:
EQU $0000
RAM:
EQU $0040
DDRA:
EQU $0004
EEPROM: EQU $B000

Tarea
Investigar las directivas que se pueden
utilizar para programar el procesador
HCS08.

Un programa de ejemplo
$include M9S08LC60.inc

; Incluir las etiquetas definidas en este archivo

RAM
ROM
VECT

inicio:

fin:

EQU
EQU
EQU

$0040
$B000
$FFDC

; Inicio del segmento de RAM


; Inicio del segmento de EEPROM
; Inicio del vector de interrupciones

ORG
LDA
ADD
STA
BRA

ROM
#$18
#$A0
RAM
fin

; Seccin de EEPROM

ORG
DC.W

VECT+$22
inicio

; Vector del Reset

Vous aimerez peut-être aussi