fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

ayuda con contador ...
 
Avisos
Vaciar todo

ayuda con contador de 2 bytes

4 Respuestas
3 Usuarios
0 Reactions
5,256 Visitas
morgoz
Respuestas: 208
Topic starter
(@morgoz)
Estimable Member
Registrado: hace 18 años

Hola de nuevo!!

Estoy intentando hacer un contador en AVR, y el tema es que cuento cantidades de 2 bytes.
Los 2 bytes los tengo almacenados en memoria, pero no se como recogerlos para ir decrementando el número y avanzar así el contador, ya que todos los registros son de 1 byte.

¿Se puede decrementar directamente un número de 2 bytes sobre memoria SRAM?

A ver si me podeis echar una mano.

Gracias!!

Responder
3 respuestas
urriellu
Respuestas: 61
(@urriellu)
Trusted Member
Registrado: hace 18 años

¿Qué lenguaje estás usando? Si usas uno de alto nivel (como C) se supone que debería incluir variables de varios tamaños.

Si lo estás haciendo en lenguaje ensamblador en una arquitectura en la que los registros son de 8 bits y no hay ninguna instrucción que trabaje sobre registros de más de 8 bits, entonces lo que puedes hacer es decrementar el byte de menor peso, después comprobar si se desbordó, y en el caso de que se haya desbordado entonces decrementas el byte de mayor peso.

Responder
bastian
Respuestas: 384
(@bastian)
Ardero
Registrado: hace 17 años

Hola!

No conozco mucho de los AVR, pero creo recordar que tienen registros de 16 bits que permiten operaciones de incremento y decremento en ensamblador, en concreto los punteros de datos indirectos (registros X, Y y Z). Normalmente se utilizan para apuntar a datos en SRAM, es decir guardando una direccion de 16 bits, pero se pueden modificar con los registros XH y XL (byte alto y bajo del registro respectivamente).

En el antiguo 8051 solo habia uno o dos y podias incrementar y decrementarlo haciendo algo como
inc DPTR
dec DPTR

en los AVR se que puedes acceder a datos de la SRAM con instrucciones que incrementan o decrementan el puntero automáticamente, pero no recuerdo si soportan la instruccion inc o dec...

Salu2! 😉

Responder
morgoz
Respuestas: 208
Topic starter
(@morgoz)
Estimable Member
Registrado: hace 18 años

Muchas gracias a todos!!

Finalmente lo que haré es cargar directamente el contador en un registro de 16 bits (X,Y oZ) y decrementar o incrementar con las funciones ADIW o SBIW, ya que las de INC y DEC no valen para este tipo de registros.

Gracias y saludos!!

Responder
Compartir: