Está en la página 1de 97

HCS08.

Registros internos de la CPU y


Formato de instrucción.

UNIVERSIDAD DE ANTIOQUIA
FACULTAD DE INGENIERÍA.

Electrónica Digital III

Ingo. Eugenio Duque Pérez

Marzo 11 del 2021


Bibliografía

⚫ Bibliografía para la clase


⚫ Manual Técnico 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)
⚫ Chapter 7 : Development Support
A continuación…

Introducción a los MCUs

Fabricantes de MCUs

Familia HCS08 de Freescale


Introducción a los MCUs

⚫ Antes: Elementos por separado…


⚫ Ahora: Todo en uno … Aplicaciones …

P1 P4
CPU
A/D PWM

INTs Ext. P2 P5 SERIAL


Captura I 2C
Eventos
P3 Memoria
Microcontrolador Pn
Introducción a los MCUs

⚫ Circuito Integrado
⚫ Incluye en su interior Se asemeja a un
computador, pero
⚫ CPU o Unidad Central decon
Proceso
prestaciones
⚫ Memoria bastante reducidas
⚫ Dispositivos de E/S

P1 P4
CPU
P2 MCU P5

P3 MEMORIA Pn
A continuación…

Introducción a los MCUs

Fabricantes de MCUs

Familia HC08 de Freescale


Fabricantes de MCUs

⚫ Actualmente se ofrecen muchas clases


de microcontroladores.
⚫ No solo Freescale produce MCUs,
existen otras marcas.
⚫ Cada una tiene características similares:
⚫ Memoria de datos y programa.
⚫ Periféricos de entrada y salida.

⚫ Programación de alto y bajo nivel.


Fabricantes de MCUs

⚫ MICROCHIP: PICs.
⚫ ATMEL: 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 integración
⚫ Características de altas prestaciones:
⚫ Filosofía RISC.
⚫ Modalidad Pipeline.

⚫ Arquitectura Harvard: instrucciones y datos.

⚫ Relación de precio/prestaciones excelente.


⚫ Aplicaciones
⚫ Informática, electrodomésticos, control,
automatización, equipos de comunicaciones.
Fabricantes de MCUs

⚫ ATMEL AVR
⚫ Familia de MCUs RISC.
⚫ Características de altas prestaciones.
⚫ Filosofía RISC.
⚫ Arquitectura Harvard: instrucciones y datos.

⚫ 32 registros de 8 bits.

⚫ Desarrollado inicialmente para ser eficiente en


la ejecución de código C.
⚫ No tiene un Stack limitado a niveles.
Fabricantes de MCUs

⚫ TEXAS INSTRUMENTS
⚫ CPU RISC de 16 bits.

⚫ Diseñado para alto desempeño y consumo de


energía muy bajo.
⚫ Características.
⚫ 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 continuación…

Introducción a los MCUs

Fabricantes de MCUs

Familia HCS08 deFreescale


HC08 de Freescale
Microcontrolador HCS08

⚫ Los MCUs HCS08 están compuestos


MCUs HCS08 DE FREESCALE Integración
por: SCItransparente
IRQ para
MEMORIA el usuario, cada
⚫ CPU HCS08.
A/D periférico se KBI
⚫ Memoria RAM.
maneja como una
Internal
⚫ Memoria ROM/FLASH. memoria!!! I2C
CPU HCS08 Bus
⚫ Periféricos.
CAN SPI
⚫ Todos tienen la misma CPU: CPU08.
RELOJ TIMER LCD
⚫ Las diferencias están en la memoria y
los periféricos.
Microcontrolador HCS08.
Registros internos de la CPU
Registro Acumulador
⚫ CPU HCS08,8bits
7 0
⚫ Total compatibilidad con
Registro Índice H:XHC05.
H X
⚫ Apuntador
15 de pila 8de 7 16 bits con0

instrucciones para manipularlo.


Stack Pointer SP

⚫ Registro
15 índice de 16 bits (H:X) 0
⚫ Registro H:Contador
8 Bits.deParte
Programa PC
Alta de H:X.
⚫ Registro
15 X: 8 Bits. Parte Baja de H:X.0
Registro Códigos de Condición CCR

7 0
Componentes del S.E.
CPU Simplificada de la flia
HCS08
Decodificador de instrucciones

Acumulador, A
Unidad de
Control Registro de
banderas, CCR

H X
Unidad
Lógica Apuntador a pila, SP
Aritmética
Contador de programación, PC
Microcontrolador HCS08

