Buenas tengo una duda hace un tiempo sobre este programilla de un reloj y su bucle es, que no se como hace el incremento de unidades a decenas (es decir cuando la unidad llega a 9 incrementa de uno en uno hasta 5 la decena y hace el mismo incremento a min y h se repite el caso en seg, min, horas) .
Si me lo pudieran explicar
Muchas gracias
' {$STAMP BS2}
' {$PBASIC 2.5}
D0 CON 8
D1 CON 9
CONTA CON 43
SEGUNDOS VAR Byte
MINUTOS VAR Byte
HORAS VAR Byte
CONTADOR VAR Byte
AUX_0 VAR Byte
AUX_1 VAR Byte
AUX VAR Byte
DIRL=$FF
DIRC=%0111
INICIO:
SEGUNDOS=$0
MINUTOS=$0
HORAS=$0
BUCLE:
FOR HORAS.NIB1=0 TO 2
FOR HORAS.NIB0=0 TO 9
FOR MINUTOS.NIB1=0 TO 5
FOR MINUTOS.NIB0=0 TO 9
FOR SEGUNDOS.NIB1=0 TO 5
FOR SEGUNDOS.NIB0=0 TO 9
FOR CONTADOR= 0 TO CONTA
OUTL=AUX_0
HIGH D0
PAUSE 10
LOW D0
OUTL=AUX_1
HIGH D1
PAUSE 10
LOW D1
NEXT
IF IN12=1 THEN CARGAR_SEGUNDOS
IF IN13=1 THEN CARGAR_MINUTOS
IF IN14=1 THEN CARGAR_HORAS
PAUSE 3
CONTINUAR:
NEXT
NEXT
NEXT
NEXT
IF HORAS=%00100100 THEN INICIO
NEXT
NEXT
GOTO INICIO
CARGAR_SEGUNDOS:
AUX=SEGUNDOS.NIB0
GOSUB TABLA
AUX_0=AUX
AUX=SEGUNDOS.NIB1
GOSUB TABLA
AUX_1=AUX
GOTO CONTINUAR
CARGAR_MINUTOS:
AUX=MINUTOS.NIB0
GOSUB TABLA
AUX_0=AUX
AUX=MINUTOS.NIB1
GOSUB TABLA
AUX_1=AUX
GOTO CONTINUAR
CARGAR_HORAS:
AUX=HORAS.NIB0
GOSUB TABLA
AUX_0=AUX
AUX=HORAS.NIB1
GOSUB TABLA
AUX_1=AUX
Hola Salva, no me aclaro bien con los anidamientos; posiblemente haya algún problema con estos, especialmente en el bucle donde residen los FOR-NEXT, que en algunos casos salta a otro sitio con un condicional y acaba siguiendo un GOSUB para luego retornar... ¿Porqué no insertas algunos DEBUGs y, poco a poco (varia el PAUSE si es necesario) vas viendo los valores que toman las variables?
Por cierto, la aplicación del programa puede ser de lo más interesante, pero ¿estás convencido de que va a ser exacto en el cómputo del tiempo?
Permalink Responder para salva el diciembre 3, 2009 a las 9:35pm
Hola Lorenzo, este codigo es de un ejemplo de el libro diseño practico con microcontroladores, lo monte y funciona, lo que no probe fue si el computo de tiempo era exacto, el problema es k no entiendo lo que comente anteriormente.