You are on page 1of 87

HCS08.

Registros internos de la CPU y


Formato de instruccin.

UNIVERSIDAD DE ANTIOQUIA
FACULTAD DE INGENIERA.
Electrnica Digital III
Ingo. Eugenio Duque Prez
Octubre 2 del 2014

Bibliografa
Bibliografa

para la clase
Manual Tcnico de la familia HCS08:

HCS08 Family. Reference Manual. Freescale


Semiconductor.
Chapter
Chapter
Chapter
Chapter
Chapter
Chapter
Chapter

1: General information and block diagram.


2: Pins and connections.
3: Modes of Operation
4: On-Chip memory
5: Resets and Interrupts.
6: Central Processor Unit (CPU)
7 : Development Support

A continuacin

Introduccin a los MCUs

Fabricantes de MCUs

Familia HCS08 de Freescale

Introduccin a los MCUs


Antes:

Elementos por separado


Ahora: Todo en uno Aplicaciones
P1
A/D

CPU

P4
PWM
P5 SERIAL

INTs Ext. P2
Captura
Eventos

I2 C
P3

Memoria
Microcontrolador

Pn

Introduccin a los MCUs


Circuito

Integrado

Se
Seasemeja
asemejaaaun
un
en su interior
computador,
pero
computador,
pero
CPU o Unidad Central de Proceso
con
conprestaciones
prestaciones
bastante
Memoria
bastantereducidas
reducidas
Dispositivos de E/S

Incluye

P1

CPU

P4

P2

MCU
MCU

P5

P3

MEMORIA

Pn

A continuacin

Introduccin a los MCUs

Fabricantes de MCUs

Familia HC08 de Freescale

Fabricantes de MCUs
Actualmente

se ofrecen muchas clases


de microcontroladores.
No solo Freescale construye MCUs,
existen otras marcas.
Cada una tiene caractersticas similares:
Memoria

de datos y programa.
Perifricos de entrada y salida.
Programacin de alto y bajo nivel.

Fabricantes de MCUs
MICROCHIP:
ATMEL:

PICs.

AVR.
INTEL: 8051.
FREESCALE: HC(S)08, HC11, HC(S)12.
HITACHI: H8.
HOLTEK: HT8.
NATIONAL SEMICONDUCTOR: COP8.
TEXAS INSTRUMENTS: TMS370.

Fabricantes de MCUs
MICROCHIP:

PICs.

Alto

nivel de integracin
Caractersticas de altas prestaciones:
Filosofa

RISC.
Modalidad Pipeline.
Arquitectura Harvard: instrucciones y datos.
Relacin

de precio/prestaciones excelente.
Aplicaciones
Informtica,

electrodomsticos, control, automatizacin,


equipos de comunicaciones.

Fabricantes de MCUs
ATMEL

AVR

Familia

de MCUs RISC.
Caractersticas de altas prestaciones.
Filosofa

RISC.
Arquitectura Harvard: instrucciones y datos.
32 registros de 8 bits.
Desarrollado

inicialmente para ser eficiente en


la ejecucin de cdigo C.
No tiene un Stack limitado a niveles.

Fabricantes de MCUs
TEXAS

INSTRUMENTS
CPU RISC de 16 bits.
Diseado para alto desempeo y consumo de
energa muy bajo.
Caractersticas.
A/D de 10/12/14/16 bits.
PWM.
Comparadores.
USART.
Controlador de LCD.
Oscilador interno.

Fabricantes de MCUs

FREESCALE
Microcontroladores descendientes del procesador 6800 de
Motorola.
Familia de 8 Bits.
HC05 (Ya no se fabrica).
HC08, HCS08 y Flexis.
HC11 (Ya no se fabrica).
Familia de 16 Bits.
HC12 (Ya no se fabrica), HCS12, MC9S12.
Familias de 32 bits.
Flexis ColdFire V1.

A continuacin

Introduccin a los MCUs

Fabricantes de MCUs

Familia HCS08
deFreescale
Freescale
HC08 de

Microcontrolador HCS08
Los

MCUs HCS08 estn compuestos por:

Integracin
Integracin
CPU HCS08.
para
SCItransparente
IRQ
transparente
parael
el
usuario,
MEMORIA
usuario,cada
cada
Memoria
RAM.
perifrico
perifricose
semaneja
maneja
KBI
A/D
Memoria ROM/FLASH. como una memoria!!!
como una memoria!!!
MCUs HCS08 DE FREESCALE

Perifricos.

CPU HCS08

Todos

Internal
Bus

I 2C

tienen la misma CPU: CPU08.


SPI
CAN
Las diferencias estn en la memoria y los
RELOJ
TIMER
LCD
perifricos.

MCU. Diagrama de bloques

Bus

Diagrama de bloques bsico de


un procesador
Diagrama

de bloques bsico de la CPU


Bsqueda de
instrucciones
Decodificador
de instrucciones

Clock
Registros
internos
ALU