⚫ 12 Modos de direccionamiento.
⚫ Instrucciones para mover datos de
memoria a memoria sin usar el
acumulador A.
⚫ Instrucciones para la manipulación 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
Registro se requiere
Acumulador A mayor prestación, seD0-D7
Registros de Datos
puede cambiar el núcleo S08 → ColdFire
7 0 31 1615 87 0
V1.
Registro Índice H:X Registros de Direcciones A0-A6
H X
15 8 7 0 31 1615 0
Stack Pointer SP StackPointer SP (A7).

15 0 31 1615 0
Contador de Programa PC Contador de Programa o PC
Solo en el 68000
15 0 31 2423 0
Registro Códigos de Condición CCR Registro de Estado
CCR
7 0 15 87 0
Unidad Lógica Aritmética
Ej. ADD $B0 ; A  (A) + (M)
Memoria A

Operación ALU

CCR
Microcontrolador HCS08

⚫ Frecuencia máxima de bus: 24 MHz.


⚫ Máxima frecuencia de operación de CPU : 48MHz.

⚫ Espacio de memoria de 64Kbytes.


$0000
⚫ $0000 - $FFFF. $1800

⚫ Registros
Página Cero.E/S High Page
$00AF Registers
⚫ RAM.
$00B0
96 Bytes
⚫ Flash.
$00FF
$0100
RAM 4096 Bytes $185F
$1860 USB Ram 256 Byt.
⚫ Configuración.
$10AF $195F
$1960
$10B0 Flash
⚫ Periféricos.
Flash 59088 Bytes
1872 Bytes
Interrupt vectors
$17FF $FFFF
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 instrucción puede requerir de varios ciclos de Bus.

⚫ LDA $20: 3 Ciclos a FBUS = 2.5MHz. Tiempo = ???

⚫ Tiempo ejecución LDA $20 = 3 * 0.4s

⚫ Algunos MCUs cuentan con PLL para multiplicar la


frecuencia de entrada.
⚫ Que papel juegan los osciladores externo e interno.?
A continuación…

Modelo de Programación

Uso de las Instrucciones

Formato de Instrucción
Modelo de Programación.
Registros de la
Registro Acumulador A
CPU.
7 0
Registro Índice H:X
H X
15 8 7 0

Stack Pointer SP

15 0
Contador de Programa PC

15 0
Registro Códigos de Condición CCR
V 1 1 H I N Z C
7 0
CCR Flags.
⚫ Overflow flag. Indica un desbordamiento
después de una operación con signo (+,-,INC,
DEC, Rotación o Comparación), cuando el
resultado es > +127 o <-128.
⚫ Half Carry flag. Indica cuando se genera un
acarreo intermedio, del bit 3 al bit 4, en
operación aritmética BCD.
⚫ Negative flag. Indica signo negativo, a través
del bit 7, después de operación Aritmética,
lógica o de desplazamiento.
.
CCR Flags. Continue
⚫ Zero flag. Indica cuando una operación
aritmética, lógica o de movimiento da 0 por
resultado.
⚫ Carry/Borrow flag.
1. C=1, cuando en operación ADD, el resultado
supera a 255.
2. C=1 , cuando en operación SUB, el resultado
es <0 (negative), es decir hay un préstamo
(borrow). Notar que oper. SUB, es una ADD,
con el sustraendo en C2
CCR Flags. Continue
⚫ Carry flag.
3. En operaciones de Desplaz. Y Rotación, la
bandera C recibe el bit desplazado.
4. En operaciones de test, la bandera C, recibe
el bit testado.
⚫ Interrupt Mask flag. Esta bandera controla si la
CPU admite(I=0), o no(I=1)una Interrupción.
Un pedido de Interrupción permanece
pendiente mientras I=1.
Modelo de Programación

⚫ Acumulador de 8 Bits (A)


⚫ Registro de propósito general de 8 bits.
⚫ Almacena operandos y resultados en
operaciones lógicas y aritméticas.
⚫ Lectura/Escritura.

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0


RESET: X X X X X X X X
Microcontrolador HCS08

⚫ Frecuencia máxima de bus: 20 MHz.


⚫ Máxima frecuencia de operación de CPU : 40MHz.

⚫ Espacio de memoria de 64Kbytes.


$0000
⚫ $0000 - $FFFF. $1800

⚫ Registros
Página Cero.E/S High Page
$00AF Registers
⚫ RAM.
$00B0
96 Bytes
⚫ Flash.
RAM 4096 Bytes $185F
$1860 USB Ram 256 Byt.
⚫ Configuración.
$10AF $195F
$1960
$10B0 Flash
⚫ Periféricos.
Flash 59088 Bytes
1872 Bytes
Interrupt vectors
$17FF $FFFF
Modelo de Programación

