Hay otro método mucho más exacto para medir el tiempo, basado en el contenido de cier
tas posiciones de memoria
.
Para leer los datos almacenados en la memoria se utiliza la
función
PEEK.
La Sección 25 de este capítulo explica con detalle el significado exacto de
las posiciones de memoria que vamos a leer. La expresión que necesitamos es:
(65536*
PEEK
23674+256*
PEEK
23673+
PEEK
23672)/50
que da el número de segundos transcurridos desde que se encendió o reinicializó el ordena
dor (hasta alrededor de tres días y 21 horas, porque después de ese tiempo vuelve a
O).
El siguiente programa es una versión revisada del programa anterior en la que utilizamos
esa expresión:
10
REM
primero dibujamos la esfera del reloj
20
FOR
n=1
TO
12
30
PRINT AT
10-10*
COS
(n/6*
PI
),16+10*
SIN
(n/6*
PI
);n
40
NEXT
n
50
DEF FN
tO=
INT
((65536*
PEEK
23674+256*
PEEK
23673+
PEEK
23672)/50):
REM
numero de segundos desde la reinicializacion
100
REM
ahora ponemos en marcha el reloj
110
LET
t1=
FN
tO
120
LET
a=t1/30*
PI: REM
a es el angulo del segundero en radianes
130 LET
sx=n*
SIN a: LET
sy=n*
COS a
140
PLOT
131,91:
DRAW OVER
1;sx,sy:
REM
dibujar segundero
200 LET t=
FN
tO
210
IF
t< =t1
THEN GO TO
200:
REM
esperar hasta que llegue el momento de
moverlo
220
PLOT
131,91:
DRAW OVER
1;sx,sy:
REM
borrar segundero
230
LET
t1=t:
GO TO
120
El reloj interno en el que se basa este método tiene una precisión de alrededor del 0.01 OJo
(aproximadamente 10 segundos por día), a condición de que lo único que haga el ordena
dor sea ejecutar el programa. Sin embargo, cuando se ejecuta la sentencia
BEEP
(descrita
en la Sección 19 de este capítulo) o se trabaja con la unidad de disco o con cualquier perifé
rico, el reloj interno se detiene temporalmente, y por lo tanto se atrasa.
Los números
PEEK
23674,
PEEK
23673 y
PEEK 236n
están almacenados en el ordenador
y constituyen un contador de cincuentavos de segundo. Crecen gradualmente de Oa 255,
y, al llegar a 255, vuelven a cero.
El que se incrementa más a menudo es
PEEK 236n
(una unidad cada l/50 segundos).
Cuando llegaa 255, el siguiente incremento lo lleva a O, y al mismo tiempo suma 1 a
PEEK
23673. Cuando
PEEK
23673 pasa de 255 a O(cada 256/50 segundos), esto a su vez suma
1 a
PEEK
23674. Esta explicación debería ser suficiente para que usted comprenda cómo
funciona la expresión anterior.
Capítulo 8. Guía de programación en +3 BASIC
138