Interfaz a
memoria y
E/S

Bus

Microcontrolador HCS08.
Registros internos de la CPU
Registro Acumulador

CPU

HCS08,8bits
7
0
Total compatibilidad
Registro ndice
H:XHC05.
con
H
X
Apuntador
7 16 bits con0
15
de pila 8de
Stack Pointer
SP
instrucciones para
manipularlo.
Equivalencia
con A7
0
15
Contador de Programa PC
Registro ndice
de 16 bits (H:X)
15
Registro

0
H: 8 Bits. Parte Alta de H:X.
Registro Cdigos de Condicin CCR
Registro X: 8 Bits. Parte Baja de H:X.
7

Microcontrolador HCS08
12

Modos de direccionamiento.
Instrucciones para mover datos de
memoria a memoria sin usar el
acumulador A.
Instrucciones para la manipulacin de
datos BCD: Binary-Coded Decimal
Modos de bajo consumo: wait y stop.

Microcontroladores Flexis
Microcontroladores

de 8 y 32 Bits de alto
rendimiento, pertenecen a la familia S08
y ColdFire.

Microcontroladores Flexis
Compatibilidad

total entre MCUs de 8 y

32 Bits.

Cuando
se requiere
Registro
Acumulador
A

mayor prestacin,
seD0-D7
Registros de Datos
puede cambiar el ncleo S08 ColdFire
7
0
1615
87
31
Registro
V1. ndice H:X
Registros de Direcciones A0-A6

15

8 7
Stack Pointer SP

15

Contador de Programa PC

15

Registro Cdigos de Condicin CCR


7

0 31

1615
StackPointer SP (A7).

0 31

1615
Contador de Programa o PC
Solo en el 68000
2423
Registro de Estado
CCR
15
87
0

0 31

Microcontroladores
Los

Microcontroladores de la familia
HCS08
Protecciones.
WatchDOG.
Deteccin

de bajo voltaje con Reset (3V y 5V).


Si el MCU
se bloquea!!!
Reset por OpCode ilegal o por
Direccionamiento
Ilegal.
Si el voltaje
cae por
MCU
debajo de un Umbral
RESET
Instruccin no vlida.
Memoria no implementada.

Microcontroladores
Los

Microcontroladores de la familia
HCS08
Pin

de Reset y PowerOnReset.
Memoria FLASH: Hasta 60Kbytes.
Pin de Reset
activo en
bajo Hasta 4kbytes.
Memoria
RAM:
Memoria FLASH
Programa

Circuito de POR para


reiniciar el MCU al polarizarlo

Memoria RAM
RESET
MCU
Datos

Microcontrolador HCS08
Frecuencia mxima de bus: 24 MHz.
Mxima frecuencia de operacin de CPU : 48MHz.
Espacio de memoria de 64Kbytes.
$1800
$0000
$0000 - $FFFF.

High Page
Registers
96 Bytes

Registros
Pgina
Cero.E/S
$00AF

$00B0

RAM.
Flash.
RAM 4096 Bytes
Configuracin.
$10AF
$10B0
Perifricos.
Flash

$185F
$1860
$195F
$1960

1872 Bytes
$17FF

$FFFF

USB Ram 256 Byt.


Flash
59088 Bytes
Interrupt vectors

Microcontroladores

Los Microcontroladores de la familia HCS08


Comunicacin serial SPI, SCI e I2C.
TIMERs con Input Capture y PWM.
Conversor Anlogo/Digital de hasta 10 Bits.

VREF_HIGH

Amplitud

0
1
1
0
1
CPU
Reloj Sistema
1
0 o MHz
Varios kHz
1

Seal Anloga
Eventos
Externos
0V
1a5V
0
VREF_LOW

Notificacin Peridica

1s
5ms
1011 0110
1ms
250ms
CAJA
NEGRA
CAJA
NEGRA
SCI,
SPI, I2C
A/D
100ms
TIMER
0.5s

Equipo
Cdigo
Digital
Externo

Seal PWM
Tiempo

Microcontroladores

Los Microcontroladores de la familia HCS08


Puertos de Entrada/Salida.
PullUps habilitables en algunos puertos.
Interfaz de teclado de hasta 8 bits.
ABC

DEF

GHI

JKL

MNO

PQR

5Puerto
6

YZ
Entrada

STU

VWX

MENU/ENTER

CANCEL

0
1
1
0
1
1
0
1

CPU KBI

Microcontroladores

Consideraciones sobre el Reloj:


La frecuencia del Bus es la mitad de la Frecuencia de la CPU
.
FCPU = 5MHz, FBUS = 2.5 MHz.

Un ciclo de bus equivale a 1/FBUS.

Una instruccin puede requerir de varios ciclos de Bus.


LDA $20: 3 Ciclos a FBUS = 2.5MHz. Tiempo = ???
Tiempo ejecucin LDA $20 = 3 * 0.4s
Algunos MCUs cuentan con PLL para multiplicar la
frecuencia de entrada.
Que papel juegan los osciladores externo e interno.?

