'初期処理〜メインループ
GRV_initial = 0
GOSUB BATTERY_CHECK
(中略)
MAIN: 'メインループ開始
'-----------------------------
REMGET: 'キー入力値の取得とアクション分岐処理
RR_BUF = RR
RR = 0
(中略)
ON RR_BUF GOTO main_exit,K1,K2,K3,.....
main_exit:
IF RR_BUF > 50 THEN RETURN
GOTO MAIN 'メインループ終端
'メインループが呼出すサブルーチン群(抜粋)
k7: ' キー入力値=7のときの分岐先
GOSUB BATTERY_CHECK
GOTO main_exit
BATTERY_CHECK: 'Battery check
IF GRV_initial = 0 THEN 'PowerON check
DEG = 0
FOR i = 1 TO 5
GRV = AD(6)
DELAY 20 '20ms * 5times = 100ms
DEG = DEG + GRV 'add 5 times
NEXT i
DEG = DEG / 5 'get mean value
IF DEG > GRV_BAT_LOW THEN GOTO BAT_LOW
ENDIF
AZ = AD(7) 'V+ voltage
IF AZ >= AD_BAT_LOW THEN GOTO BAT_OK
BAT_LOW:
FOR i = 1 TO 10
OUT 52, 1 'LED off
DELAY 200
MUSIC "A"
OUT 52, 0 'LED on
DELAY 200
NEXT i
IF GRV_initial = 0 THEN END
RETURN
BAT_OK:
IF GRV_initial = 0 THEN
GRV_initial = DEG
ENDIF
RETURN
|