;--------------------------------------------------------------------- ; ローマ数字デジタルクロック ; 2010.1.9 ; naka ; 機能など ; ・コロンは1秒毎に点滅 ; ・瞬断対策として1Fの電気二重層キャパシタでバックアップ(10分程度) ; (電源断の間は表示OFF) ; ・デバッグ/デモ用60倍速モード(1分を1秒に圧縮) ; (電源投入時に時刻セットSWを押しているとデバッグモード) ; ;--------------------------------------------------------------------- ; I/Oポート ; (1). RD0〜7 [out] : 桁スキャン(アノード側) ; (2). RC0〜7 [out] : 各セグメント(カソード側) ; (2). RB0〜7 [out] : 各セグメント(カソード側) ; (2). RE0〜1 [out] : DOT,COLON(カソード側) ; (3). RA0 [in] : 明るさ検知(CDS) ; (3). RA1 [in] : 時刻セット/ADJUST SW ; (4). RA2 [in] : 時刻設定モードSW ; (5). RA3 [in] : 瞬断検知用(5Vを監視) ;--------------------------------------------------------------------- ;--------------------------------------------------------------------- ; デバイス定義 ;--------------------------------------------------------------------- LIST P=PIC16F874 INCLUDE "P16F874.INC" __CONFIG _CP_OFF & _PWRTE_ON & _XT_OSC & _WDT_OFF & _LVP_OFF ERRORLEVEL -302 ;アセンブル時のバンク警告メッセージ抑制 ;--------------------------------------------------------------------- ; 変数レジスタの定義(BANK0) ;--------------------------------------------------------------------- HOUR EQU 020H ; 時 MINUTE EQU 021H ; 分 SECOND EQU 022H ; 秒 SECFLG EQU 023H ; 0 : 秒フラグ ; 1 : コロン表示/非表示 ; 2 : デバッグ用60倍速 ; 3 : 時を文字で表示中 SECLOW EQU 024H ; 秒カウンタ(下位) SECHIGH EQU 025H ; 秒カウンタ(上位) ; FLAG EQU 026H ; 0 : モードスイッチ ; 1 : セットスイッチ ; 2 : 時刻設定モード(点滅判断) ; 3 : 「時」設定中 ; 4 : 「分」設定中 OFFSET EQU 027H DGTCNT EQU 028H ; ダイナミック表示桁カウンタ(0〜3) SMPLCNT EQU 029H ; チャタリング回避用(割り込み10回:3.2ms) BLKCNT EQU 02AH ; 時刻設定モード時の点滅用カウンタ ; DSPBUFH EQU 030H ; 表示バッファ「時」: 4バイト(030H-033H) DSPBUFC EQU 034H ; 表示バッファ「:」: 2バイト(034H-035H) DSPBUFM EQU 036H ; 表示バッファ「分」:10バイト(036H-03FH) ; WKCNT EQU 040H TMP EQU 041H TMP2 EQU 042H BRTNES EQU 043H ; 現在の明るさ DSPCNT EQU 044H ; 表示カウンタ(割り込み4回に1度切り替え) ; NOWVOL EQU 045H ; 明るさ測定電圧(今回の電圧) PRVVOL EQU 046H ; 前回測定時の電圧 TMPVOL EQU 047H ; 一時電圧 WAIT EQU 048H ; 待ち時間カウント用 MSGNO EQU 049H ; 起動メッセージ番号 ; BKUPW EQU 060H ; Wレジ待避用 BKUPS EQU 061H ; STATUSレジ待避用 BKUPFR EQU 062H ; FSRレジ待避用 BKUPPCL EQU 063H ; PCLHレジ待避用 ; ; 最後は 07FH ;--------------------------------------------------------------------- ; マクロ定義 ;--------------------------------------------------------------------- BANK0 MACRO BCF STATUS,RP0 ;BANK0に切り替える ENDM BANK1 MACRO BSF STATUS,RP0 ;BANK1に切り替える ENDM ;--------------------------------------------------------------------- ; 割り込みベクタ ;--------------------------------------------------------------------- ORG 00H ; リセット時の飛び込み先 RESET GOTO START ; ORG 04H ; 割り込み時の飛び込み先 INTER ; GOTO INTRUPT ; ;--------------------------------------------------------------------- ; メイン ;--------------------------------------------------------------------- START CALL INIT ; 初期化 ; CALL DIAGMSG ; 起動メッセージ CALL HOURWRD ; 文字で時を表示 MAIN BTFSC FLAG,1 ; ADJUSTモード CALL ADJTIME ; BTFSC FLAG,0 ; 時刻設定モード CALL SETTIME ; BTFSS SECFLG,0 ; 秒フラグ確認 GOTO MAIN ; BCF SECFLG,0 ; 秒フラグクリア CALL COUNTUP GOTO MAIN ; ;--------------------------------------------------------------------- ; 初期化 ;--------------------------------------------------------------------- INIT BCF INTCON,GIE ;全割込み禁止 ; BANK1 MOVLW B'00001110' ; ACFG3:0='1110' (AN0以外をデジタル入出力) MOVWF ADCON1 ; MOVLW B'00001111' MOVWF TRISA ;ポートAは0-3入力、4-5出力 CLRF TRISB ;ポートBは全て出力端子 CLRF TRISC ;ポートCは全て出力端子 CLRF TRISD ;ポートDは全て出力端子 CLRF TRISE ;ポートEは全て出力端子 ; ;割り込みタイマーセット MOVLW H'81' ; プリスケーラを4にする MOVWF OPTION_REG ; 3.125KHzで割り込みが入るはず BANK0 ; clock 12.8MHz -> 3.2Mcycle ; 3.2Mcycle/(4*256)=3.125KHz(=320usec毎) CALL DISPOFF ; 表示オフ CALL CLRBUF ; 表示バッファクリア ; CLRF DGTCNT ; 表示桁カウンタクリア CLRF SECLOW ; 秒カウンタ(下位)クリア CLRF SECHIGH ; 秒カウンタ(上位)クリア CLRF SECFLG ; 秒フラグクリア CLRF FLAG CLRF BLKCNT MOVLW D'3' MOVWF SMPLCNT ; SW状態のサンプリング間隔(3*320us=約1ms) CLRF DSPCNT ; MOVLW D'12' ; 時カウンタ(電源オン時 XII) MOVWF HOUR MOVLW D'0' MOVWF MINUTE ; 分カウンタ CLRF SECOND ; 秒カウンタ ; CHKDBG BTFSS PORTA,1 ; 電源投入時に時刻セットスイッチONなら60倍速モード ; BTFSC PORTA,1 ; 電源投入時に時刻セットスイッチOFFなら60倍速モード BSF SECFLG,2 ; BTFSS PORTA,2 ; 時刻設定SWが押されている可能性があるので GOTO $-1 ; 離されるまで待つ BTFSS PORTA,1 ; 時刻セットSWが押されている可能性があるので GOTO $-1 ; 離されるまで待つ ; BCF FLAG,0 ; BCF FLAG,1 ; BSF INTCON,T0IE ;RTCCマスクイネーブル BSF INTCON,GIE ;割り込み許可 RETURN ; ;--------------------------------------------------------------------- ; 割り込み処理で1秒のカウントと、時刻のダイナミック表示を行う。 ; 3,125回で1秒 ;--------------------------------------------------------------------- INTRUPT ;レジスタ待避 MOVWF BKUPW ; バックアップ(Wレジ) SWAPF STATUS,W ; バックアップ(STATUSレジ) MOVWF BKUPS MOVF FSR,W ; バックアップ(FSRレジ) MOVWF BKUPFR MOVF PCLATH,W ; バックアップ(PCLHレジ) MOVWF BKUPPCL ; BCF INTCON,T0IF ; 割り込みフラグリセット ; CNT1S ; ; 1秒カウント ; INCF SECLOW,F BTFSC STATUS,Z INCF SECHIGH,F ; MOVLW D'12' ; 12*256 + 53 = 3125 SUBWF SECHIGH,W ; BTFSS STATUS,Z ; GOTO END1S ; 1秒カウント終わり MOVLW D'53' ; SUBWF SECLOW,W BTFSS STATUS,Z GOTO END1S ; 1秒カウント終わり ; CNT1SEC CLRF SECLOW CLRF SECHIGH BSF SECFLG,0 ; 1秒経ったのでSECFLGセット END1S BTFSC PORTA,3 ; 停電監視 GOTO DISPDGT ; 1桁表示 CALL DISPOFF ; 消灯 GOTO INTRTRN ; リターン ; DISPDGT ; 時刻設定モード時に数字を点滅 BTFSC FLAG,2 ; モード確認 CALL BLNKDGT ; MOVF DSPCNT,F ; 表示切り替えタイミング確認(割り込み4回に1回) BTFSS STATUS,Z ; 320us * 4 * 8列 = 10.24ms = 約98Hz GOTO DISPSKP ; それ以外のタイミングでは表示切り替えスキップ ; CALL DISPOFF ; まずLED消灯 ; 表示バッファ内容を1列分出力 ; CALL WAIT20US ; 列スキャン側のTrの反応が遅いのでWait ; 桁(アノード側)オン MOVF DGTCNT,W ; 表示桁番号 CALL DECBIT ; ビット位置に変換 MOVWF PORTD ; PortDに出力し、桁をON ; セグメント(カソード側)オン MOVLW DSPBUFH ; 表示バッファの先頭アドレス ADDWF DGTCNT,W ; 現在の桁カウンタを足す(1桁2バイトなので2倍) ADDWF DGTCNT,W ; MOVWF FSR ; FSR にアドレスをセット COMF INDF,W ; 1バイト目を反転して読み込む MOVWF PORTC ; IORLW B'11111101' MOVWF PORTE ; コロン用 INCF FSR,F ; 2バイト目 COMF INDF,W ; 反転して読み込む MOVWF PORTB ; ; INCF DGTCNT,W ; 次回、次の桁を表示するためにインクリメント ANDLW H'07' ; DGTCNTは0-7 MOVWF DGTCNT DISPSKP MOVF BRTNES,F BTFSS STATUS,Z CALL CHKBRT CALL WAIT20US ; 0 の時(夜中)は20us幅の明るさ INCF DSPCNT,W ; 明るさ(0〜4)との比較 SUBWF BRTNES,W BTFSC STATUS,C GOTO $+2 ; 表示継続、明るさ取得へ CALL DISPOFF ; 表示OFF ; CHKBRT BTFSS SECFLG,1 ; 明るさ取得はコロンが消えたタイミング(2秒毎) GOTO SMPLSW ; コロンが点灯していると明るさを誤認識する場合があるので。 CALL GETBRT ; 約60us要 BCF SECFLG,1 ; 明るさ取得フラグクリア ; SMPLSW INCF DSPCNT,W ANDLW H'03' MOVWF DSPCNT ; ; スイッチの状態確認 DECFSZ SMPLCNT,F ; チャタリング回避のためのサンプル時間確認 GOTO INTRTRN ; リターン ; MOVLW D'3' ; 次回のためにカウンタセット MOVWF SMPLCNT ; BCF FLAG,0 ; モードスイッチクリア BTFSS PORTA,2 BSF FLAG,0 ; モードスイッチON ; BCF FLAG,1 ; セット/ADJUSTスイッチクリア BTFSS PORTA,1 BSF FLAG,1 ; セットスイッチON ; INTRTRN ; ;レジスタ復元 MOVF BKUPPCL,W ;復元(PCLATH) MOVWF PCLATH MOVF BKUPFR,W ;復元(FSRレジ) MOVWF FSR SWAPF BKUPS,W ;復元(STATUSレジ) MOVWF STATUS SWAPF BKUPW,F ;復元(Wレジ) SWAPF BKUPW,W ; RETFIE ; ;--------------------------------------------------------------------- ; Wレジ値をビット位置にデコード ;--------------------------------------------------------------------- DECBIT CLRF PCLATH ; ADDWF PCL,F RETLW B'11111110' ;0 RETLW B'11111101' ;1 RETLW B'11111011' ;2 RETLW B'11110111' ;3 RETLW B'11101111' ;4 RETLW B'11011111' ;5 RETLW B'10111111' ;6 RETLW B'01111111' ;7 ; ;--------------------------------------------------------------------- ; 表示OFF ;--------------------------------------------------------------------- DISPOFF MOVLW H'FF' MOVWF PORTD ; 桁列(アノード側) MOVWF PORTC ; セグメント(カソード側) MOVWF PORTB ; セグメント(カソード側) MOVWF PORTE ; セグメント(カソード側) RETURN ;--------------------------------------------------------------------- ; 表示バッファクリア ;--------------------------------------------------------------------- CLRBUF MOVLW D'16' MOVWF WKCNT MOVLW DSPBUFH MOVWF FSR CLRBUFL CLRF INDF INCF FSR,F DECFSZ WKCNT,F GOTO CLRBUFL RETURN ;--------------------------------------------------------------------- ; 時刻設定モード時の桁点滅 ;--------------------------------------------------------------------- BLNKDGT MOVF SECHIGH,F ; 0 or 6のとき、表示ON BTFSC STATUS,Z GOTO CHKONL MOVLW D'6' SUBWF SECHIGH,W BTFSS STATUS,Z GOTO CHKOFF CHKONL MOVF SECLOW,F BTFSS STATUS,Z GOTO CHKOFF BLNKON CALL HOURPTN ; 時を表示バッファに格納 CALL MINPTN ; 分を 〃 RETURN ; CHKOFF MOVLW D'3' ; 3 or 9 で表示オフ SUBWF SECHIGH,W BTFSC STATUS,Z GOTO CHKOFFL MOVLW D'9' SUBWF SECHIGH,W BTFSS STATUS,Z RETURN CHKOFFL MOVF SECLOW,F BTFSS STATUS,Z RETURN BLNKOFF BTFSS FLAG,3 ; 「時」設定中 GOTO BLNKOFFM CLRF DSPBUFH CLRF DSPBUFH+1 CLRF DSPBUFH+2 CLRF DSPBUFH+3 RETURN ; BLNKOFFM BTFSS FLAG,4 ; 「分」設定中 RETURN CLRF DSPBUFM CLRF DSPBUFM+1 CLRF DSPBUFM+2 CLRF DSPBUFM+3 CLRF DSPBUFM+4 CLRF DSPBUFM+5 CLRF DSPBUFM+6 CLRF DSPBUFM+7 CLRF DSPBUFM+8 CLRF DSPBUFM+9 RETURN ; ;--------------------------------------------------------------------- ; 時刻アジャスト(秒を四捨五入:30秒以上なら分繰り上げ) ;--------------------------------------------------------------------- ADJTIME MOVLW D'30' SUBWF SECOND,W BTFSC STATUS,C CALL CNTUPMIN ; 分をカウントアップ ; CLRF SECLOW ; 秒カウンタ(下位)クリア CLRF SECHIGH ; 秒カウンタ(上位)クリア CLRF SECOND ; 秒をクリア BCF SECFLG,0 ; 秒フラグクリア ; BTFSC FLAG,1 ; スイッチが離される迄待つ GOTO $-1 ; RETURN ; ;--------------------------------------------------------------------- ; 時刻設定モード(時、分をカウントアップ) ;--------------------------------------------------------------------- SETTIME BSF FLAG,2 ; 時刻設定モード BTFSC FLAG,0 ; モードSWが離されるまで待つ GOTO $-1 ; SETHOUR BSF FLAG,3 ; 「時」設定モード(数字が点滅) BTFSC FLAG,1 ; セットスイッチが押された? GOTO INCHOR ; BTFSS FLAG,0 ; モードスイッチが押された? GOTO SETHOUR BCF FLAG,3 BTFSC FLAG,0 ; モードSWが離されるまで待つ GOTO $-1 GOTO SETMIN INCHOR INCF HOUR,F MOVF HOUR,W SUBLW D'13' BTFSS STATUS,Z GOTO $+3 MOVLW D'1' MOVWF HOUR BTFSC FLAG,1 ; 離されるまで待つ GOTO $-1 GOTO SETHOUR ; SETMIN BSF FLAG,4 ; 「分」設定モード(数字が点滅) BTFSC FLAG,1 ; セットスイッチが押された? GOTO INCMIN ; BTFSS FLAG,0 ; モードスイッチが押された? GOTO SETMIN BCF FLAG,4 BTFSC FLAG,0 ; モードSWが離されるまで待つ GOTO $-1 GOTO SETEND INCMIN INCF MINUTE,F MOVF MINUTE,W SUBLW D'60' BTFSC STATUS,Z CLRF MINUTE ; BTFSC FLAG,1 ; 離されるまで待つ GOTO $-1 GOTO SETMIN ; SETEND BCF FLAG,2 ; 時刻設定モード終了 CLRF SECLOW ; 秒カウンタ(下位)クリア CLRF SECHIGH ; 秒カウンタ(上位)クリア CLRF SECOND ; 秒をクリア BCF SECFLG,0 ; 秒フラグクリア RETURN ; ;--------------------------------------------------------------------- ; 時刻カウントアップ ;--------------------------------------------------------------------- COUNTUP CALL TGLCOL ; :(コロン)表示をトグル ; BTFSS SECFLG,2 ; 60倍速(デバッグ・デモ)モード? GOTO CNTUPSEC ; BCF SECFLG,3 ; 「時」を文字表示中フラグクリア CALL HOURPTN GOTO CNTUPMIN ; CNTUPSEC INCF SECOND,F ; 秒カウントアップ ; BTFSS SECFLG,3 ; 時を文字表示中? GOTO CNTUP MOVLW D'10' ; 文字表示は、毎時10秒間のみ SUBWF SECOND,W BTFSS STATUS,Z GOTO CNTUP BCF SECFLG,3 CALL MINPTN ; 通常のローマ数字表示に戻す CALL HOURPTN ; CNTUP MOVLW D'60' SUBWF SECOND,W BTFSS STATUS,Z RETURN CLRF SECOND ; 秒クリア ; CNTUPMIN INCF MINUTE,F ; 分カウントアップ MOVLW D'60' SUBWF MINUTE,W BTFSC STATUS,Z GOTO CNTUPHOR CALL MINPTN RETURN ; CNTUPHOR CLRF MINUTE INCF HOUR,F ; 時カウントアップ MOVLW D'13' SUBWF HOUR,W BTFSS STATUS,Z GOTO CNTUPHAP MOVLW D'1' MOVWF HOUR CNTUPHAP CALL HOURWRD ; 時を文字で表示 RETURN ; ;--------------------------------------------------------------------- ; :(コロン)の表示/非表示(呼び出すたびにトグルする) ;--------------------------------------------------------------------- TGLCOL BTFSC SECFLG,3 ; 時を文字表示中なら点滅しない RETURN ; BTFSS DSPBUFC,1 GOTO $+4 BCF SECFLG,1 ; 表示中ならオフ CLRF DSPBUFC ; 表示バッファオフ RETURN BSF SECFLG,1 ; 非表示中ならオン MOVLW B'00000010' MOVWF DSPBUFC ; 表示バッファオン RETURN ; ;--------------------------------------------------------------------- ; 「時」(I,II,III,IV,V,VI,VII,VIII,IX,X,XI,XII)のパターン ;--------------------------------------------------------------------- HOURPTN CLRF OFFSET ; カウンタクリア MOVLW DSPBUFH MOVWF FSR ; 表示バッファアドレス MOVLW D'4' MOVWF WKCNT HOURPTL CALL HOURDT ; 数値の先頭1バイトを取り出す MOVWF INDF ; 表示バッファに書き出す INCF OFFSET,F ; 1バイト進める INCF FSR,F ; 表示バッファを進める DECFSZ WKCNT,F GOTO HOURPTL RETURN ; ORG H'200' HOURDT MOVF OFFSET,F ; 0か判断 BTFSS STATUS,Z ; 0ならOFFSET計算 GOTO HOURDT1 ; ; 0でない→その数字の最初の1列 ; 時を4倍してOFFSETへ MOVF HOUR,W MOVWF TMP BCF STATUS,C ;キャリークリア RLF TMP,F RLF TMP,W MOVWF OFFSET HOURDT1 MOVLW H'02' MOVWF PCLATH MOVF OFFSET,W ADDWF PCL,F ; 0 NON RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 1 I RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'01001000' ; 2 II RETLW B'00000000' RETLW B'00000000' RETLW B'00001100' RETLW B'01001000' ; 3 III RETLW B'00000000' RETLW B'00000000' RETLW B'11001100' RETLW B'01001000' ; 4 IV RETLW B'00000000' RETLW B'01001000' RETLW B'11000000' RETLW B'10010000' ; 5 V RETLW B'00000000' RETLW B'00000000' RETLW B'11000000' RETLW B'10010000' ; 6 VI RETLW B'11000000' RETLW B'10010000' RETLW B'11000000' RETLW B'00000000' ; 7 VII RETLW B'11000000' RETLW B'10010000' RETLW B'11000000' RETLW B'01001000' ; 8 VIII RETLW B'11000000' RETLW B'10010000' RETLW B'11001100' RETLW B'01001000' ; 9 IX RETLW B'00001100' RETLW B'00000000' RETLW B'00000000' RETLW B'10110100' ; 10 X RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'10110100' ; 11 XI RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'01001000' ; 12 XII RETLW B'00000000' RETLW B'10110100' RETLW B'11000000' RETLW B'01001000' ;--------------------------------------------------------------------- ; 「分」(I,II,III, ... ,LIX)のパターン ;--------------------------------------------------------------------- MINPTN CLRF OFFSET ; カウンタクリア MOVLW DSPBUFM MOVWF FSR ; 「分」表示バッファアドレス MOVLW D'10' ; 分は5桁10バイトで表現 MOVWF WKCNT MINPTL CALL MINDAT ; 数値の先頭1バイトを取り出す MOVWF INDF ; 表示バッファに書き出す INCF OFFSET,F ; 1バイト進める INCF FSR,F ; 表示バッファを進める DECFSZ WKCNT,F GOTO MINPTL RETURN ; MINDAT MOVF MINUTE,W SUBLW D'20' BTFSC STATUS,C GOTO MINDT1 MOVF MINUTE,W SUBLW D'40' BTFSC STATUS,C GOTO MINDT2 GOTO MINDT3 ; ORG H'300' MINDT1 MOVF OFFSET,F ; 0か判断 BTFSS STATUS,Z ; 0ならOFFSET計算 GOTO MINDT1D ; ; 0でない→その数字の最初の1列 ; 分を10倍(8倍+分+分)してOFFSETへ MOVF MINUTE,W MOVWF TMP BCF STATUS,C ;キャリークリア RLF TMP,F RLF TMP,F RLF TMP,W ; 8倍 ADDWF MINUTE,W ADDWF MINUTE,W ; 10倍 MOVWF OFFSET MINDT1D MOVLW H'03' MOVWF PCLATH MOVF OFFSET,W ADDWF PCL,F ; 0 NON RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 1I RETLW B'00000000' RETLW B'01001000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 2II RETLW B'00001100' RETLW B'01001000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 3III RETLW B'11001100' RETLW B'01001000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 4IV RETLW B'00000000' RETLW B'01001000' RETLW B'11000000' RETLW B'10010000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 5V RETLW B'11000000' RETLW B'10010000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 6VI RETLW B'11000000' RETLW B'10010000' RETLW B'11000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 7VII RETLW B'11000000' RETLW B'10010000' RETLW B'11000000' RETLW B'01001000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 8VIII RETLW B'11000000' RETLW B'10010000' RETLW B'11001100' RETLW B'01001000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 9IX RETLW B'00000000' RETLW B'01001000' RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 10X RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 11XI RETLW B'00000000' RETLW B'10110100' RETLW B'11000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 12XII RETLW B'00000000' RETLW B'10110100' RETLW B'11000000' RETLW B'01001000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 13XIII RETLW B'00000000' RETLW B'10110100' RETLW B'11001100' RETLW B'01001000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 14XIV RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'01001000' RETLW B'11000000' RETLW B'10010000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 15XV RETLW B'00000000' RETLW B'10110100' RETLW B'11000000' RETLW B'10010000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 16XVI RETLW B'00000000' RETLW B'10110100' RETLW B'11000000' RETLW B'10010000' RETLW B'11000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 17XVII RETLW B'00000000' RETLW B'10110100' RETLW B'11000000' RETLW B'10010000' RETLW B'11000000' RETLW B'01001000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 18XVIII RETLW B'00000000' RETLW B'10110100' RETLW B'11000000' RETLW B'10010000' RETLW B'11001100' RETLW B'01001000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 19XIX RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'01001000' RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 20XX RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; ORG H'400' MINDT2 MOVF OFFSET,F ; 0か判断 BTFSS STATUS,Z ; 0ならOFFSET計算 GOTO MINDT2D ; ; 0でない→その数字の最初の1列 ; 分を10倍(8倍+分+分)してOFFSETへ MOVLW D'21' ; 20マイナス SUBWF MINUTE,W MOVWF TMP2 MOVWF TMP BCF STATUS,C ;キャリークリア RLF TMP,F RLF TMP,F RLF TMP,W ; 8倍 ADDWF TMP2,W ADDWF TMP2,W ; 10倍 MOVWF OFFSET MINDT2D MOVLW H'04' MOVWF PCLATH MOVF OFFSET,W ADDWF PCL,F ; 21XXI RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'11000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 22XXII RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'11000000' RETLW B'01001000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 23XXIII RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'11001100' RETLW B'01001000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 24XXIV RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'01001000' RETLW B'11000000' RETLW B'10010000' RETLW B'00000000' RETLW B'00000000' ; 25XXV RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'11000000' RETLW B'10010000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 26XXVI RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'11000000' RETLW B'10010000' RETLW B'11000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 27XXVII RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'11000000' RETLW B'10010000' RETLW B'11000000' RETLW B'01001000' RETLW B'00000000' RETLW B'00000000' ; 28XXVIII RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'11000000' RETLW B'10010000' RETLW B'11001100' RETLW B'01001000' RETLW B'00000000' RETLW B'00000000' ; 29XXIX RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'01001000' RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'00000000' ; 30XXX RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 31XXXI RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'11000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 32XXXII RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'11000000' RETLW B'01001000' RETLW B'00000000' RETLW B'00000000' ; 33XXXIII RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'11001100' RETLW B'01001000' RETLW B'00000000' RETLW B'00000000' ; 34XXXIV RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'01001000' RETLW B'11000000' RETLW B'10010000' ; 35XXXV RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'11000000' RETLW B'10010000' RETLW B'00000000' RETLW B'00000000' ; 36XXXVI RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'11000000' RETLW B'10010000' RETLW B'11000000' RETLW B'00000000' ; 37XXXVII RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'11000000' RETLW B'10010000' RETLW B'11000000' RETLW B'01001000' ; 38XXXVIII RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'11000000' RETLW B'10010000' RETLW B'11001100' RETLW B'01001000' ; 39XXXIX RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'01001000' RETLW B'00000000' RETLW B'10110100' ; 40XL RETLW B'00000000' RETLW B'10110100' RETLW B'11110000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; ORG H'500' MINDT3 MOVF OFFSET,F ; 0か判断 BTFSS STATUS,Z ; 0ならOFFSET計算 GOTO MINDT3D ; ; 0でない→その数字の最初の1列 ; 分を10倍(8倍+分+分)してOFFSETへ MOVLW D'41' ; 20マイナス SUBWF MINUTE,W MOVWF TMP MOVWF TMP2 BCF STATUS,C ;キャリークリア RLF TMP,F RLF TMP,F RLF TMP,W ; 8倍 ADDWF TMP2,W ADDWF TMP2,W ; 10倍 MOVWF OFFSET MINDT3D MOVLW H'05' MOVWF PCLATH MOVF OFFSET,W ADDWF PCL,F ; 41XLI RETLW B'00000000' RETLW B'10110100' RETLW B'11110000' RETLW B'00000000' RETLW B'11000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 42XLII RETLW B'00000000' RETLW B'10110100' RETLW B'11110000' RETLW B'00000000' RETLW B'11000000' RETLW B'01001000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 43XLIII RETLW B'00000000' RETLW B'10110100' RETLW B'11110000' RETLW B'00000000' RETLW B'11001100' RETLW B'01001000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 44XLIV RETLW B'00000000' RETLW B'10110100' RETLW B'11110000' RETLW B'00000000' RETLW B'00000000' RETLW B'01001000' RETLW B'11000000' RETLW B'10010000' RETLW B'00000000' RETLW B'00000000' ; 45XLV RETLW B'00000000' RETLW B'10110100' RETLW B'11110000' RETLW B'00000000' RETLW B'11000000' RETLW B'10010000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 46XLVI RETLW B'00000000' RETLW B'10110100' RETLW B'11110000' RETLW B'00000000' RETLW B'11000000' RETLW B'10010000' RETLW B'11000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 47XLVII RETLW B'00000000' RETLW B'10110100' RETLW B'11110000' RETLW B'00000000' RETLW B'11000000' RETLW B'10010000' RETLW B'11000000' RETLW B'01001000' RETLW B'00000000' RETLW B'00000000' ; 48XLVIII RETLW B'00000000' RETLW B'10110100' RETLW B'11110000' RETLW B'00000000' RETLW B'11000000' RETLW B'10010000' RETLW B'11001100' RETLW B'01001000' RETLW B'00000000' RETLW B'00000000' ; 49XLIX RETLW B'00000000' RETLW B'10110100' RETLW B'11110000' RETLW B'00000000' RETLW B'00000000' RETLW B'01001000' RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'00000000' ; 50L RETLW B'11110000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 51LI RETLW B'11110000' RETLW B'00000000' RETLW B'11000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 52LII RETLW B'11110000' RETLW B'00000000' RETLW B'11000000' RETLW B'01001000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 53LIII RETLW B'11110000' RETLW B'00000000' RETLW B'11001100' RETLW B'01001000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 54LIV RETLW B'11110000' RETLW B'00000000' RETLW B'00000000' RETLW B'01001000' RETLW B'11000000' RETLW B'10010000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 55LV RETLW B'11110000' RETLW B'00000000' RETLW B'11000000' RETLW B'10010000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 56LVI RETLW B'11110000' RETLW B'00000000' RETLW B'11000000' RETLW B'10010000' RETLW B'11000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 57LVII RETLW B'11110000' RETLW B'00000000' RETLW B'11000000' RETLW B'10010000' RETLW B'11000000' RETLW B'01001000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 58LVIII RETLW B'11110000' RETLW B'00000000' RETLW B'11000000' RETLW B'10010000' RETLW B'11001100' RETLW B'01001000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; 59LIX RETLW B'11110000' RETLW B'00000000' RETLW B'00000000' RETLW B'01001000' RETLW B'00000000' RETLW B'10110100' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ;--------------------------------------------------------------------- ; 明るさの測定 ( 5階調 明:4 - 3 - 2 - 1 - 0:暗) ;--------------------------------------------------------------------- GETBRT BSF ADCON0,0 ; A/Dオン CALL WCHARGE ; チャージ待ち BSF ADCON0,2 ; A/D変換開始 BTFSC ADCON0,2 ; A/D変換が終わるまでループ GOTO $-1 ; BCF ADCON0,0 ; A/Dオフ ; MOVF ADRESH,W ; A/D変換結果を格納(上位8ビットのみ使用) MOVWF NOWVOL SUBWF PRVVOL,W ; 前回の電圧と比較 ; 明るさに敏感に反応しないように差が少なければ変えない BTFSS STATUS,C SUBLW D'0' ; 負なら正に変換 SUBLW D'10' ; 変化が10以下なら BTFSC STATUS,C ; リターン RETURN GETBRT2 MOVF NOWVOL,W GETBRT3 MOVWF TMPVOL CALL VOL2BRT ; 電圧から明るさへの変換 MOVWF BRTNES MOVF NOWVOL,W MOVWF PRVVOL RETURN ; VOL2BRT ; 明るさへの変換 BTFSC TMPVOL,7 ; 電圧が高い(暗い) RETLW D'0' BTFSC TMPVOL,6 ; RETLW D'1' BTFSC TMPVOL,5 ; RETLW D'2' BTFSC TMPVOL,4 ; RETLW D'3' RETLW D'4' ; 明るい ;--------------------------------------------------------------------- WCHARGE ; 約20usec MOVLW D'20' MOVWF WKCNT WCHGLP DECFSZ WKCNT,F GOTO WCHGLP RETURN ; ;--------------------------------------------------------------------- ; Waitルーチン ;--------------------------------------------------------------------- WAIT20US ; 20us wait ( 64cycle .. 1cycle = 0.313us) MOVLW D'20' ;1cycle MOVWF WAIT ;1cycle W20USLP DECFSZ WAIT,F ;1cycle*19+2cycle=21cycle GOTO W20USLP ;2cycle*19 =38cycle NOP ;1cycle RETURN ;2cycle ; ;--------------------------------------------------------------------- ; 起動メッセージ ;--------------------------------------------------------------------- DIAGMSG MOVLW D'0' MOVWF MSGNO DMSGL1 CLRF OFFSET ; カウンタクリア MOVLW DSPBUFH MOVWF FSR ; 表示バッファアドレス ; SWAPF MSGNO,W ; アドレス計算(16倍) MOVWF OFFSET MOVLW D'16' MOVWF WKCNT DMSGL2 CALL DMSGDT ; 数値の先頭1バイトを取り出す MOVWF INDF ; 表示バッファに書き出す INCF OFFSET,F ; 1バイト進める INCF FSR,F ; 表示バッファを進める DECFSZ WKCNT,F GOTO DMSGL2 ; BCF SECFLG,0 ; 秒フラグクリア BTFSS SECFLG,0 ; 1秒待つ GOTO $-1 BCF SECFLG,0 ; 秒フラグクリア BTFSS SECFLG,0 ; 1秒待つ GOTO $-1 ; INCF MSGNO,F MOVLW D'4' SUBWF MSGNO,W BTFSS STATUS,Z GOTO DMSGL1 ; CALL CLRBUF ; 消灯 BCF SECFLG,0 ; 秒フラグクリア BTFSS SECFLG,0 ; 1秒待つ GOTO $-1 BCF SECFLG,0 ; 秒フラグクリア BTFSS SECFLG,0 ; 1秒待つ GOTO $-1 BCF SECFLG,0 ; 秒フラグクリア RETURN ; DMSGDT MOVLW H'06' MOVWF PCLATH MOVF OFFSET,W ADDWF PCL,F ; ROMAN RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; コロンの桁 RETLW B'00000000' ; 〃 RETLW B'11000111' RETLW B'00100011' RETLW B'11111111' RETLW B'00000000' RETLW B'11001100' RETLW B'00010100' RETLW B'11001111' RETLW B'00000011' RETLW B'11001100' RETLW B'00100100' ; NUMERAL RETLW B'11001100' RETLW B'00100100' RETLW B'11111100' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'11001100' RETLW B'00010100' RETLW B'11110011' RETLW B'00000011' RETLW B'11000111' RETLW B'00100011' RETLW B'11001111' RETLW B'00000011' RETLW B'11110000' RETLW B'00000000' ; DIGITAL RETLW B'00111111' RETLW B'01001000' RETLW B'00110011' RETLW B'01001000' RETLW B'00000000' RETLW B'00000000' RETLW B'11111011' RETLW B'00000010' RETLW B'00110011' RETLW B'01001000' RETLW B'00000011' RETLW B'01001000' RETLW B'11001111' RETLW B'00000011' RETLW B'11110000' RETLW B'00000000' ; CLOCK RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'11110011' RETLW B'00000000' RETLW B'11110000' RETLW B'00000000' RETLW B'11111111' RETLW B'00000000' RETLW B'11110011' RETLW B'00000000' RETLW B'11000000' RETLW B'00110001' ;--------------------------------------------------------------------- ; 英語表記 ONE, TWO, ... ; (Wレジ1〜12の数値に対応するパターンを表示) ;--------------------------------------------------------------------- ORG H'700' HOURWRD MOVF HOUR,W MOVWF MSGNO DECF MSGNO,F BSF SECFLG,3 ; 文字表示中フラグ ; CLRF OFFSET ; カウンタクリア MOVLW DSPBUFH MOVWF FSR ; 表示バッファアドレス ; SWAPF MSGNO,W ; アドレス計算 16倍 MOVWF OFFSET MOVLW D'16' MOVWF WKCNT HWRD2 CALL HWRDDT ; 数値の先頭1バイトを取り出す MOVWF INDF ; 表示バッファに書き出す INCF OFFSET,F ; 1バイト進める INCF FSR,F ; 表示バッファを進める DECFSZ WKCNT,F GOTO HWRD2 RETURN HWRDDT MOVLW H'07' MOVWF PCLATH MOVF OFFSET,W ADDWF PCL,F ; ; 'ONE' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' ; コロンの桁 RETLW B'00000000' ; 〃 RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'11111111' RETLW B'00000000' RETLW B'11001100' RETLW B'00100100' RETLW B'11110011' RETLW B'00000011' ; ; 'TWO' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000011' RETLW B'01001000' RETLW B'11001100' RETLW B'10100000' RETLW B'11111111' RETLW B'00000000' ; ; 'THREE' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000011' RETLW B'01001000' RETLW B'11001100' RETLW B'00000011' RETLW B'11000111' RETLW B'00100011' RETLW B'11110011' RETLW B'00000011' RETLW B'11110011' RETLW B'00000011' ; ; 'FOUR' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'11000011' RETLW B'00000011' RETLW B'11111111' RETLW B'00000000' RETLW B'11111100' RETLW B'00000000' RETLW B'11000111' RETLW B'00100011' ; ; 'FIVE' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'11000011' RETLW B'00000011' RETLW B'00110011' RETLW B'01001000' RETLW B'11000000' RETLW B'10010000' RETLW B'11110011' RETLW B'00000011' ; ; 'SIX' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'10111011' RETLW B'00000011' RETLW B'00110011' RETLW B'01001000' RETLW B'00000000' RETLW B'10110100' ; ; 'SEVEN' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'10111011' RETLW B'00000011' RETLW B'11110011' RETLW B'00000011' RETLW B'11000000' RETLW B'10010000' RETLW B'11110011' RETLW B'00000011' RETLW B'11001100' RETLW B'00100100' ; ; 'EIGHT' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'11110011' RETLW B'00000011' RETLW B'00110011' RETLW B'01001000' RETLW B'11111011' RETLW B'00000010' RETLW B'11001100' RETLW B'00000011' RETLW B'00000011' RETLW B'01001000' ; ; 'NINE' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'11001100' RETLW B'00100100' RETLW B'00110011' RETLW B'01001000' RETLW B'11001100' RETLW B'00100100' RETLW B'11110011' RETLW B'00000011' ; ; 'TEN' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000011' RETLW B'01001000' RETLW B'11110011' RETLW B'00000011' RETLW B'11001100' RETLW B'00100100' ; ; 'ELEVEN' RETLW B'00000000' RETLW B'00000000' RETLW B'11110011' RETLW B'00000011' RETLW B'00000000' RETLW B'00000000' RETLW B'11110000' RETLW B'00000000' RETLW B'11110011' RETLW B'00000011' RETLW B'11000000' RETLW B'10010000' RETLW B'11110011' RETLW B'00000011' RETLW B'11001100' RETLW B'00100100' ; ; 'TWELVE' RETLW B'00000000' RETLW B'00000000' RETLW B'00000011' RETLW B'01001000' RETLW B'00000000' RETLW B'00000000' RETLW B'11001100' RETLW B'10100000' RETLW B'11110011' RETLW B'00000011' RETLW B'11110000' RETLW B'00000000' RETLW B'11000000' RETLW B'10010000' RETLW B'11110011' RETLW B'00000011' ;--------------------------------------------------------------------- END ;--------------------------------------------------------------------- ; 終わり ;---------------------------------------------------------------------