A continuacin

Modelo de Programacin

Uso de las Instrucciones

Formato de Instruccin

Modelo de Programacin.
Registros
de la CPU.
Registro Acumulador A
7

0
Registro ndice H:X

X
8 7

15

Stack Pointer SP
0

15
Contador de Programa PC

15
Registro Cdigos de Condicin CCR
V 1 1 H I N Z C
7

Modelo de Programacin
Acumulador

de 8 Bits (A)

Registro

de propsito general de 8 bits.


Almacena operandos y resultados en
operaciones lgicas y aritmticas.
Lectura/Escritura.
BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0
RESET:

Microcontrolador HCS08
Frecuencia mxima de bus: 24 MHz.
Mxima frecuencia de operacin de CPU : 48MHz.
Espacio de memoria de 64Kbytes.
$1800
$0000
$0000 - $FFFF.

High Page
Registers
96 Bytes

Registros
Pgina
Cero.E/S
$00AF

$00B0

RAM.
Flash.
RAM 4096 Bytes
Configuracin.
$10AF
$10B0
Perifricos.
Flash

$185F
$1860
$195F
$1960

1872 Bytes
$17FF

$FFFF

USB Ram 256 Byt.


Flash
59088 Bytes
Interrupt vectors

Modelo de Programacin
Registro

ndice de 16 Bits (H:X)

Indexar

o direccionar 64 Kbytes.
Modos de direccionamiento indexados.
Registro H, Registro X: Parte alta y baja.
El registro H es llevado a cero cuando hay un
reset.
H (PARTE ALTA DE H:X)

X (PARTE BAJA DE H:X)

H15 H14 H13 H12 H11 H10 H9 H8 X7 X6 X5 X4 X3 X2 X1 X0


RESET:

Modelo de Programacin

Contador de Programa de 16 bits (PC)


Registro de 16 bits que contiene la direccin de la
prxima instruccin u operando a ser ledo.
Durante la ejecucin normal del programa se
incrementa automticamente a la siguiente
posicin consecutiva de memoria.
Controlado tambin por las instrucciones de salto.
B15 B14 B13 B12 B11 B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0

RESET:

Se carga con el valor que haya en el vector de Reset $FFFE-$FFFF

Modelo de Programacin
Registro

apuntador de pila de 16 Bits (SP)

Apunta

a la siguiente posicin disponible del stack.


Se decrementa despus de almacenarse un valor
en el stack.
Se incrementa antes de tomar un valor del stack.
XX
$00F8
Durante

el

$00F9
$00FA
reset,
SP es
SP $00FB
SP $00FC
SP $00FD
SP $00FE
SP $00FF

XX
XX
llevado
XX a
$45
XX
$30
XX
$80
XX
$40
XX

$00FF.

Interrupt Stack Frame.


Taken from MCS908JM60 data Sheet Manual. Pag. 68

Modelo de Programacin
Ajustar

el Stack Pointer (SP)

En el nuevo HCS08, se recomienda inicializar el SP


apuntando a la ms alta direccin RAM en el onchip, con el objetivo de no usar direcciones de la
primera pgina (direccionamiento directo), por parte
del Stack.
Generalmente aparecen las dos instrucciones
siguientes en la rutina de inicializacin de un Reset.
ldhx #RamLast +1 ; hx points one past RAM
txs
; SP (H: X-1)

Partes de un Programa.
Directrices, Definiciones
Include derivative-specific definitions
INCLUDE 'derivative.inc'
; export symbols. Defines Program Start point
XDEF _Startup
ABSENTRY _Startup
; Definition of Labels for Constants
CINCO:
EQU 5
LIMITE:
EQU 100
;

; Reserves space for variables in Zero Page


ORG Z_RAMStart
Contador1: DS.B 1 ; Contador1 is a variable sited in position $00B0
Contador2: DS.B 1
Contador3: DS.B 1
Num_Students: DS.B 1
;Defines start address for Program and Constant Data
ORG ROMStart
_Startup:
LDHX #RAMEnd+1
; initialize the stack pointer
TXS
.

;
; code section

Startup de un programa
ORG ROMStart
__Startup:
; Apagar WatchDOG
LDA #$20
STA SOPT1
; Llevar el SP a la ltima posicin de la RAM
LDHX #RAMEnd+1
TXS
; Clear some registers and memory positions
CLRA
CLRX
CLRH
CLR Contador1
CLR Contador2
CLR Contador3
MOV #$1e, Num_Students
MOV #$00,PTAD ; Initializing ports and directions
MOV #$FF,PTADD
MOV #$00,PTBD
MOV #$FF, PTBDD
; Cuerpo del programa
Inicio:
; program begins

Cuerpo del Programa.


