Duda con codewarrior y HC08

Mi duda es la siguiente:

Estoy programando en el codewarrior pero ya me he gastado las tres variables que vienen por default: H,X y A... hay manera de delcarar mas variables???
 
Si no mal recuerdo se definen en el encabezado y dependen del tipo de variable..

;**************************************************************
;* This stationery is meant to serve as the framework for a *
;* user application. For a more comprehensive program that *
;* demonstrates the more advanced functionality of this *
;* processor, please see the demonstration applications *
;* located in the examples subdirectory of the *
;* Metrowerks Codewarrior for the HC08 Program directory *
;**************************************************************

; export symbols
XDEF Entry, main
; we use export 'Entry' as symbol. This allows us to
; reference 'Entry' either in the linker .prm file
; or from C/C++ later on

; include derivative specific macros
Include 'gp32_registers.inc'

; variable/data section
MY_ZEROPAGE: SECTION SHORT
; Insert here your data definition. For demonstration, temp_byte is used.
STATUS ds.b 1 //
CONT DS.b 1 // son dos variables definidas por el usuario es algo así como define sentence byte 1 -- variables de 255 espacios..

otro ejemplo
; Insert here your data definition. For demonstration, temp_byte is used.
temp_byte ds.b 1

Es así la explicación si no me acuerdo mal., pero esa es la forma...

 
aaa ok gracias, pero ahora tengo otra duda...
estoy checando el programa de un amigo y dice lo siguiente:

LDA $102
DECA
STA $102
BNE LAZO_A

primero carga en A el valor guardado en la direccion $102
luego decrementa A
despues guarda el valor de A en $102
¿Qué hace el BNE?, según el libro BNE "compara y salta si no es igual", mi pregunta es igual a que???

y otra duda:

LAZO_2

LDA CONT0
LAZO_1
DBNZA LAZO_1

lo que pasa aqui es que en A guarda el valor de CONT0
en el siguiente renglón qué hace DBNZA???
 
Estoy haciendo una secuencia de 8 leds, lo que deben hacer es prender y apagar uno después de otro, sólo que tanto el tiempo de encendido y apagado deben ser regulables (de .5 a 3 seg con incrementos de .5 seg), e independientes...
 
Hola, cuando dices regulables.... esto con qué lo modificas; con un potenciometro en el Adc del micro o con interruptores?

Creo que podrías montar retardos e irlos llamando, con contadores, para tu trabajo... el mas facil es el nop... y entonces hacer un contador que haga noP n número de veces dependiendo del cristal que utilices..

compa: sta cont;
bne 0, retardo; //branc if no equal si no es o brinca a subr retardo
RTS; // regresa al programa principal

retardo: dec cont; // decrementa contador
nop // no operación..
bsr compa; // regresa a hacer otro ciclo de retardo

creo que podría ser una forma, entonces cont le asignas un valor afuera de esa subrutina y le pones un número conforme al número de ciclos que necesites, no estoy muy seguro de los comandos pero yo intentaría por ese lado...

Te parece?

// Yo trabajé con esos hace años y medio me acuerdo de cositas, pero creo que para lo tuyo puedes aplicar eso //
 

Adjuntos

  • Tbase_en_los_908.pdf
    124.9 KB · Visitas: 95
Última edición:
;Que hace BNE?

LDA $102
DECA
STA $102 ; Aqui hay un error.... has cambiado el bit z del SR status register.
BNE LAZO_A

======================
;Lo correcto seria asi:
LDA $102
DECA
BNE LAZO_A ; si al decrementar el registro A y este aun no llega ha ser '0'. LAZO_A entra en buckle de repeticcion.
;Se rompe el buckle de repeticcion o loop.
======================
LAZO_A: STA $102 ; Entonces "LAZO_A" guarda el contenido del registro 'A' en la memoria.
 
Mi duda es la siguiente:

Estoy programando en el codewarrior pero ya me he gastado las tres variables que vienen por default: H,X y A... hay manera de delcarar mas variables???

Creo que confundas variables con registros.
Variables puedes usar tantas como ram tengas. No es aconsejable usar registros como variables porque se agotan rápido y te ralentizan el resto de tareas.

Edito, reflote del 2009



;Que hace BNE?

LDA $102
DECA
STA $102 ; Aqui hay un error.... has cambiado el bit z del SR status register.
BNE LAZO_A

======================
;Lo correcto seria asi:
LDA $102
DECA
BNE LAZO_A ; si al decrementar el registro A y este aun no llega ha ser '0'. LAZO_A entra en buckle de repeticcion.
;Se rompe el buckle de repeticcion o loop.
======================
LAZO_A: STA $102 ; Entonces "LAZO_A" guarda el contenido del registro 'A' en la memoria.


BNE Branch Not Equal

Salta si no es igual

Si preguntas eso es que ni has leído el manual del procesador, vamos
 
Última edición:
Atrás
Arriba