Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

10/07/2012 #1

Avatar de jairosaw

Registro de propósito general de 16 bits en asm
Hola compañeros,,, como le hago en assembler para que un registro de propósito general me quede en 16bits normalmente son de 8 bits (0 - 255) excepto si utilizo el timer 1 del pic que utilizo 18f4431, en CCS se que tan solo colocarle long long + variable listo quedaria,, pero en assembler ? se me ocurria algo de que cuando llegara la variable que necesito a 255 activara una bandera para q no se me desborde y seguir con el conteo en otra variable y sumarla pero seguiria con la duda ese resultado de suma me quedaría guardado en otra variable de 8 bits,,,

Gracias por sus opiniones..
10/07/2012 #2


No entiendo muy bien la pregunta. Si querés utilizar un registro de 16 bit en un PIC que tiene sólo registros de 8 bits, usá 2 registros. Cuando el que tenes que usar como más bajo, llega a 255, lo igualas a 0 e incrementas el que usas como alto en 1
10/07/2012 #3

Avatar de jairosaw

ok,, gracias era como lo pensaba asi como el timer 1 tiene dos registros el tmr1h y tmr1l,,, pero si deseo guardar ese resultado para sacarlo en display 7 segmentos, tendria q crar una rutina q me lea las centenas decenas y unidades verdad??? entonces tendria q leer la parte alta y baja,,, esoty en lo cierto
?????
10/07/2012 #4


Hola!
No, no es tan simple y ojo que hay más que centenas y más cuidado aún que el número está expresado en binario.

Qué tanto sabes de binario? porque si en el registro bajo tenes 200 y en el lato 100, el total es de 25800. (a modo de ejemplo particular).

No sé cómo podrías hacer para expresar un numero mayor a un byte en assembler para ponerlo en el display... si se me ocurre algo te aviso, vos tenés alguna idea?
10/07/2012 #5
Moderador

Avatar de Dano

jairosaw dijo: Ver Mensaje
ok,, gracias era como lo pensaba asi como el timer 1 tiene dos registros el tmr1h y tmr1l,,, pero si deseo guardar ese resultado para sacarlo en display 7 segmentos, tendria q crar una rutina q me lea las centenas decenas y unidades verdad??? entonces tendria q leer la parte alta y baja,,, esoty en lo cierto
?????
No, tienes que crear/usar una rutina que convierta el numero binario/hex en decimal, mas conocida como rutina BCD.

La gama 18f te ofrece una instrucción llamada daw, que acelera bastante el proceso,lee sobre la misma y busca algún ejemplo.
10/07/2012 #6

Avatar de jairosaw

no tampoco,,,, solo quiero q si tengo en la entrada 300 pulsos por ejemplo ese valor lo pueda expresar en los display,, voy a seguir revizando e intentando,, cualquier ayuda gracias
10/07/2012 #7
Moderador

Avatar de Vick

De hecho es bastante simple, solo debes tener dos registros, cuentas los incrementos con el primero de ellos (byte bajo), cada vez que se desborde solo incrementas el segundo (byte alto) y así de simple tienes un numero binario de 16 bits almacenado en dos registros de 8 bits.

Luego conviertes esos 16 bits a BCD y los mandas al display, para eso te puede servir esta info:

http://www.microchip.com/stellent/id...pnote=en011000
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.