Interrupt Vector
;Program body
ORG ROMStart
__Startup:
; Apagar WatchDOG
lda #$20
sta SOPT1
; Llevar el SP a la ltima posicin de la RAM
LDHX #RAMEnd+1
TXS
; Limpiar Registros
CLRA
CLRX
CLRH
CLR Contador1
CLR Contador2
CLR Contador3
MOV #$1e, Num_Estudiantes
MOV #$00,PTAD
MOV #$FF,PTADD
MOV #$00,PTBD
MOV #$FF, PTBDD

;Program body
;

.
Here: BRA HERE
;**************************************************************
;*
Interrupt Vectors
*
;**************************************************************
ORG $FFFE
DC.W _Startup

; Reset

Modelo de Programacin
Registro

de cdigos de condicin

(CCR)

Registro de 8 bits que contiene la mscara de


interrupcin y cinco banderas que indican
caractersticas del resultado de la ltima instruccin
B7(V) B6(1) B5(1) B4(H) B3(I) B2(N) B1(Z) B0(C)

RESET:

Preguntas?
Valores
A

vlidos en los registros:

= $23F
H:X = $FFFE
SP = $50
PC = $8000
Por qu los registros PC, SP y H:X son de 16
bits?
Si en memoria se requiere almacenar una direccin
de memoria, cuntos Bytes se requieren?

A continuacin

Modelo de Programacin

Uso de las Instrucciones

Formato de Instruccin

Uso de las Instrucciones

Instruccin en ensamblador
La

mayora de las instrucciones manejan


notacin: INSTRUCCIN M.D.
ADC
LDA
LSLA
ORA
STA

Las

#$2F
$45,X
$10
$FF

Acumulador

instrucciones operan directamente sobre un


registro particular o sobre la memoria.
M.D : Modo de direccionamiento

Operacin de la Instruccin
En

la notacin, cada instruccin especifica la


operacin que realiza:
ADC Suma (A) con (M) y (C) y lo almacena
en A. M localizacin de memoria o un dato
absoluto (direccion. Inmediato)
LDA Carga A con el contenido de M.
LSLA Desplazamiento lgico a la izq. de A.
ORA OR Entre (A) y (M).
STA
Guarda el contenido de A en Memoria.

Operadores en la Instruccin

()

&
|

:
+

Contenido del registro o posicin de memoria.


Cargar
AND entre Bits.
OR entre Bits.
OR Exclusivo entre Bits.
Multiplicacin
Divisin
Concatenacin
Suma
Resta (En complemento a dos)
Extensin de Signo

Cdigos de Condicin

V
H
N
Z
C

Overflow, Operaciones en Complemento a dos.


Half Carry, Acarreo intermedio, operaciones BCD.
Negative, Indicador de nmero negativo.
Zero, Indicador de Cero.
Carry/Borrow, Acarreo o prstamo.

0
1

Bit no modificado.
Bit forzado a cero.
Bit forzado a uno.
Bit llevado a uno o a cero dependiendo del resultado.
Bit resultado indefinido.

Otras anotaciones

Modo de Direccionamiento: Cada instruccin puede


manejar varios modos de direccionamiento.
OpCode: Representa el cdigo de mquina de cada
operacin con su modo de direccionamiento.
Operando: Operandos aceptados por la instruccin.
Ciclos: Nmero de ciclos de bus que la instruccin
emplea para ejecutarse completamente.

fbus = fcpu / 2 fbus = 5MHz / 2 = 2.5MHz

Tiempo de ciclo = 1 / fbus = 1 / 2.5MHz = 0.4us

Si una instruccin requiere 4 ciclos, tiempo de ejecucin?

A continuacin

Modelo de Programacin

Uso de las Instrucciones

Formato de Instruccin

Cdigo de Operacin OpCode


La

CPU dispone de un conjunto de


instrucciones para realizar diversas acciones.
Cada instruccin se representa por una
magnitud binaria.

H = $90

$8002

$8A

$8003

$81
Programa

Lectura
Lectura/ /
Decodificacin
Decodificacin

Instruccin PULH
SP (SP+ $0001) ; Pull(H)

SP
SP

XX
$90
Pila del MCU

Cdigo de Operacin.OpCode

En la CPUS08, el OpCode est compuesto por:

Operacin a realizar.
Modo de Direccionamiento a emplear.
Tamao: 1 2 Bytes.
Modo de Direccionamiento Stack Pointer: 2 Bytes.

El Resto de Modos de Direccionamiento: 1 Byte.

OpCode: Stack Pointer

M.D.

Operacin
16 Bits

OpCode: El Resto de M. D.

M.D.

Operacin
8 Bits

Cdigo de Operacin OpCode


Formato

de Instruccin:

Compuesto por el OpCode + Info. Adicional:


Informacin necesaria para el Modo de
Direccionamiento empleado.
OpCode

Info. Adicional

1, 2, 3 4 Bytes: OpCode (1 2 Bytes) + Info. Adicional (1 2 Bytes)

Cdigo de Operacin OpCode


Observe
Instruccin

