SYS()関数で取得できる時間は
最大 &H1FFFFFFF = 536870911ms ≒ 149.13時間 (6.2日間)
です。(SYS()の内部タイマーは3Byteではありません)
PRINT SYS(0) などを実行すると内部タイマー値が直接表示されます。
例)
>PR SYS(0)
8907381 " mSecで表示
>PR SYS(1000)
8907 " Secで表示
しかし、MPC-816の変数は符号付き3Byte長なので&H7FFFFFを超える値をロードすると
負の値となります。
例)
>T0=SYS(0) " power on 後約2時間半経過
>PR T0
-7869273 " &H87ECA7 = 8907943 オーバーフローして負になる
>T0=SYS(1000)
>PR T0
8908 " 1/1000すればオーバーフローしない
∴
SYS(0) (mSec単位) で変数にロードできるのは
最大 &H7FFFFF = 8388607ms ≒ 8388s ≒ 139m ≒ 2.3時間まで、
SYS(1000) (Sec単位) とすれば内部タイマー最大値の536870秒まで扱えます。
※内部タイマー値がオーバーフローしたときの値は不定。
※内部タイマーには数%の誤差があります。また、原発のセラロックにも周波数精度±0.5%
温度安定性±0.2%の誤差がありますので、必要に応じてボード毎に補正してください。
|