⚫ 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: 0 0 0 0 0 0 0 0 X X X X X X X X
Modelo de Programación
⚫ Contador de Programa de 16 bits (PC)
⚫ Registro de 16 bits que contiene la dirección de la
próxima instrucción u operando a ser leído.
⚫ Durante la ejecución normal del programa se
incrementa automáticamente a la siguiente
posición consecutiva de memoria.
⚫ Controlado también 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 Programación

⚫ Registro apuntador de pila de 16 Bits


(SP)
⚫ Apunta a la siguiente posición disponible del
stack.
$00F8 XX
⚫ Se decrementa después
$00F9 de almacenarse un
XX
valor en el stack.
$00FA XX
SP → $00FB XX
⚫ Se incrementa antes de tomar
SP → $00FC $45
XX un valor del
stack. SP → $00FD $30
XX
SP → $00FE $80
XX
SP → $00FF $40
XX

⚫ Durante el reset, SP es llevado a $00FF.


Interrupt Stack Frame.
Taken from MCS908JM60 data Sheet Manual. Pag. 68
Modelo de Programación

⚫ Ajustar el Stack Pointer (SP)


⚫ En el nuevo HCS08, se recomienda inicializar el SP
apuntando a la más alta dirección RAM en el on-
chip, con el objetivo de no usar direcciones de la
primera página (direccionamiento directo), por parte
del Stack.
⚫ Generalmente aparecen las dos instrucciones
siguientes en la rutina de inicialización de un Reset.
ldhx #RamEnd +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
CONSTANTE: EQU 5 ;
LIMITE: EQU 100 ; temperatura máxima

; 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
………………………………………….
Startup de un programa
ORG ROMStart
__Startup:
; Apagar WatchDOG
LDA #$20
STA SOPT1
; Llevar el SP a la última posición 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 ;Program body
ORG ROMStart ;
__Startup: ………
; Apagar WatchDOG ……….
lda #$20 Here: BRA Here
sta SOPT1
; Llevar el SP a la última posición de la RAM ;**************************************************************
LDHX #RAMEnd+1 ;* Interrupt Vectors *
TXS ;**************************************************************
; Limpiar Registros
CLRA ORG $FFFE
CLRX DC.W _Startup ; Reset
CLRH
CLR Contador1
CLR Contador2
CLR Contador3
MOV #$1e, Num_Estudiantes
MOV #$00,PTAD
MOV #$FF,PTADD
MOV #$00,PTBD
MOV #$FF, PTBDD
Modelo de Programación

⚫ Registro de códigos de condición


(CCR)
⚫ Registro de 8 bits que contiene la máscara de
interrupción y cinco banderas que indican
características del resultado de la última instrucción

B7(V) B6(1) B5(1) B4(H) B3(I) B2(N) B1(Z) B0(C)


RESET: X 1 1 X 1 X X X
¿Preguntas?

⚫ Valores válidos en los registros:


⚫A = $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
dirección de memoria, ¿cuántos Bytes se
requieren?
A continuación…

Modelo de Programación

Uso de las Instrucciones

Formato de Instrucción
Instrucción en ensamblador

Transferencia de Datos LDA, LDX, STA, STX, TAX, TXA, LDHX, MOV, PSHA, PSHH, PSHX,PULA, PULH, PULX, STHX

Aritméticas ADD, ADC, SUB, SUBC, MUL, DAA, DIV

Manipulación de Datos INCA, INCX, INC, DECA, DECX, DEC, CLR, NEGA, NEGX, NEG, AIS, AIX, CLRH

Rotación y Desplazamiento ROLA, ROLX, ROL, RORA, RORX, ROR, LSLA, LSLX, LSL, LSRA, LSRX, LSR, ASRA, ASRX, ASR

Manipulación de bits BSET, BCLR

Lógicas AND, ORA, EOR, COMA, COMX, COM, NSA

Comparación CMP, CPX, BIT, TSTA,TSTX, TST, BRCLR, BRSET,CPHX

Salto condicional BHI, BLO, BHS, BLS, BPL, BMI, BEQ, BNE, BCC, BCS, BHC, BHCC, BHCS, BMC, BMS, BIL, BIH, BGE,
BGT, BLE, BLT, CBEQ, CBEQA, CBEQX, DBNZ.

Salto incondicional JMP, JSR, RTS, BRA,BSR


De Control SEC, CLC, SEI, CLI, SWI, RTI, RSP, NOP, WAIT, STOP, TAP,TPA, TSX, TXS
Uso de las Instrucciones
Instrucción en ensamblador