la instruccin ADD.
M.de
D.Instruccin ADD
OpCode
Formato
$79F4,XAdicin

Cdigo de
Mquina

ADD $79F4,X

$D $B $79 $F4AB 4b + 4b +1 16b = 3 AB45


bytes
OpCode Adicional
Directo
BB
1
BB50
Formato de Instruccin ADDCB
$30,SP
Extendido
2
CBFE00
Formato de Instruccin ADD #$45
$9EE $B
$30 FB 12b + 4b0 + 8b = 3 bytes
Indexado
FB
$A
$B Adicional
$45 EB 4b + 4b +1 8b = 2 bytes
OpCode
Indexado, offset
8 bits
EB45
OpCode
Indexado, offset 16 bits Adicional
DB
2
DB79F4

ADD $30,SP

StackPointer,
8 bits
9EEB
Formatooffset
de Instruccin
ADD
$50

ADD $A47B,SP

StackPointer, offset
16 bits $509EDB4b + 4b +2 8b = 2
9EDBA47B
$B $B
bytes

ADD #$45
ADD $50
ADD $FE00
ADD ,X
ADD $45,X

Inmediato

OpCode Adicional

9EEB30

Preguntas?
Cul

es el modo de direccionamiento
donde el OpCode es de 2 bytes?
El OpCode puede tener el mismo
tamao del Formato de Instruccin?
Por qu?
Un formato de instruccin de 3 bytes
requiere de cuntos accesos a memoria
para que la CPU la lea completamente?

Ejercicio
Instruccin

Modo Direccionamiento

ADD #$45
ADD ??????

Directo (Abs. Corto)

BB

BB50

CB
Indexado sin offset

ADD $45,X
ADD ??????

Cdigo de
Mquina

AB

ADD $FE00
ADD ??????

OpCode

Bytes
adiciona
les

FB

EB
Indexado con offset de 16-bits

ADD $30,SP

9EEB

ADD $A47B,????

9EDB

DB79F4

Bibliografa
Bibliografa

para la clase
Manual de usuario de la familia HCS08:
HCS08

Family. Reference Manual .Freescale


Semiconductor.
Chapter

1: General information and block diagram.


Chapter 2: Pins and connections.
Chapter 3: Modes of operation.
Chapter 4 : On chip memory.
Chapter 5 : Resets and Interrupts.
Chapter 6 : Central processor Unit (CPU)
--Addressing modes

Puertos de E/S
Transferencia

de Datos

Datos.
Paralela:

Uso de varios conductores.


Serial: Uso de un solo conductor.
Puerto
Entrada

0
1
1
0
1
1
0
1

1011 0110

CPU

Comunicacin
Serial

Puertos de E/S

Cada MCU cuenta con varios puertos de E/S.


Un puerto es un conjunto de lneas de entrada/salida
trabajando en paralelo.
Nmero mximo de lneas por puerto: 8
El nombre de los puertos viene dado por PTxD
PTAD, PTBD, PTCD, PTDD, PTED,PTFD,PTGD
Algunas lneas de cada puerto son usados por otros
mdulos: KBI, SCI, TIMER, etc.

Puertos de E/S
Cada

lnea puede ser configurada


independientemente como Entrada/Salida.
Se puede cambiar una lnea de Entrada a
Salida y viceversa durante la ejecucin del
programa.
Algunos puertos cuentan en sus respectivas
lneas con PullUps habilitables (slo
entrada).

Puertos de E/S
Veamos
configura
configura
direccin
direccin

el PIN PTAD3 del JM60


0
1

Escritura
Escritura
puerto
puerto

1
0

Configura
Configura
PullUp
PullUp

PTADD3

Pin
PinE/S
E/S

0
1
0
1
1
0

1
0
PTAD3
1
0
VDD

0
1

PTAPE3

1
PTA3 0
Lectura
Lectura
puerto
puerto

0
1
1
0

0
1

1
0

1
0

0
1

Antes de Comenzar
PTBD = $0002, PTBDD = $0003, PTBPE = $1844

1 X
0
1 X
1 X
0
1 X
0 X
1 X
1 X
0
A X

MCU JM60

#$00,PTBD
MOV #$0F,PTBDD
MOV #$F0,PTBPE
MOV #$F3,PTBD
BCLR 0,PTBD
BSET 2,PTBD
LDA PTBD
LDA PTBD
MOV #$FF,PTBD ;

PTBD7
PTBD6
PTBD5
PTBD4
PTBD3
PTBD2
PTBD1
PTBD0

5v
0v
5v
5v
0v
5v

GND

MOV

GND

A continuacin
Modo de Direccionamiento Stack Pointer

Modo de Direccionamiento Relativo

Instrucciones de Control de Programa

M. D. Memoria a Memoria (4)

Modos de bajo consumo

M. D. Stack Pointer
Para

qu$10
seemplea
la
pila?
(SP) + $4

$10 $30
(SP)
+ $4

