TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: JACKOLGAO en 30 de Marzo de 2006, 06:12:00

Título: SEÑALIZADOR DE DESBORDAMIENTO EN INCREMENTOS O DECREMENTOS?
Publicado por: JACKOLGAO en 30 de Marzo de 2006, 06:12:00
WENOS DIAS A TODOS!
SOY ESTUDIANTE DE ELECTRONICA Y ME HA SURGIDO UN PROBLEMILLA CON UN PROGRAMA DE ENSAMBLADOR PARA 16F876:
USO DOS POSICIONES DE MEMORIA: 4 BITS PARA ALMACENAR UN DATO Y LOS OTROS 4 DE MENOR PESO MAS EL OTRO BYTE COMPLETO PARA ALMACENAR UN CONTADOR.
YA TENIENDO LOS DATOS CARGADOS DENTRO DE UN BUCLE DECREMENTO ESTE CONTADOR EL PROBLEMA M SURGE EN EL MOMENTO EN EL CUAL YEGO A 0H EN ESOS 4 BITS Q SERIAN LA PARTE ALTA DEL CONTADOR.
EXISTE ALGUN SEÑALIZADOR PARA EMPEZAR A DECREMENTAR EL OTRO BYTE?
SERIA LA Z DEL STATUS COMO OCURRE CON LA SUMA O LA RESTA POR DESBORDAMIENTO?

GRACIAS POR ADELANTADO JAC
Título: RE: SEÑALIZADOR DE DESBORDAMIENTO EN INCREMENTOS O DECREMENTOS?
Publicado por: micro_pepe en 30 de Marzo de 2006, 07:46:00
Dices algunas cosas que se contradicen, un byte, son 8 bits, por lo tanto no lo puedes almacenar en los 4 bits de menor peso un byte.

El indicador de desbordamiento, es el C (carri, o acarreo), pero para un contador se usaria el Z, pues cuando un registro llega a su fin se pone a cero.

Espero haberte ayudado en algo.
Título: RE: SEÑALIZADOR DE DESBORDAMIENTO EN INCREMENTOS O DECREMENTOS?
Publicado por: JACKOLGAO en 30 de Marzo de 2006, 07:58:00
MI DUDA ES Q SI SE SEÑALA EL DESBORDAMIENTO TB EN EL DECREMENTO AL SOBREPASARSE HACIA ABAJO ES DECIR AL PASAR DE 00H A FFH.

A LO DE Q M CONTRADIGO SERÁ XQ M EXPLIQUÉ MAL; USO DEL PRIMER BYTE 4 BITS PARA UN DATO Y LOS OTROS 4 BITS SON LA PARTE ALTA DE UN CONTADOR
(EL OTRO BYTE ES EL RESTO DEL CONTADOR).

DE TODAS FORMAS GRACIAS TODAS.
JACKOLGAO
Título: RE: SEÑALIZADOR DE DESBORDAMIENTO EN INCREMENTOS O DECREMENTOS?
Publicado por: maunix en 30 de Marzo de 2006, 12:56:00
Escrito originalmente por JACKOLGAO
MI DUDA ES Q SI SE SEÑALA EL DESBORDAMIENTO TB EN EL DECREMENTO AL SOBREPASARSE HACIA ABAJO ES DECIR AL PASAR DE 00H A FFH.

A LO DE Q M CONTRADIGO SERÁ XQ M EXPLIQUÉ MAL; USO DEL PRIMER BYTE 4 BITS PARA UN DATO Y LOS OTROS 4 BITS SON LA PARTE ALTA DE UN CONTADOR
(EL OTRO BYTE ES EL RESTO DEL CONTADOR).

DE TODAS FORMAS GRACIAS TODAS.
JACKOLGAO



En realidad no hay forma de hacer lo que pretendes con una sola instrucción.

Se entendió bien, lo que quieres hacer.  Tu problema está en la variable que tienes dos nibbles, uno para el contador y el otro para otra cuestión y pretendes que el PIC genere un aviso cuando el nibble inferior sea cero.

Si te fijas en el datasheet , las instrucciones DECFSZ y INCFSZ no afectan ningun bit del Status Register.

Tal vez tu pensabas en el bit DC (Digit Carry) pero este bit solo es seteado en operaciones de suma y resta.

Las instrucciones INCF y DECF afectan solo al Z, el cual estará habiltiado cuando sea totalmente 0.

En tu caso yo haría uso del ANDLW que sí afecta al Z, con un codigo como este

Codigo:

   movf   DIGITO,w
   andlw   0x0F      ;borro upper nibble
   btfss   STATUS,Z
   goto   NOESCERO
   goto   ESCERO



Espero haber entendido tu problemática y que esto te ayude a resolver tu problema.

Título: RE: SEÑALIZADOR DE DESBORDAMIENTO EN INCREMENTOS O DECREMENTOS?
Publicado por: JACKOLGAO en 31 de Marzo de 2006, 08:13:00
MUXAS GRACIAS MAUNIX.
LOQ HARE SERA SACAR LOS BITS SUPERIORES (LOS Q ERAN PARA GUARDAR UN DATO) Y YA SOLO QUEDANDO EL CONTADOR DECREMENTAR USANDO Z COMO SEÑALIZADOR.
YA OS CONTARÉ SI M FUNCIONA. TALEGOS Y GRACIAS D NUEVO.
JACKOLGAO