⚫ La mayoría de las instrucciones manejan


notación: INSTRUCCIÓN M.D.
ADC #$2F
LDA $45,X
LSLA Acumulador
ORA $10
STA $FF
⚫ Las instrucciones operan directamente
sobre un registro particular o sobre la
memoria.
Operación de la Instrucción

⚫ En la notación, cada instrucción especifica la


operación que realiza:
⚫ ADC Suma (A) con (M) y (C) y lo
almacena en A. M localización de memoria
o un dato absoluto (direccion. Inmediato)
⚫ LDA Carga A con el contenido de M.

⚫ LSLA Desplazamiento lógico a la izq. de A.

⚫ ORA OR Entre (A) y (M).

⚫ STA Guarda el contenido de A en


Memoria.
Operadores en la Instrucción

⚫ () Contenido del registro o posición de memoria.


⚫  Cargar
⚫ & AND entre Bits.
⚫ | OR entre Bits.
⚫  OR Exclusivo entre Bits.
⚫  Multiplicación
⚫  División
⚫ : Concatenación
⚫ + Suma
⚫ - Resta (En complemento a dos)
⚫ ‹‹ Extensión de Signo
Códigos de Condición

⚫ V Overflow, Operaciones en Complemento a dos.


⚫ H Half Carry, Acarreo intermedio, operaciones
BCD.
⚫ N Negative, Indicador de número negativo.
⚫ Z Zero, Indicador de Cero.
⚫ C Carry/Borrow, Acarreo o préstamo.

⚫ - Bit no modificado.
⚫ 0 Bit forzado a cero.
⚫ 1 Bit forzado a uno.
⚫  Bit llevado a uno o a cero dependiendo del resultado.
⚫ U Bit resultado indefinido.
Otras anotaciones

⚫ Modo de Direccionamiento: Cada instrucción puede


manejar varios modos de direccionamiento.
⚫ OpCode: Representa el código de máquina de cada
operación con su modo de direccionamiento.
⚫ Operando: Operandos aceptados por la instrucción.
⚫ Ciclos: Número de ciclos de bus que la instrucción
emplea para ejecutarse completamente.
⚫ fbus = fcpu / 2 → fbus = 5MHz / 2 = 2.5MHz
⚫ Tiempo de ciclo = 1 / fbus = 1 / 2.5MHz = 0.4us
⚫ Si una instrucción requiere 4 ciclos, ¿tiempo de ejecución?
A continuación…

Modelo de Programación

Uso de las Instrucciones

Formato de Instrucción
Código de Operación OpCode

⚫ La CPU dispone de un conjunto de


instrucciones para realizar diversas acciones.
⚫ Cada instrucción se representa por un
código binario.
H = $90
Lectura /
$8002 $8A
Decodificación SP → XX
$8003 $81
SP → $90

Programa Instrucción PULH


SP (SP+ $0001) ; Pull(H) Pila del MCU
Código de Operación.OpCode

⚫ En la CPUS08, el OpCode indica:


⚫ Operación a realizar.
⚫ Modo de Direccionamiento a emplear.

Su Tamaño: 1 ó 2 Bytes.
⚫ Modo de Direccionamiento Stack Pointer: 2 Bytes.

⚫ El Resto de Modos de Direccionamiento: 1 Byte.

OpCode: Stack Pointer M.D. Operación


16 Bits
OpCode: El Resto de M. D. M.D. Operación
8 Bits
Código de Operación OpCode

⚫ Formato de Instrucción:
⚫ Compuesto por el OpCode + Info. Adicional:
⚫ Información necesaria para el Modo de
Direccionamiento empleado.

OpCode Info. Adicional


1, 2, 3 ó 4 Bytes: OpCode (1 ó 2 Bytes) + Info. Adicional (0,1 ó 2 Bytes)
Código de Operación OpCode

⚫ Observe la instrucción ADD.


Código de
Instrucción M.de
Formato D.Instrucción ADD
OpCode
$79F4,XAdición
Máquina
ADD #$45 Inmediato $D $B $79 $F4AB 4b + 4b +1 16b = 3 AB45
bytes

ADD $50 Directo OpCode AdicionalBB 1 BB50