(A)
Pasar argumentos
$30
a
subrutinas
$15
(SP)
+(A)
$5
$15

(SP)
+
$5
$48

(X)
$48 de

(X)
Objetivo
los
$00F8
Objetivo
de
los
Guardar el
valor
del
PC
Se
obtienen
desde
Se Stack
obtienen
desde
M.D.
Pointer
$00F9
M.D.
Stack
Pointer
los
Almacenar informacin
SP $00FA
losregistros
registros temporal

compatibilidad
con$10,
la
SePor
El
preparan
apuntador
los
valores
de pila
ha
Se
ejecuta
la
instruccin
Por
Finalmente
fuera
de
se
laelsalir
retorna
subrutina,
de se
la
Antes
de
de
la
Cmo
se
puede
acceder
a
familia
HC05,
SP
arranca
En
la
subrutina
se
ejecuta
$15,
vuelto
$48
a
y
la
$30
direccin
para
ser
donde
usados
BSR,
la
direccin
de
la
recupera
subrutina
la
reserva
usando
hecha
la Ely
subrutina
se$10,
debe
recuperar
los
valores
$15,
$30
el valor
SP
=(dos
$00FF.
las
instruccin
PSHH
encon
la
comenz
subrutina
como
X
era
se
pasan
siguiente
instruccin
a de
BSR
en
Stack
instruccin
usando
RTS
AIS
#$2
el
valor
de
H
con
PULH
$48.
valora se
puede
modificar con
la pila
esperarse!!!
esPSHA,
$8040 PSHX)
TXS.
A = $30
X = $48
SP = $00FB
$00FD
$00FC
$00FE
$00FA
$00FF

SP $00FB
SP $00FC
SP $00FD
SP $00FE
SP $00FF

XX
XX
XX
XX
H
$80
XX
$40
XX
$10
XX
$15
XX
Memoria 8 Bits

M. D. Stack Pointer
La

direccin base est en el registro SP.


Similar al modo de direccionamiento
indexado.
Con este registro se manejan 2 M.D.
Con

offset de 8 bits.
Con offset de 16 bits.
En

este caso, el OpCode es siempre de


2 bytes. 9EXX

M. D. Stack Pointer
Stack

Pointer con offset de 8 bits.

Direccin

Efectiva: (SP) + Offset de 8 bits.


Formato de Instruccin: OpCode + Offset 8
bits.
Stack

Pointer con offset de 16 bits.

Direccin

Efectiva: (SP) + Offset de 16 bits.


Formato de Instruccin: OpCode + Offset
16 bits.

M. D. Stack Pointer
Offset

8 Bits: Instruccin Off8,SP


OpCode

Offset 8 Bits

3 Bytes: OpCode (2 Bytes) + Info. Adicional


(1 Byte)
Ambas, M.D. Stack

Ambas, M.D. Stack


Pointer
Pointercon
conOffset
Offset88
bits
bits

Offset

OpCode
Offset 16
Bits
16 Bits:
Instruccin
Off16,SP

M.D.
Stack
Pointer
M.D.(2
Stack
Pointer
4 Bytes: OpCode
(2
Bytes)
+
Info.
Adicional
Byte)
M.
D.
StackPointer
con
Offset
16
M. D. StackPointer
con Offset 16bits
bits
yyM.
D.
Relativo
M. D. Relativo

M. D. Stack Pointer
S.

P. (Off8)
ADC $20,SP , BIT $60,SP. A o M, tienen el(los) bits test.

$8502
$8501
$8500

PC = $8500
UNIDAD
UNIDADDE
DECONTROL
CONTROL
RI =RI$9E
= XX
- $E5

$8500
$8501
$8502
$8503

$9E
$E5
$60
$D3
$60
$E5
$9E

Instruccin
InstruccinBIT
BIT

SP
SP==$0100
$0100

Memoria 8 Bits

OpCode
A La
continuacin
Unidad
= 2Byte.
de se
Control
Formato
procede
toma
aInstruccin
decodificar
de memoria=lala
3Bytes.
instruccin.
siguiente
Info.
Pregunta:
instruccin
Adicional
Tamao
y= la
$60
carga
OpCode
Verificar
en ely Registro
Formato.
operando
deInfo.
Instruccin.
en $0160.
Adicional?

M. D. Stack Pointer
S.

P. (Off16)

ADC

$2000,SP, SUB $6000,SP.


$9000
$9002
$9001
$9003

PC = $9000
UNIDAD
UNIDADDE
DECONTROL
CONTROL
RI =RI$9E
= XX
- $D7

$9000
$9001
$9002
$9003

$9E
$D7
$02
$10
$D7
$10
$9E
$02

Instruccin
InstruccinSTA
STA

SP
SP==$0020
$0020

Memoria 8 Bits

OpCode
A La
continuacin
Unidad
= 2Byte.
de se
Control
Formato
procede
toma
aInstruccin
decodificar
de memoria=lala
4Bytes.
instruccin.
siguiente
Info.
Pregunta:
instruccin
Adicional
Tamao
y=la$0210
carga
OpCode

