Você está na página 1de 9

Unidad II: Modelo de programacion, terminales

Tuesday, February 10, 2009


6:30 PM

Freescale - Formerly Motorola


• HCS08 core
○ HC= Freescale
• 64 LQFP
• Case 840F
• 10 mm2
• 8 bits
○ S08QE
• 64kB X 1024
• 96kB
• 128kB
○ 08JL
○ 08GP
○ 08AP
○ 08AZ
○ 08JB
• Compatibles con MCF51QE
○ Para mejorar o incrementar desempeño
○ Arquitectura basada en 32 bits
○ Compatibilidad pin a pin
○ Solo se compila no cambios adicionales
○ Se denominan Flexis por la flexibilidad
○ Cold Fire
• Modelo de programación: Forma en que se encuentran los regustros del CPU
• Se tienen 5 registros
• Hay registros de 8 y 16 bits

Modos de direccionamiento
Thursday, February 12, 2009
6:52 PM
IN INM DI EX IX IX1 IX2 SP1 SP2 IX+ I IM DI D I R
H R T X1 M/ R/ IR/I X+ EL
+ DI DI X+ /DI
R R R
I Inme D E I Inde Inde Stac Stac Mo S So S S Re
nh diato ire xte nd xado xado k k do olo lo olo olo lat
er cto ndi ex con con point point con M M MO MO iv
en do ad desp desp er er pos OV O V V o
te o laza laza con con t- V
(N mien mien desp desp incr
o to to laza laza em
off de 8 de mien mien ent
set bits 16 to to o
) bits de 8 de
bits 16
bits
S #= Se La Ap A A Se
olo Modo asi dir unt punt punt utili
se de gn ecc aa aa aa za
us direc a ion un una una par
an ciona el del a local local a
un mien val op loc idad idad hac
a to or era ali de de er
ve inme en nd da me me bar
z diato un o d mori mori rido
a es de a a s
loc de me con con de
ali 16 mo oper oper tabl
da bit ria acio acio a
d s sin n n
de op
me era
mo cio
ria n
CL LDA LD LD LD LDA LDA LDA LDA CB CB M M MO MO
RA #$3F A A A $50, $155 $50, $155 EQ EQ OV O V V
; ;A<- $3 $2 ,X ; X 0,X ; SP 0, SP ,X+ $5 #3 V $3 X+,
a< $3F F 53 El ;Se ;SP ; ,eti 0, F,$ $3 0,X $3
- ;A F; val sum de Ahor que X+, 30 F, +; 0;
$0 <- A or aa 16 a ta ; eti ;Po $3 Mu Mu
0 (3F <- de H:X bits con Co qu ne 0; eve eve
) ($2 H: 0x50 y va 16 mp eta 3F Se lo lo
53 X y al bits ara al m qu qu
F) es pone acu ry se ue e e
el el mula brin g ve hay hay
ap valor dor car me lo en en
unt en A de 8 si nt qu loc loc
ad bits es o e alid alid
or igu de co ad ad
y al, me nti 30 Xa
po si si mo en aX 30
ne va ria e y e
en a 30 3F se inc
A etiq a inc re
el uet la re me
val a 30 me nta
or nta aX
en
1
CL ADD AD AD
RX #$D D D
;x 5 $D $3
<- ;A<- 5; AD
$0 A+$ A- 5;
0 D5 ($ A<
D5 -
) A+
($3
AD
5)
DE CMP CM
CA #$FF P
;A ; A- $F
<- $FF F;
A- (Solo A-
$0 modi ($F
1 fica F)
CCR *C
-ban CR
deras
-)
SUB SU
#$FF B
; A<- $F
A-$FF F;
(Solo A<
modi -A
fica -
CCR ($F
-ban F)
deras
-)
CPX CP CP
#$36 X X
;X<- $3 $4
X- 6; B3
$36 X- 6
(Solo ($3
modi 6)
fica *C
CCR CR
-ban
deras
-)
CPHX CP
#$13 HX
FS ; #1
H:X< 3F
-$36 5;
(Solo H:
modi X-
fica ($1
CCR 3F
-ban 5)
deras *C
-) CR
Es
ext
en
did
o,
no
dir
ect
o

Instrucciones
Thursday, February 19, 2009
6:26 PM

Se encuentran los siguientes datos almacenados en memoria ROM


DATA 1: DC.B $4D, $49, $43, $52, $4F,$53, $20, $41
DC.B $52, $45, $20, $46, $55, $4E, $21, $21
DATA 2: DC.B $FA, $29, $22, $0F, $25, $08, $4A, $2E, $10
DC.B $18, $21, $1D, $10, $30, $FF, $FF
Y se tienen las siguientes variables declaradas en memoria RAM
BUFFER1: DS.B $10 ; Reserva 16 localidades
BUFFER2: DS.B $10 ; Reserva 16 localidades
BUFFER3: DS.B $10 ; Reserva 16 localidades

org $RAMStart
Contador DS.B 1