Formato de Instrucción ADD $30,SP
ADD $FE00 Extendido CB 2 CBFE00
Formato de Instrucción ADD #$45
ADD ,X Indexado $9EE $B $30 FB 12b + 4b0 + 8b = 3 bytes
FB
$A $B Adicional
OpCode $45 4b + 4b + 8b = 2 bytes
ADD $45,X Indexado, offset 8 bits EB 1 EB45
OpCode Adicional
ADD $79F4,X Indexado, offset 16 bits DB 2 DB79F4
ADD $30,SP Formatooffset
StackPointer, de Instrucción
8 bits ADD $50
9EEB 1 9EEB30
ADD $A47B,SP StackPointer, offset
$B 16 $Bbits $509EDB4b + 4b +2 8b = 29EDBA47B
bytes
OpCode Adicional
¿Preguntas?

⚫ ¿Cuál es el modo de direccionamiento


donde el OpCode es de 2 bytes?
⚫ ¿El OpCode puede tener el mismo
tamaño del Formato de Instrucción?
¿Por qué?
⚫ ¿Un formato de instrucción de 3 bytes
requiere de cuántos accesos a memoria
para que la CPU la lea completamente?
Ejercicio

Bytes Código de
Instrucción Modo Direccionamiento OpCode adiciona Máquina
les
ADD #$45 AB
ADD ?????? Directo (Abs. Corto) BB 1 BB50
ADD $FE00 CB
ADD ?????? Indexado sin offset FB 0
ADD $45,X EB
ADD ?????? Indexado con offset de 16-bits 2 DB79F4
ADD $30,SP 9EEB
ADD $A47B,???? 9EDB
Bibliografía

⚫ Bibliografía 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

⚫ Cada MCU cuenta con varios puertos de E/S.


⚫ Un puerto es un conjunto de líneas de entrada/salida
trabajando en paralelo, a través de las cuales el
MCU se puede comunicar con el mundo exterior.
⚫ Número máximo de líneas por puerto: 8
⚫ El nombre de los puertos viene dado por PTxD
⚫ PTAD, PTBD, PTCD, PTDD, PTED,PTFD,PTGD

⚫ Algunas líneas de los puertos son usadas por otros


módulos: KBI, SCI, TIMER, etc.
Puertos de E/S

⚫ Cada línea puede ser configurada


independientemente como
Entrada/Salida.
⚫ Se puede cambiar una línea de Entrada
a Salida y viceversa durante la
ejecución del programa.
⚫ Algunos puertos cuentan en sus
respectivas líneas con PullUps
habilitables (sólo entrada).
Puertos de entrada. Conexiones.
5V
R

S2
PTBD7T S1
PB7
PTBD6
8
CPU PTBD5
PTBD4
PTBD3
PTBD2
PTBD1
PTBD0
Puertos de E/S

⚫ Veamos
configura el PIN PTAD3 del JM60
dirección

Pin E/S
Escritura ‘0’
‘1’ ‘0’
‘1’
puerto PTADD3
‘0’
‘1’
Configura ‘1’
‘0’ ‘1’
‘0’ ‘1’
‘0’ ‘1’
‘0’ ‘0’
‘1’
PTAD3
PullUp
‘1’
‘0’
VDD
‘0’
‘1’ ‘0’
‘1’
PTAPE3
‘1’
‘0’
‘1’
PTA3 ‘0’ ‘0’
‘1’ ‘1’
‘0’
Lectura
puerto
Antes de Comenzar

⚫ PTBD $0002, PTBDD $0003, PTBPE $1844


⚫ MOV #$00,PTBD 1 X
0
A X 1 X
1 X
0 1 X
0 X
1 X
1 X
0
⚫ MOV #$0F,PTBDD 5v
0v
PTBD7
⚫ MOV #$F0,PTBPE ; OJO corregir 5v

GND
PTBD6

MCU JM60
5v
0v
⚫ MOV #$F3,PTBD PTBD5
5v
⚫ BCLR 0,PTBD PTBD4
PTBD3
BSET 2,PTBD