enAlmacenar
ely Registro
Formato.
(A)
deInfo.
en
Instruccin.
$0230.
Adicional?

A continuacin
Modo de Direccionamiento Stack Pointer

Modo de Direccionamiento Relativo

Instrucciones de Control de Programa

M. D. Memoria a Memoria (4)

Modos de bajo consumo

M. D. Relativo
Usado

con instrucciones de salto


relativo.
Para
Paravolver
volverac,
ac,
Cunto
Cuntose
seleledebe
debe
Se almacena el OpCode
y
un
valor
restar
alalPC?
restar
PC?
Por
Porqu
qu
relativodesplazamiento
de 8 bitsFA?
con signo (-128 a 127)
desplazamiento
FA?
Valor Relativo: Valor que sumado al PC
Cuando
Cuandouna
una
da la E.A donde debe
saltar
el
instruccin
es
instruccin esleda,
leda,elel
PC
PCapunta
apuntaaalala
programa. OpCode siguiente
instruccin
siguiente
instruccin
Val.
Relativo. 1 Byte
El formato de instruccin es de 2 bytes.
2 Bytes: OpCode (1 Byte) + Info. Adicional (1 Byte)
Por
Porqu
qu
desplazamiento
desplazamientoFE?
FE?

M. D. Relativo
Relativo
BGT

lb, BHI lb, BLE lb, BRA lb, BEQ lb.

$8501
$8500

PC = $8500
UNIDAD
UNIDADDE
DECONTROL
CONTROL
RI
RI==$AD
XX

$8500
$8501
$8502
$8503

$AD
$6A
$CC
$60
$AD
$6A

Instruccin
InstruccinBSR
BSR

Memoria 8 Bits

OpCode
A La
continuacin
Unidad
= 1Byte.
de se
Control
Formato
procede
toma
aInstruccin
decodificar
de memoria=lala
2Bytes.
instruccin.
siguiente
Info.
Pregunta:
instruccin
Adicional
Tamao
y=la$6A
carga
OpCode
Saltar
en ely Registro
Formato.
a la direccin
deInfo.
Instruccin.
$856C.
Adicional?

A continuacin
Modo de Direccionamiento Stack Pointer

Modo de Direccionamiento Relativo

Instrucciones de Control de Programa

M. D. Memoria a Memoria (4)

Modos de bajo consumo

Control de Programa
Existen

unas
instrucciones (Control
de Programa) en los
procesadores que
permiten cambiar el flujo
de ejecucin en el
programa: condicionales,
incondicionales y
subrutinas.

Programa
Esperando orden
Recibir datos

No

Validar
Datos
Si
Procesar

Control de Programa
Cada

Salto a otra parte


del programa
salto especifica la direccin
donde
el flujo del
programa
debe continuar en una de dos formas.
$2010
$2000
PC
$5000
Salto Relativo.
Salto Absoluto.

Salto

Instruccin
Relativo:
La

Direccin
Desplazamiento
instruccin
no dice
Absoluta

a que

$5000
$10
direccin
de
memoria
hay
que
saltar,
Otra
Instruccin
del
HC08
Enlos
los
HC08: Bcc
o HC08
BSR
En
HC08:
JMP,
JSR
Otra
Instruccin
del
Salto
relativo
alalde
Salto
relativo
simplemente entrega un valor constante
Salto
absoluto
Salto
absoluto
PC
PC
8 bits que, sumado al PC, da la direccin

Instrucciones
de
de
salto
Instrucciones
de
Instruccin
desaltar.
salto
dondeInstruccin
hay
que
salto
condicional
incondicional.

Instruccin
Instruccinde
de
Instruccin
de
Instruccin
de
salto
salto
condicional
incondicional.
saltoaasubrutina
subrutina
salto
aasubrutina
Salto Absoluto:
La instruccin entrega
la
direccin absoluta adonde se
salto
subrutina
eeincondicional.
incondicional.
debe saltar.

Control de Programa
Control

de Programa

Condicionales: Evalan condicin, si es verdadera


se salta a una instruccin dada por la E.A., en caso
contrario, se continua con la sgte. Instruccin. Se
ejecutan despus de: CMP, CPHX, CPX, SBC/SUB.
Incondicionales: No evalan condicin,
simplemente hacen el salto pedido a la E.A. dada.
Subrutina: Saltan a la E.A. dada.
Subrutina es una porcin de cdigo que realiza
una tarea especfica. Se retorna con RTS.

Control de Programa
Salto

Condicional Relativo Bxx.


Banderas
delsin
registro
Nmeros
signo.CCR.

BCC

y BCS:
si Cgrande.
= 0 C = 1.
BHI:
SaltoSalta
si Mas
BEQ y BNE: Salto si Z = 1 (Igual) Z = 0 (No igual).

