Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Class 3 HCS08 Programacion 20 21 1
Class 3 HCS08 Programacion 20 21 1
UNIVERSIDAD DE ANTIOQUIA
FACULTAD DE INGENIERÍA.
Fabricantes de MCUs
P1 P4
CPU
A/D PWM
⚫ 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…
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.
⚫ ATMEL AVR
⚫ Familia de MCUs RISC.
⚫ Características de altas prestaciones.
⚫ Filosofía RISC.
⚫ Arquitectura Harvard: instrucciones y datos.
⚫ 32 registros de 8 bits.
⚫ TEXAS INSTRUMENTS
⚫ CPU RISC de 16 bits.
⚫ FREESCALE
⚫ Microcontroladores descendientes del procesador 6800
de Motorola.
⚫ Familia de 8 Bits.
⚫ Familia de 16 Bits.
⚫ Familias de 32 bits.
Fabricantes de MCUs
⚫ 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
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
⚫ 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
Modelo de Programación
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
⚫ 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
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.
⚫ SP = $50
⚫ PC = $8000
Modelo de Programación
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
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
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.
⚫ - 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
Modelo de Programación
Formato de Instrucción
Código de Operación OpCode
Su Tamaño: 1 ó 2 Bytes.
⚫ Modo de Direccionamiento Stack Pointer: 2 Bytes.
⚫ Formato de Instrucción:
⚫ Compuesto por el OpCode + Info. Adicional:
⚫ Información necesaria para el Modo de
Direccionamiento empleado.
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
--Addressing modes
Puertos de E/S
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
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…
⚫ 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…
⚫ 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…
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
⚫ JSR:
⚫ Almacena en la pila el valor del PC (Sgte. Inst.).
⚫ STOP:
⚫ El reloj de la CPU es desactivado.
⚫ El reloj del bus también.
Factor de Lock
FLL detector
multiplicación
configurable
÷2n
n = 0-7 MCGFFCLK
RDIV ÷2 MCGLCLK
PLL
Tipo de conexión.
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
⚫ 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.
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
# 0 *
Puertos de E/S
⚫ Transferencia de Datos
⚫ Datos.
⚫ Paralela: Uso de varios conductores.