GND
⚫ PTBD2
⚫ LDA PTBD PTBD1
PTBD0
⚫ LDA PTBD
⚫ MOV #$FF,PTBD ;
Registros que controlan
operación del Puerto A
⚫ PTAPE. Internal Pull Up Enable para los pines
de PTAD configurados como Inputs. $1840
0 Disabled. 1 Enabled (only when pin is input).
⚫ PTASE. Output Slew Rate control Enable para
PTAD. $1841
0 Disabled. (rise/fall times in order of 3 ns)
1 Enabled . (rise/fall times in order of 30 ns)
⚫ PTADS. Output Drive Strength Selection.
$1842.
0 Low Output Drive enabled. (2mA maximun).
1 High Output Drive enabled. (10mA)
Algunos parámetros del JM60
Cuerpo del Programa.
Interrupt Vector
;Driver para LED On/Off ;Program body
; Driver para activar en low LED conectado a PTB3 ;
LED_PIN EQU 3 ………
……….
; Apagar WatchDOG Here: BRA Here
lda #$20
sta SOPT1 ;**************************************************************
; Llevar el SP a la última posición de la RAM ;* Interrupt Vectors *
LDHX #RAMEnd+1 ;**************************************************************
TXS
; Limpiar Registros ORG $FFFE
CLRA DC.W _Startup ; Reset
CLRX
CLRH
CLR Contador1
CLR Contador2
CLR Contador3
MOV #$1e, Num_Estudiantes
MOV #$00,PTAD
MOV #$FF,PTADD
MOV #$00,PTBD
MOV #$FF, PTBDD
Recomendaciones.Hw/Sw design.
⚫ Pines no usados, pueden ser configurados
como salidas(No conectados). También se
pueden configurar como entradas “pegados”
a Vcc o Vss , para no dejarlos flotantes.
⚫ Activar suiche Reset para arrancar el sistema.
⚫ Activar Slew Rate para minimizar problemas
EMI(Electromagnetic Interference), cuando se
trabaja en HF.
⚫ Activar Drive Strength, cuando se requiera
aumentar la capacidad de corriente en los I/O
puertos..
Recomendaciones.Hw/Sw design.
⚫ Pull Up/Down Resistors.Si resistores Pull-
Down externos son utilizados, los resistores
Pull-Up internos deben ser deshabilitados
para evitar el divisor de voltaje que afecta la
magnitud del High o del bajo Low.
⚫ Para evitar glitches en circuitos conectados a
los pines de salida.. Se recomienda cargar el
registro de datos antes de configurar las
líneas de entrada y salida.
A continuación…

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

⚫ La dirección 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.


⚫ Dirección Efectiva: (SP) + Offset de 8 bits.
⚫ Formato de Instrucción: OpCode + Offset 8
bits.
⚫ Stack Pointer con offset de 16 bits.
⚫ Dirección Efectiva: (SP) + Offset de 16 bits.
⚫ Formato de Instrucción: OpCode + Offset
16 bits.
M. D. Stack Pointer

⚫ Offset 8 Bits: Instrucción Off8,SP


OpCode Offset 8 Bits

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


Ambas, M.D.
Stack Pointer con
Offset 8 bits

⚫ Offset 16 Bits: Instrucción


OpCode Offset Off16,SP
16 Bits

4 Bytes: OpCode (2 Bytes) + Info. M.D.


Adicional (2 Stack
Byte)
M. D. StackPointer Pointer con
y M. D. Relativo Offset 16 bits
M. D. Stack Pointer

⚫ S. P. (Off8)
⚫ ADC $20,SP , BIT $60,SP. A o M, tienen el(los) bits test.
OpCode
A La
continuación
Unidad
= 2Byte.
de seControl
Formato
procede
toma
aInstrucción
decodificar
de memoria =lala
3Bytes.
instrucción.
siguiente
Info.
¿Pregunta:
instrucción
Adicional
Tamaño
y= la
$60 → Verificar
carga
OpCode operando
en ely Registro
Formato. en $0160.
deInfo.
Instrucción.
Adicional?
$8502
$8501
$8500

Memoria 8 Bits
PC = $8500 $8500 $9E
$8501 $E5
UNIDAD DE CONTROL
$8502 $60
RI =RI$9E
= XX
- $E5 $8503 $D3

$60
$E5
$9E
Instrucción BIT SP = $0100
M. D. Stack Pointer

⚫ S. P. (Off16)
⚫ ADC $2000,SP, SUB $6000,SP.
OpCode
A La
continuación
Unidad
= 2Byte.
de se
Control
Formato
procede
toma
aInstrucción
decodificar
de memoria =lala
4Bytes.
instrucción.
siguiente
Info.
¿Pregunta:
instrucción
Adicional
Tamaño
y=la$0210
carga →
enAlmacenar
OpCode ely Registro
Formato.(A) en
deInfo.
Instrucción.
$0230.
Adicional?
$9000
$9002
$9001
$9003

Memoria 8 Bits
PC = $9000 $9000 $9E
$9001 $D7
UNIDAD DE CONTROL
$9002 $02
RI =RI$9E
= XX
- $D7 $9003 $10

$D7
$10
$9E
$02
Instrucción STA SP = $0020
A continuación…

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 volver acá,
¿Cuánto se le debe
⚫ Se almacena el OpCode y
restar al PC? un valor
¿Por qué
relativodesplazamiento
de 8 bitsFA? con signo (-128 a 127)
⚫ Valor Relativo: Valor que sumado al PC
Cuando una
da la E.A donde debe saltar
instrucción es leída, el programa.
el PC apunta a la
⚫ El formato de instrucción
OpCode siguienteVal.
es de 2 bytes.
instrucción
Relativo. 1 Byte