BHS: Salto si Mas grande o igual.


BHCC y BHCS: Salta si H = 0 H = 1.
BLO: Salto si Menor.
BMC y BMS: Salta si I = 0 I = 1.
BLS: Salto si Menor o igual.

BMI y BPL: Salta si N = 1 (Negativo) N = 0 (Positivo).

Nmeros

Otras.

con signo.

BGE:

Salto
o igual
a.
BIH y BIL:
SaltasisiMayor
IRQ = que
1 IRQ
= 0.

BGT: ySalto
si Mayor
BRSET
BRCLR:
Salta sique.
el bit n de (M) = 1 0.
Formato
BLE:
Instruccin
Salto de
si Menor
quedeoestas
igualinstrucciones?
a.
BLT:

Salto si Menor que.

Control de Programa
Salto

Incondicional BRA y JMP.

BRA

: Salto relativo.
JMP: Salto absoluto.
BRA:

Carga en el PC el valor (PC) +

desp.
JMP: Carga en el PC la direccin
absoluta.

Control de Programa
Salto

a Subrutina BSR (Rel) y JSR (Abs).

BSR:
Almacena en la pila el valor del PC (Sgte. Inst.).
Carga en el PC el valor (PC) + desplazamiento.
Se retorna con la instruccin RTS.
JSR:
Almacena en la pila el valor del PC (Sgte. Inst.).
Carga en el PC la direccin absoluta.
Se retorna con la instruccin RTS.

A continuacin
Modo de Direccionamiento Stack Pointer

Modo de Direccionamiento Relativo

Instrucciones de Control de Programa

M. D. Memoria a Memoria (4)

Modos de bajo consumo

M.D. Memoria Memoria


M.D

especial. Vlido en Pgina cero

Cmo llevar: #$15 a la direccin $20?


Opcin 1.
LDA #$15 ; 2 bytes, 2 ciclos de reloj
STA $20 ; 2 bytes, 3 ciclos de reloj.
Totales : 4 bytes de memoria , 5 ciclos de reloj .
Opcin 2: Usar MOV con M.D Inmed. a Directo

MOV #$15, $20 ; 3 Bytes, 4 ciclos de reloj.


Opcin 2 , la ms recomendable.

M.D. Memoria Memoria


M.D

especial. Vlido en Pgina cero

Cmo llevar: El contenido de la direccin $40 a la


direccin $80?
Opcin 1.
LDA $40 ; 2 bytes, 3 ciclos de reloj
STA $80 ; 2 bytes, 3 ciclos de reloj.
Totales : 4 bytes de memoria , 6 ciclos de reloj.
Opcin

2: Usar MOV con M.D Directo a Directo

MOV $40, $80 ; 3 Bytes, 5 ciclos de reloj.


Opcin 2 , la ms recomendable.

M.D. Memoria a Memoria


Otros

M.D especiales. Vlido en Pgina

cero
M.D. Indexado a Directo, con posincremento.
MOV ,X+, $40 ; 2 bytes, 5 ciclos de reloj.
M.D. Directo a Indexado con pos-incremento
MOV $50, X+ ; 2 bytes, 5 ciclos de reloj.

A continuacin
Modo de Direccionamiento Stack Pointer

Modo de Direccionamiento Relativo

Instrucciones de Control de Programa

M. D. Memoria a Memoria (4)

Modos de bajo consumo

Modos de bajo consumo


Modos

donde la CPU puede ahorrar


Amplitud
energa.
V
Se aplica cuando el tiempo entre eventos
es grande.
WAIT:
REF_HIGH

VREF_LOWEl

reloj de la CPU es desactivado.


Tiempo
Los dems perifricos operan normalmente
y
pueden despertar laMCU
CPU
a
travs
de
una
MCU
CPU
CPU
interrupcin.
ADC
ADC
Procesando
WAIT
Procesando
WAIT
Se utiliza la instruccin WAIT.

Modos de bajo consumo


STOP:
El

reloj de la CPU es desactivado.


El reloj del bus tambin.
Los perifricos que dependen del reloj no
funcionan: ADC, SCI, SPI, I2C, TIMER.
Solo los perifricos que utilizan
interrupciones externas pueden despertar
la CPU: IRQ y KBI. En algunos el TBM.
Se utiliza la instruccin STOP.

Multi-purpose clock gen. Tema posterior.


External
Oscillator

ERCLKEN

MCGERCLK

IRCLKEN

Clock
monitor

Internal
reference
clock

IREFS

MCGIRCLK

DCO: 1024
veces la
frecuencia
de
IREFSTEN
entrada

CLKS

BDIV

2n
n = 0-3

MCGOUT

PLLS

TRIM

2n
n = 0-7

Factor de
FLL
multiplicacin
configurable

Lock
detector

MCGFFCLK
2

RDIV

PLL

MCGLCLK

Bouncing time
10-50ms. It depends quality of the switch

Switch S1 is released
;

;
;

You might also like