main_loop:
MOV #$10, contador ;Inicializar una localidad de memoria para
contar el numero de bytes
CLRH
CLRX
Etiqueta1 LDA DATA1,X ;Mover un byte de de DATA1 a BUFFER1
STA BUFFER1,X
LDA DATA2,X ;Obterner un byte de DATA2 y guardarlo en
BUFFER2
STA BUFFER2,X
INCX ;Incrementar apuntador
DEC contador ;Decrementar contador -> Se agrego un contador
por solicitud en procedimiento
BNE Etiqueta1 ;Si el contador no es igual a 0 brincar a etiqueta1
MOV #$10,contador ;Reiniciar el contador de numero de bytes
LDHX #$0000 ;Igual a CLRH, CLRX
Etiqueta2 LDA BUFFER1,X ;Obtener el valor de BUFFER1
ADD BUFFER1,X ;Sumar con valor de BUFFER2
STA BUFFER3,X ;Almacenar el resultado en BUFFER3
ORA #$20 ;Realizar OR con $20
STA BUFFER4,X ;Almacenar el valor en BUFFER4
INCX ;Incrementar apuntador
DEC contador ;Decrementar contador
BNE Etiqueta2 ;Si el contador es diferente de 0, brincar a Etiqueta
BRA* ;Fin, quedarse aqui

Construir un programa en ASM que realice lo siguiente


○ Inicializar BUFFER1 con los 16 bytes almacenados en DATA1 e inicializar
BUFFER2 con los 16 bytes almacenados en DATA2
○ Suma cada byte de BUFFER1 con el correspondiente de BUFFER2 y almacenar
resultado en BUFFER3
○ Hacer una OR de cada byte de BUFFER3 con $20 y almacenar el resultado en
BUFFER4

main_loop: MOV #$10, contador ; Inicializar una localidad de memoria para contar
el numero de bytes

Convertir un numero empaquetado de 8 bits a un desempaquetado


0x80 -> 128
0x64 -> 100
0x10 -> 16
0x20 -> 32

Hex FF
Cent 02
Dec 05
Uni 05

Preguntas
Friday, February 27, 2009
10:01 PM

1. For compatibility with older M68HC05 MCUs, the HCS08 resets the stack pointer
to $00FF. In the
MC9S08GB60, it is usually best to reinitialize the stack pointer to the top of the
RAM ($107F) so the direct
page RAM ($0080–$00FF) can be used for frequently accessed RAM variables
and bit-addressable
program variables. Include the following 2-instruction sequence in your reset
initialization routine (where
RamLast is equated to $107F in the equate file provided by Freescale).
a. Was the code changed to RAMEnd+1?
1. The I bit in the condition code register (CCR) is set to block maskable interrupts
until the user program has a chance to initialize the stack pointer (SP) and
system control settings. SP is forced to $00FF at reset, but this is almost never
where the stack should be located in an HCS08 system. Normally, SP should be
changed during reset initialization
a. Why on CW is set to 17FF? (LDHX #RAMEnd+1 TXS CLI)
1. What about pshh & pshx???? (Same to pulh & x)

Complemento @2
Thursday, March 05, 2009
6:33 PM
6 000 0110
111 1001
1111
1010
1. La diferencia entre branch & jump es que branch solamente puede ser de
a. 0x7F = 0111 1111 - 127
a. 0x80 = 1000 0000 - -128

Puertos
Thursday, March 19, 2009
6:20 PM
• Paralelo puede ser de 4,8 o mas bits

Conexión μC con LCD


Tuesday, March 24, 2009
6:36 PM


• En el programa de ejemplo se escribe en el puerto F
• Lineas adicionales al purto G??
Samsun KS066
g
Hitachi HD4478
0
• En el programa de ejemplo se escribe en el puerto F
• Lineas adicionales al purto G??

DB7
.
.
.
DB0

RS

f/n

PTF7
.
.
.
PTF0

PTG2

f/n

PTG0
VDD VSS VD
+5v Tierra Contraste

Práctica 1b
Friday, March 27, 2009
4:49 PM

1. Antes de comenzar a elaborar su programa, escriba manualmente la forma en


que trabaja el
ordenamiento por el método de la burbuja. Use los números de DATOS_ADC para
mostrar, paso
por paso, cómo funciona el ordenamiento con esos valores.
Consiste en ciclar repetidamente a través de la lista, comparando elementos
adyacentes de dos en dos. Si un elemento es mayor que el que está en la
siguiente posición se intercambian

1. for (i=1; i<TAM; i++)


2. for j=0 ; j<TAM - 1; j++)
3. if (lista[j] > lista[j+1])
4. temp = lista[j];
5. lista[j] = lista[j+1];
6. lista[j+1] = temp;
2. Escriba la serie de instrucciones que utilizaría para acceder, uno por uno, a los
valores de
DATOS_ADC, y realizar la operación OR-exclusiva con $20.
LDHX #DATOS_ADC ; Recuperar un dato de la lista
CLR I
CLR J
Ciclo: MOV X+,$A0
LDA $A0
EOR #$20 ; hacer la OR exclusiva con $20.
PSHA
CPHX #DATOS_ADC + $10
BNE Ciclo

a. Al comparar los números, ¿cuál bandera del CCR le dará la indicación de que
alguno de
ellos es mayor? (considere a los números SIN signo)
Carry, zero
b. ¿Cuál instrucción de brinco (branch) le permitirá tomar la decisión de
intercambiar o no
los números comparados, con base en la bandera del punto anterior?
CMP $A0
BHS Cambio

c. Escriba la(s) instrucción(es) que le permitirían acceder exactamente a los dos


elementos
que quedaron a la mitad de la lista.
AIS #-8
PULA
PULX

Você também pode gostar