2 Bytes: OpCode (1 Byte) + Info. Adicional (1 Byte)


¿Por qué
desplazamiento
FE?
M. D. Relativo

⚫ Relativo
⚫ BGT lb, BHI lb, BLE lb, BRA lb, BEQ lb.
OpCode
A La
continuación
Unidad
= 1Byte.
de seControl
Formato
procede
toma
aInstrucción
decodificar
de memoria =lala
2Bytes.
instrucción.
siguiente
Info.
¿Pregunta:
instrucción
Adicional
Tamaño
y=la$6A → Saltar
carga
OpCode a la dirección
en ely Registro
Formato. deInfo.
Instrucción.
$856C.
Adicional?
$8501
$8500

Memoria 8 Bits
PC = $8500 $8500 $AD
$8501 $6A
UNIDAD DE CONTROL
$8502 $CC
RI
RI==$AD
XX $8503 $60

$AD
$6A
Instrucción BSR
A continuación…

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 Programa


instrucciones (Control Esperando orden
de Programa) en los
procesadores que Recibir datos

permiten cambiar el
flujo de ejecución en el No Validar
Datos
programa:
condicionales, Si
incondicionales y Procesar

subrutinas.
Control de Programa
⚫ Cada salto especifica la dirección donde
Salto a otra parte el flujo
del programa

del programa
$2010
debe continuar en una de dos
$2000
$5000 PC
formas.
⚫ Salto Relativo.

⚫ Salto Absoluto.
Dirección
Instrucción Desplazamiento
Absoluta
$5000
$10
⚫ SaltoEn Relativo:
Otra
Enlos
Otra Instrucción
los HC08: La
del
JMP,
HC08: Bcc
Instrucción instrucción
HC08
JSR
o HC08
del BSR no dice a que
dirección de memoria hay que Salto saltar,
relativo al
Salto absoluto
PC
simplemente entrega un valor constante de
Instrucción
Instrucciones
de salto
de Instrucción de
8 bitssalto
que, sumado alInstrucción
incondicional.
condicional PC,a subrutina
salto da de la dirección
salto a subrutina
donde ehay que saltar.
incondicional.
⚫ Salto Absoluto: La instrucción entrega la dirección absoluta adonde
se debe saltar.
Control de Programa

⚫ Control de Programa
⚫ Condicionales: Evalúan condición, si es verdadera
se salta a una instrucción dada por la E.A., en caso
contrario, se continua con la sgte. Instrucción. Se
ejecutan después de: CMP, CPHX, CPX,
SBC/SUB.
⚫ Incondicionales: No evalúan condición,
simplemente hacen el salto pedido a la E.A. dada.
⚫ Subrutina: Saltan a la E.A. dada.
Subrutina es una porción de código que realiza
una tarea específica. Se retorna con RTS.
Control de Programa

⚫ Salto Condicional Relativo Bxx.


▪ ⚫
Banderas
Númerosdel sin
registro CCR.
signo.
• BCC y BCS: Salta si C = 0 ó C = 1.
⚫ BHI: Salto si “Mas grande”.
• 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:
BMC Salto
y BMS: si “Menor”.
Salta si I = 0 ó I = 1.
• BMI Salto
y BPL:
⚫ BLS: Saltasisi“Menor o igual”.ó N = 0 (Positivo).
N = 1 (Negativo)
▪ ⚫
Otras.
Números con signo.
• BIH y BIL: Salta si “IRQ = 1” ó “IRQ = 0”.
⚫ BGE: Salto si “Mayor que o igual a”.
• BRSET y BRCLR: Salta si el bit n de (M) = 1 ó 0.
⚫ BGT: Salto si “Mayor que”.
– ¿Formato de Instrucción de estas instrucciones?
⚫ BLE: Salto si “Menor que o igual 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 dirección
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 instrucción RTS.

⚫ JSR:
⚫ Almacena en la pila el valor del PC (Sgte. Inst.).

⚫ Carga en el PC la dirección absoluta.

⚫ Se retorna con la instrucción RTS.


A continuación…

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. Válido en Página cero


Cómo llevar: #$15 a la dirección $20?
⚫ Opción 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.
⚫ Opción 2: Usar MOV con M.D Inmed. a Directo

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


Opción 2 , la más recomendable.
M.D. Memoria Memoria

⚫ M.D especial. Válido en Página cero


