' ' ************************************ ' * Gamebuino 初期設定 * ' * * ' * Copyright O-Family 2017. 3.23 * ' ************************************ ' ' Ver. 0.01 新規作成バージョン。 2017. 3.23 ' ' $regfile = "m328pdef.dat" '使用するAVRを設定。 $crystal = 16000000 'AVRクロックを設定。 ' $hwstack = 128 'ハードウェア・スタックの容量を設定。 $swstack = 128 'ソフトウェア・スタックの容量を設定。 $framesize = 128 'フレーム領域の容量を設定。 Const Sdcard_use = 0 'SD-Cardの使用状況。(0:使用しない , 1:使用する) ' ' * ポート名の定義 * ' Btn_u Alias Pinb.1 'ボタン[Up]の接続ポート。 Btn_d Alias Pind.6 'ボタン[Down]の接続ポート。 Btn_l Alias Pinb.0 'ボタン[Left]の接続ポート。 Btn_r Alias Pind.7 'ボタン[Right]の接続ポート。 Btn_a Alias Pind.4 'ボタン[A]の接続ポート。 Btn_b Alias Pind.2 'ボタン[B]の接続ポート。 Btn_c Alias Pinc.3 'ボタン[C]の接続ポート。 ' Backlight Alias Portd.5 'G-LCDのバックライトの接続ポート。 Sp_out Alias Portd.3 'スピーカーの接続ポート。 ' ' * ポートの初期設定 * ' Set Portb.1 'ボタン[Up]の接続ポートをプルアップする。 Set Portd.6 'ボタン[Down]の接続ポートをプルアップする。 Set Portb.0 'ボタン[Left]の接続ポートをプルアップする。 Set Portd.7 'ボタン[Right]の接続ポートをプルアップする。 Set Portd.4 'ボタン[A]の接続ポートをプルアップする。 Set Portd.2 'ボタン[B]の接続ポートをプルアップする。 Set Portc.3 'ボタン[C]の接続ポートをプルアップする。 ' Config Backlight = Output 'G-LCDのバックライトの接続ポートを出力に設定する。 Config Sp_out = Output 'スピーカーの接続ポートを出力に設定する。 ' Set Portb.2 'SDカードの[/CS]接続ポートを[H]に設定する。 Config Portb.2 = Output 'SDカードの[/CS]接続ポートを出力に設定する。 Set Portc.1 'G-LCDの[/CE]接続ポートを[H]に設定する。 Config Portc.1 = Output 'G-LCDの[/CE]接続ポートを出力に設定する。 Set Portb.5 'G-LCDの[CLK]接続ポートを[H]に設定する。 Config Portb.5 = Output 'G-LCDの[CLK]接続ポートを出力に設定する。 ' ' * AVR-DOSの初期設定 * ' #if Sdcard_use = 0 Config Spi = Hard , Master = Yes , Interrupt = Off , Data Order = Msb , Phase = 1 , Polarity = High , Clockrate = 4 , Noss = 1 Spiinit 'SPIピンを初期化する。 #else $include "Config_MMCSD_HC_Gamebuino.bas" 'SD/MMCカードのピン設定プログラムを組み込む。 $include "CONFIG_AVR-DOS_Mega328P.bas" 'AVR-DOSの設定プログラムを組み込む。 Temp1 = Initfilesystem(1) 'ファイル・システムを初期化する。 #endif ' ' * G-LCDの初期設定 * ' $lib "glcd-Gamebuino.LBX" Config Graphlcd = 128x64sed , Rst = Portc.0 , Cs1 = Portc.1 , A0 = Portc.2 , Si = Portb.3 , Sclk = Portb.5 Cls 'G-LCDの全画面を消去する。 ' ' * I2Cの初期設定 * ' $lib "i2c_twi.lbx" 'TWI用ライブラリを組み込む。 Config Scl = Portc.5 'SCLラインを接続する、ポートピンを設定。 Config Sda = Portc.4 'SDAラインを接続する、ポートピンを設定。 Config Twi = 400000 'SCLクロック速度を設定。 I2cinit 'SCL・SDAラインを初期化。 ' ' * A/Dコンバータの初期設定 * ' Config Adc = Single , Prescaler = Auto , Reference = Avcc 'A/Dコンバータの設定。 Start Adc 'A/Dコンバータに電源を供給。 ' ' * シリアル通信の初期設定 * ' Config Com1 = 9600 , Parity = None , Stopbits = 1 , Databits = 8 'ハードウェアUARTの設定。 Config Serialin = Buffered , Size = 80 'シリアルデータ受信を、バッファを使用した割り込み処理にする。 Enable Interrupts 'すべての割り込みを許可。 '-------------------------------------------------------------------------------------------------- ' ' *********************************** ' * Gamebuino I2C RTC(時計)の接続 * ' * [RTC-8564] * ' * Ver. 1.01 2017. 4.19 * ' *********************************** ' ' Ver. 1.01 初回公開バージョン。 2017. 4.19 ' ' ' * 変数の宣言 * ' Dim I2cbuff(20) As Byte 'I2Cの送受信バッファー。 Dim Timebuff(7) As Byte '時刻データバッファー。(秒,分,時,日,月,年,曜日) Dim Hourmode As Byte '12/24時間制表示選択。(0:12時間制 , 1:24時間制) ' Dim Temp1 As Byte '汎用テンポラリ変数 Byte型 No.1 Dim Temp2 As Byte '汎用テンポラリ変数 Byte型 No.2 Dim Temp3 As Byte '汎用テンポラリ変数 Byte型 No.3 Dim Temp4 As Byte '汎用テンポラリ変数 Byte型 No.4 Dim Tempw1 As Word '汎用テンポラリ変数 Word型 No.1 Dim Tempw2 As Word '汎用テンポラリ変数 Word型 No.2 Dim Tempstr As String * 16 '汎用テンポラリ変数 String型 ' Dim Dummy As Eram Long 'EEPROM 4バイトのダミーエリア。 Dim Eephourmode As Eram Byte 'EEPROM 12/24時間制表示選択。(0:12時間制 , 1:24時間制) ' ' * Timerの設定 * ' Config Timer1 = Timer , Prescale = 1024 , Clear Timer = 1 'Timer1の設定。16,000,000Hz / 1024 = 15,625Hz Compare1a = 1562 - 1 '15,625Hz / 10Hz(100ms) = 1562カウント ' ' * 初期画面の表示 * ' Setfont Gamebuino_font6x8 Lcdat 1 , 1 , "I2C RTC-8564NB" , 2 'タイトルの表示。 Lcdat 5 , 1 , " " , 3 Lcdat 6 , 1 , "C+{128}:set A:hour" 'ボタン説明の表示。 ' #if Sdcard_use = 1 If Gbdriveerror <> 0 Then 'If SDカードの初期化でエラーが発生したか? Then Lcdat 4 , 1 , "SD-Card Error!" , 1 'SDカードの初期化エラー。 Else End If #endif ' ' * EEPROMのデータを確認する * ' If Eephourmode > 1 Then 'If EEPROMが初期値か? Then Eephourmode = 0 'EEPROM 12/24時間制表示選択。(0:12時間制 , 1:24時間制) End If Hourmode = Eephourmode ' ' * [RTC-8564]の動作状態を確認 (バックアップ切れを確認) * ' Wait 1 '[RTC-8564]の起動待ち。 I2cbuff(1) = &H02 'レジスター[02] Seconds のアドレスを指定する。 I2creceive &HA2 , I2cbuff(1) , 1 , 1 'I2Cバスで、1バイトのコマンドを送信し、1バイトのデータを受信する。 Waitus 2 '1.3μSの待ち時間。(AVRクロック速度により必要になります) If Err <> 0 Then 'If [RTC-8564]の応答が無いか? Then Lcdat 3 , 1 , "RTC-8564 Error" , 1 '[RTC-8564]のエラーを表示する。 Sound Sp_out , 100 , 6666 '200Hzの音を500mS鳴らす。 Stop '機能停止。 End If If I2cbuff(1).7 = 1 Then 'If [RTC-8564]の初期化が必要か? (VL bit=1) Then Gosub Rtc8564init '[RTC-8564]を初期化する。 Lcdat 3 , 1 , "#Battery dead!" , 1 'バッテリーの電圧が下がった警告を表示する。 Sound Sp_out , 100 , 6666 '200Hzの音を500mS鳴らす。 Wait 2 Lcdat 3 , 1 , " " '警告表示を消去する。 End If If Btn_b = 0 Then 'If [RTC-8564]を強制的に初期化するか? Then Gosub Rtc8564init '[RTC-8564]を初期化する。 Lcdat 3 , 1 , "RTC-8564 Init!" , 1 '[RTC-8564]の強制的な初期化を表示する。 Sound Sp_out , 2000 , 333 '4000Hzの音を500mS鳴らす。 Bitwait Btn_b , Set 'ボタン[B]が離されるまで待つ。 Waitms 30 'チャタリングの待ち時間。 Lcdat 3 , 1 , " " '初期化の表示を消去する。 End If Gosub Rtc8564start '[RTC-8564]の時計機能を始動する。(初期化中に中断した場合の対策) ' Sound Sp_out , 50 , 1333 '1000Hzの音を50mS鳴らす。 ' ' ******************* ' * メイン ルーチン * ' ******************* ' Main: ' ' * 時刻の表示 * ' If Tifr1.ocf1a = 1 Then 'If 100ms経過したか? Then Set Tifr1.ocf1a 'Timer1の比較A一致フラグをリセット。 ' I2cbuff(1) = &H01 'レジスター[01] Control 2 のアドレスを指定する。 I2creceive &HA2 , I2cbuff(1) , 1 , 1 'I2Cバスで、1バイトのコマンドを送信し、1バイトのデータを受信する。 Waitus 2 '1.3μSの待ち時間。(AVRクロック速度により必要になります) If I2cbuff(1).2 = 1 Then 'If 時刻が更新されたか(1秒経過)? Then Gosub Rtc8564read '[RTC-8564]から日時を読み出す。 Gosub Timedisp '日時をG-LCDに表示する。 I2cbuff(1) = &H01 'レジスター[01] Control 2 のアドレスを指定する。 I2cbuff(2) = &B0000_0001 'Control 2のTFビットを[0]リセットする。 I2csend &HA2 , I2cbuff(1) , 2 'I2Cバスで、2バイトのデータを送信する。 Waitus 2 '1.3μSの待ち時間。(AVRクロック速度により必要になります) End If End If ' ' * スイッチの確認 * ' Debounce Btn_a , 0 , Btnaon 'ボタン[A]の検出。 Debounce Btn_b , 0 , Btnbon 'ボタン[B]の検出。 Temp1 = Btn_c Or Btn_u If Temp1 = 0 Then Goto Btncuon 'If ボタン[C + Up] 時刻設定モードか? Then ' Goto Main '-------------------------------------------------------------------------------------------------- ' ' * ボタン[A]が押された場合 (12/24時間制の切り替え) * ' Btnaon: Toggle Hourmode.0 '12/24時間制表示を切り替える。 Eephourmode = Hourmode 'EEPROMに保存する。 Gosub Timedisp '日時をG-LCDに表示する。 Goto Main ' ' * ボタン[B]が押された場合 (バックライトのON/OFF) * ' Btnbon: Toggle Backlight 'G-LCDのバックライトの点灯をON/OFFする。 Goto Main ' ' * ボタン[C + Up]が押された場合 (時刻設定モード) * ' Btncuon: Temp2 = &B0100_0000 '設定カーソルの位置指定ビット。 Gosub Tsetdisp '時刻設定用の日時を表示する。 Lcdat 6 , 1 , "{128}{129}{130}{131}:set A:end" 'ボタン説明の表示。 Sound Sp_out , 200 , 333 '4000Hzの音を50mS鳴らす。 Waitms 30 'チャタリングの待ち時間。 Bitwait Btn_c , Set 'ボタン[C]が離されるまで待つ。 Bitwait Btn_u , Set 'ボタン[Up]が離されるまで待つ。 Waitms 30 'チャタリングの待ち時間。 ' Gosub Timeset '時刻設定処理。 ' Gosub Timedisp '日時をG-LCDに表示する。 Lcdat 6 , 1 , "C+{128}:set A:hour" 'ボタン説明の表示。 Sound Sp_out , 200 , 333 '4000Hzの音を50mS鳴らす。 Goto Main '-------------------------------------------------------------------------------------------------- ' ' ------------------------------------- ' * 日時をG-LCDに表示するサブルーチン * ' ------------------------------------- ' Timedisp: Temp2 = 0 '反転表示をしない. ' Tsetdisp: '時刻設定用の日時を表示する場合。 Lcdat 3 , 1 , "20 / /" '年月日のセパレータを表示する。 Lcdat 4 , 43 , ": :" '時分秒のセパレータを表示する。 ' Temp3 = Temp2.6 Lcdat 3 , 13 , Hex(timebuff(6)) , Temp3 '[年]を表示する。 ' Temp3 = Temp2.5 Temp1 = Timebuff(5) '[月]を表示する。 Gosub Zerosupbcd '上位桁をゼロサプレスする。 Lcdat 3 , 31 , Tempstr , Temp3 ' Temp3 = Temp2.4 Temp1 = Timebuff(4) '[日]を表示する。 Gosub Zerosupbcd '上位桁をゼロサプレスする。 Lcdat 3 , 49 , Tempstr , Temp3 ' Temp3 = Temp2.3 Lcdat 3 , 67 , Lookupstr(timebuff(7) , Weekdata) , Temp3 '[曜日]を表示する。 ' Temp3 = Temp2.2 If Hourmode = 0 Then 'If 12時間制表示か? Then Temp1 = Makedec(timebuff(3)) '[時]のBCD値を10進数の数値に変換。 If Temp1 < 12 Then 'If [AM]か? Then Lcdat 4 , 13 , "am" '[AM]マークを表示する。 Else Lcdat 4 , 13 , "pm" '[PM]マークを表示する。 End If If Temp1 = 0 Then Temp1 = 24 '24時間制時刻を12時間制に変換する。 If Temp1 > 12 Then Temp1 = Temp1 - 12 Temp1 = Makebcd(temp1) '10進数の数値をBCD値に変換。 Else '24時間制の場合。 Lcdat 4 , 13 , " " '[AM/PM]マークを消去する。 Temp1 = Timebuff(3) End If Gosub Zerosupbcd '上位桁をゼロサプレスする。 Lcdat 4 , 31 , Tempstr , Temp3 ' Temp3 = Temp2.1 Lcdat 4 , 49 , Hex(timebuff(2)) , Temp3 '[分]を表示。 ' Temp3 = Temp2.0 Lcdat 4 , 67 , Hex(timebuff(1)) , Temp3 '[秒]を表示。 Return ' ' ----------------------------------------------- ' * BCD値の上位桁をゼロサプレスするサブルーチン * (Temp1 = 入力BCDデータ) ' ----------------------------------------------- (Tempstr = 出力文字列) ' Zerosupbcd: If Temp1 < 10 Then 'If 上位桁が0か? Then Tempstr = " " + Str(temp1) Else Tempstr = Hex(temp1) End If Return '################################################################################################## ' ' **************** ' * 時刻設定処理 * ' **************** ' Timeset: Gosub Rtc8564stop '[RTC-8564]の時計機能を停止させる。 Temp2 = &B0100_0000 '設定カーソルの位置指定ビット。 ' Timeset8: Gosub Tsetdisp '時刻設定用の日時を表示する。 Timeset9: Debounce Btn_l , 0 , Timeset1 'ボタン[Left]の検出。 Debounce Btn_r , 0 , Timeset2 'ボタン[Right]の検出。 Debounce Btn_u , 0 , Timeset3 'ボタン[Up]の検出。 Debounce Btn_d , 0 , Timeset4 'ボタン[Down]の検出。 Debounce Btn_a , 0 , Timeset5 'ボタン[A]の検出。 Goto Timeset9 ' ' * 時刻設定のボタン[Left]が押された場合 * ' Timeset1: Shift Temp2 , Left , 1 'カーソルを左に移動する。 If Temp2 = &B1000_0000 Then 'If [年]を超えたか? Then Temp2 = &B0000_0001 '[秒]に戻す。 End If Goto Timeset8 ' ' * 時刻設定のボタン[Right]が押された場合 * ' Timeset2: Shift Temp2 , Right , 1 'カーソルを右に移動する。 If Temp2 = &B0000_0000 Then 'If [秒]を超えたか? Then Temp2 = &B0100_0000 '[年]に戻す。 End If Goto Timeset8 ' ' * 時刻設定のボタン[Up]が押された場合 * ' Timeset3: '設定値を加算する。 Select Case Temp2 Case &B0100_0000 '[年]の設定。 Temp1 = Timebuff(6) Temp3 = 99 Temp4 = 0 Gosub Timeset3s 'BCD値を加算する。 Timebuff(6) = Temp1 Case &B0010_0000 '[月]の設定。 Temp1 = Timebuff(5) Temp3 = 12 Temp4 = 1 Gosub Timeset3s 'BCD値を加算する。 Timebuff(5) = Temp1 Case &B0001_0000 '[日]の設定。 Temp1 = Timebuff(4) Temp3 = 31 Temp4 = 1 Gosub Timeset3s 'BCD値を加算する。 Timebuff(4) = Temp1 Case &B0000_1000 '[曜日]の設定。 Temp1 = Timebuff(7) Temp3 = 6 Temp4 = 0 Gosub Timeset3s 'BCD値を加算する。 Timebuff(7) = Temp1 Case &B0000_0100 '[時]の設定。 Temp1 = Timebuff(3) Temp3 = 23 Temp4 = 0 Gosub Timeset3s 'BCD値を加算する。 Timebuff(3) = Temp1 Case &B0000_0010 '[分]の設定。 Temp1 = Timebuff(2) Temp3 = 59 Temp4 = 0 Gosub Timeset3s 'BCD値を加算する。 Timebuff(2) = Temp1 Case &B0000_0001 '[秒]の設定。 Temp1 = Timebuff(1) Temp3 = 59 Temp4 = 0 Gosub Timeset3s 'BCD値を加算する。 Timebuff(1) = Temp1 End Select Goto Timeset8 ' ' * BCD値を加算するサブルーチン * ' Timeset3s: Temp1 = Makedec(temp1) 'BCD値を10進数の数値に変換。 Temp1 = Temp1 + 1 If Temp1 > Temp3 Then 'If 上限値を超えたか? Then Temp1 = Temp4 '下限値に戻す。 End If Temp1 = Makebcd(temp1) '10進数の数値をBCD値に変換。 Return ' ' * 時刻設定のボタン[Down]が押された場合 * ' Timeset4: '設定値を減算する。 Select Case Temp2 Case &B0100_0000 '[年]の設定。 Temp1 = Timebuff(6) Temp3 = 255 Temp4 = 99 Gosub Timeset4s 'BCD値を減算する。 Timebuff(6) = Temp1 Case &B0010_0000 '[月]の設定。 Temp1 = Timebuff(5) Temp3 = 0 Temp4 = 12 Gosub Timeset4s 'BCD値を減算する。 Timebuff(5) = Temp1 Case &B0001_0000 '[日]の設定。 Temp1 = Timebuff(4) Temp3 = 0 Temp4 = 31 Gosub Timeset4s 'BCD値を減算する。 Timebuff(4) = Temp1 Case &B0000_1000 '[曜日]の設定。 Temp1 = Timebuff(7) Temp3 = 255 Temp4 = 6 Gosub Timeset4s 'BCD値を減算する。 Timebuff(7) = Temp1 Case &B0000_0100 '[時]の設定。 Temp1 = Timebuff(3) Temp3 = 255 Temp4 = 23 Gosub Timeset4s 'BCD値を減算する。 Timebuff(3) = Temp1 Case &B0000_0010 '[分]の設定。 Temp1 = Timebuff(2) Temp3 = 255 Temp4 = 59 Gosub Timeset4s 'BCD値を減算する。 Timebuff(2) = Temp1 Case &B0000_0001 '[秒]の設定。 Temp1 = Timebuff(1) Temp3 = 255 Temp4 = 59 Gosub Timeset4s 'BCD値を減算する。 Timebuff(1) = Temp1 End Select Goto Timeset8 ' ' * BCD値を減算するサブルーチン * ' Timeset4s: Temp1 = Makedec(temp1) 'BCD値を10進数の数値に変換。 Temp1 = Temp1 - 1 If Temp1 = Temp3 Then 'If 下限値を超えたか? Then Temp1 = Temp4 '上限値に戻す。 End If Temp1 = Makebcd(temp1) '10進数の数値をBCD値に変換。 Return ' ' * 時刻設定のボタン[A]が押された場合 (設定終了) * ' Timeset5: I2cbuff(1) = &H02 'レジスター[02] Seconds のアドレスを指定する。 I2cbuff(2) = Timebuff(1) '[秒]データを保存する。 I2cbuff(3) = Timebuff(2) '[分]データを保存する。 I2cbuff(4) = Timebuff(3) '[時]データを保存する。 I2cbuff(5) = Timebuff(4) '[日]データを保存する。 I2cbuff(6) = Timebuff(7) '[曜日]データを保存する。 I2cbuff(7) = Timebuff(5) '[月]データを保存する。 I2cbuff(8) = Timebuff(6) '[年]データを保存する。 I2csend &HA2 , I2cbuff(1) , 8 'I2Cバスで、8バイトのデータを送信する。 Waitus 2 '1.3μSの待ち時間。(AVRクロック速度により必要になります) Gosub Rtc8564start 'RTC-8564の時計機能を始動させる。 Bitwait Btn_a , Set 'ボタン[A]が離されるまで待つ。 Waitms 30 'チャタリングの待ち時間。 Return '################################################################################################## ' ' ********************************************* ' * [RTC-8564]から日時を読み出すサブルーチン * ' ********************************************* ' Rtc8564read: I2cbuff(1) = &H02 'レジスター[02] Seconds のアドレスを指定する。 I2creceive &HA2 , I2cbuff(1) , 1 , 7 'I2Cバスで、1バイトのコマンドを送信し、7バイトのデータを受信する。 Waitus 2 '1.3μSの待ち時間。(AVRクロック速度により必要になります) Timebuff(1) = I2cbuff(1) And &H7F '[秒]データ。 Timebuff(2) = I2cbuff(2) And &H7F '[分]データ。 Timebuff(3) = I2cbuff(3) And &H3F '[時]データ。 Timebuff(4) = I2cbuff(4) And &H3F '[日]データ。 Timebuff(7) = I2cbuff(5) And &H07 '[曜日]データ。 Timebuff(5) = I2cbuff(6) And &H1F '[月]データ。 Timebuff(6) = I2cbuff(7) '[年]データ。 Return ' ' ************************************************ ' * [RTC-8564]の時計機能を停止させるサブルーチン * ' ************************************************ ' Rtc8564stop: I2cbuff(2) = &B0010_0000 '時計機能を停止するコマンド。 Rtc8564stop1: I2cbuff(1) = &H00 'レジスター[00] Control 1 のアドレスを指定する。 I2csend &HA2 , I2cbuff(1) , 2 'I2Cバスで、2バイトのデータを送信する。 Waitus 2 '1.3μSの待ち時間。(AVRクロック速度により必要になります) Return ' ' ************************************************ ' * [RTC-8564]の時計機能を始動させるサブルーチン * ' ************************************************ ' Rtc8564start: I2cbuff(2) = &B0000_0000 '時計機能を始動するコマンド。 Goto Rtc8564stop1 ' ' ************************************** ' * [RTC-8564]を初期化するサブルーチン * ' ************************************** ' Rtc8564init: Gosub Rtc8564stop '[RTC-8564]の時計機能を停止させる。 ' Restore Rtc8564inidata '[RTC-8564]の初期設定データ・テーブル。 For Temp1 = 1 To 17 '初期設定データの17バイトをバッファーへ転送する。 Read I2cbuff(temp1) Next Temp1 ' I2csend &HA2 , I2cbuff(1) , 17 'I2Cバスで、17バイトのデータを送信する。 Waitus 2 '1.3μSの待ち時間。(AVRクロック速度により必要になります) ' I2cbuff(1) = &H0E 'レジスター[0E] Timer control のアドレスを指定する。 I2cbuff(2) = &B1000_0010 'Timer controlのTE = 1にして、1Hzの割り込みを起動する。 I2csend &HA2 , I2cbuff(1) , 2 'I2Cバスで、2バイトのデータを送信する。 Waitus 2 '1.3μSの待ち時間。(AVRクロック速度により必要になります) Return End ' ' * フォント データ * ' $include "Gamebuino_font6x8.font" ' ' *[RTC-8564] 初期設定データ・テーブル * ' Rtc8564inidata: Data &H00 'レジスター[00] Control 1 のアドレスを指定する。 Data &B0010_0000 '[00] Control 1 (STOP = 1) Data &B0000_0001 '[01] Control 2 (TI/TP = 0 , TIE = 1) Data &H00 '[02] Seconds Data &H00 '[03] Minutes Data &H00 '[04] Hours Data &H01 '[05] Days Data &H00 '[06] Weekdays Data &H01 '[07] Months / Century Data &H17 '[08] Years Data &H00 '[09] Minute Alarm Data &H00 '[0A] Hour Alarm Data &H00 '[0B] Day Alarm Data &H00 '[0C] Weekday Alarm Data &B0000_0000 '[0D] CLKOUT frequency Data &B0000_0010 '[0E] Timer control (TE = 0 , TD1,TD0 = 10) TD=1Hz Data &H01 '[0F] Timer (Count = 1) 1Hz ' ' * 曜日 データ・テーブル * ' Weekdata: Data "SUN" , "MON" , "TUE" , "WED" , "THU" , "FRI" , "SAT"