MPC-816 BBS

縮小画像はクリックで拡大表示します。
#99 MPC-816 SYS()関数の最大値
acceleng 2005年12月19日(月) 16:24 関連: MPC-816
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%の誤差がありますので、必要に応じてボード毎に補正してください。

*index mode*
CGI-design