Cómo llevar: El contenido de la dirección $40
a la dirección $80?
⚫ Opción 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.
⚫ Opción 2: Usar MOV con M.D Directo a Directo
MOV $40, $80 ; 3 Bytes, 5 ciclos de reloj.
Opción 2 , la más recomendable.
M.D. Memoria a Memoria

⚫ Otros M.D especiales. Válido en Página


cero
M.D. Indexado a Directo, con pos-
incremento.
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 continuación…

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
V
energía.
Amplitud
REF_HIGH

⚫ Se aplica cuando el tiempo entre eventos


es grande.
⚫ WAIT:
⚫ El reloj de la CPU es desactivado.
VREF_LOW
⚫ Los demás periféricos operan normalmente y
Tiempo

pueden despertar laMCU CPU a través de una


interrupción.
ADC CPU
Procesando…
WAIT
⚫ Se utiliza la instrucción WAIT.
Modos de bajo consumo

⚫ STOP:
⚫ El reloj de la CPU es desactivado.
⚫ El reloj del bus también.

⚫ Los periféricos que dependen del reloj no


funcionan: ADC, SCI, SPI, I2C, TIMER.
⚫ Solo los periféricos que utilizan
interrupciones externas pueden despertar
la CPU: IRQ y KBI. En algunos el TBM.
⚫ Se utiliza la instrucción STOP.
Ejemplo de rebote al operar suiche.
;
;
; ;
;
Multi-purpose clock gen.
External
Oscillator
ERCLKEN
MCGERCLK
IRCLKEN
MCGIRCLK
DCO: 1024 CLKS BDIV
Clock veces la
monitor frecuencia de
Internal IREFSTEN
÷2n
reference entrada n = 0-3 MCGOUT
clock
PLLS
IREFS TRIM

Factor de Lock
FLL detector
multiplicación
configurable
÷2n
n = 0-7 MCGFFCLK

RDIV ÷2 MCGLCLK
PLL
Tipo de conexión.

BDM:Back ground Debug Mode

BDM Target
Full Chip Simulation
Compila- Ensambla Real
ción do Simulation

Progra
Linking
mación

Simulación y Depura
depuración ción
Microcontroladores

⚫ Los Microcontroladores de la familia


HCS08
⚫ Protecciones.
⚫WatchDOG.
⚫ Detección de bajo voltaje con Reset (3V y 5V).
Si el MCU se bloquea!!!
⚫ Reset por OpCode ilegal o por
Direccionamiento
Si el voltaje cae por Ilegal.
debajo de un Umbral MCU
RESET
Instrucción no válida.
Memoria no implementada.
Microcontrolador HCS08

⚫ Frecuencia máxima de bus: 24 MHz.


⚫ Máxima frecuencia de operación de CPU : 48MHz.

⚫ Espacio de memoria de 64Kbytes.


$0000
⚫ $0000 - $FFFF. $1800

⚫ Registros
Página Cero.E/S High Page
$00AF Registers
⚫ RAM.
$00B0
96 Bytes
⚫ Flash.
RAM 4096 Bytes $185F
$1860 USB Ram 256 Byt.
⚫ Configuración.
$10AF $195F
$1960
$10B0 Flash
⚫ Periféricos.
Flash 59088 Bytes
1872 Bytes
Interrupt vectors
$17FF $FFFF
Microcontroladores.
Interfaces
⚫ Los Microcontroladores de la familia HCS08
⚫ Comunicación serial SPI, SCI e I2C.

⚫ TIMERs con Input Capture y PWM.

⚫ Conversor Análogo/Digital de hasta 10 Bits.


Amplitud
VREF_HIGH

0
1
1
Notificación Periódica
1s
Señal Análoga
Eventos Externos 0 1ms
CAJA
5ms1011 0110
NEGRA
250ms Equipo
CPU 1 SCI,A/D
SPI, I2C
TIMER
100ms Código Digital
‘1’aó5V
0V ‘0’
Reloj Sistema
1
0 o MHz
0.5s Externo
Varios kHz
VREF_LOW 1 Señal 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
0
1 2 3 1
JKL MNO PQR 1
4 5Puerto
6 0
1 CPU KBI
STU Entrada
VWX YZ 1
7 8 9 0
1
←→ MENU/ENTER CANCEL

# 0 *
Puertos de E/S

⚫ Transferencia de Datos
⚫ Datos.
⚫ Paralela: Uso de varios conductores.

⚫ Serial: Uso de un solo conductor.


0
1
1
Puerto 0 1011 0110
Serial device
1 CPU
Entrada 1 Requires interface
0
1

También podría gustarte