2017.7.26
前へ
次へ
ホームページトップへ戻る

マイコン独立大作戦
ROM/RAM/RTCボードの製作

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
WindowsパソコンにUSB接続して使う現行方式はそれなりに便利ではありますが、ときとしてWindows
のしがらみから開放されて、小さいながらも独立した一個のパソコンとして機能したいと思うこともあります。
独立大作戦の作戦その1はCRTインターフェースボードの製作です。
作戦その2はキーボードインターフェースです。
作戦その3は、SDカードインターフェースです。
作戦その4は、ROM/RAM/RTCボードです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第13回]


DATE$,TIME$

またまた久しぶりの更新になってしまいました。
前回も書きましたようにこのところやらなくてはならない作業が山積みでなかなかHPの更新をしている時間が取れません。
気長なお付き合いをお願いします。

この間からDS1307について書いています。
DS1307を使うそもそもの目的はログファイルに日付データが必要なので、ということだったのですが、実はもうひとつせっかくRTC(リアルタイムクロック)を搭載するということになりましたら、ぜひともそれを利用して組み込みたい機能があります。
それが今回のテーマであります、DATE$とTIME$です。
どちらもBASICでおなじみのシステム変数です。
文字変数なのですがDATE$はYY/MM/DDという8バイトの現在の日付を保持します。
またTIME$はHH:MM:SSという8バイトの現在時刻を保持します。
現行のND80Z3.5、ND8080、MYCPU80のZB3BASICにもDATE$、TIME$はありますが、それはWindowsパソコンと接続してWindows上の日付、時刻データをUSB接続を介して取得していますから、Windowsパソコンを離れて独立してしまうとDATE$もTIME$も機能しなくなってしまいます。
そこでせっかくDS1307を使うのでしたら、先に紹介しましたDS1307のテストプログラムを利用して、DATE$、TIME$に組み込みたいと考えました。
それでここ2日ほどちょいと空いた時間を利用してそのためのテスト作業を行ないました。
まだ完全に組み込むところまではできていませんが、そのすぐ前のところまではなんとか出来上がりました。
実はその過程で、前に書きましたDS1307の通信プログラムに間違いがあることがわかりましたのでまずはそれについて書くことにします。

下はとりあえずND80Z3.5(USB接続型)のRAM上で動作するテスト版のプログラムを実行したときのログの一部です。
最初はうまく出来たと思ったのですが、繰り返し実行すると必ず2回目にエラーが発生してしまいます。

>/ld dtsb1b.bin,9000
loading DTSB1B.BIN ...0224(548)bytes loaded,from 9000 to 9223
>jp 9006
ERTC
>jp 9006
>jp 9006
ERTC
>jp 9006
>jp 9006
ERTC
>jp 9006
>jp 9006
ERTC
>bp 9219
>jp 9006
>jp 9006

A F  B C  D E  H L  A'F' B'C' D'E' H'L'  PC   SP   IX   IY  I  SZ H PNC
0110 0000 D007 9006 2F28 0000 0000 0000 9219 F7F4 0000 0000 FF 00010000
>jp 9006
>dm f2e2,f2ef
F2E2  31 37 2F 30 37 2F 32 35-4B BE F0 ED 5B BC F0 2A  17/07/25Kセ..[シ.*
>jp 9009
ERTC
>jp 9009
>dm f2e2,f2ef
F2E2  32 32 3A 33 34 3A 32 35-4B BE F0 ED 5B BC F0 2A  22:34:25Kセ..[シ.*
>/ld dtsb1c.bin,9000
loading DTSB1C.BIN ...0238(568)bytes loaded,from 9000 to 9237
>jp 9006
ERTC
>jp 9006
>jp 9006
>jp 9006
>jp 9009
>dm f2e2,f2ef
F2E2  32 32 3A 35 31 3A 35 31-4B BE F0 ED 5B BC F0 2A  22:51:51Kセ..[シ.*

JP 9006というのが日付データをDS1307から読み込むプログラムへのジャンプで、ERTCというのがそこでエラーが発生したことを示すメッセージです。
エラーの発生したと思われるところにブレークポイントを設定して実行したところ、どういうわけか2回目のDS1307への送信でDS1307からNACKが返ってくるらしいことがわかりました。
どうも2回目に限ってDS2307がビジーになるようです。
なぜ?
ということでそのあたりのプログラムです。
もとのプログラムリストは[第9回]でお見せしました。
ごく一部を除いてそこでお見せしたプログラムと同じです。

;
; 8bit DATA IN
; A in data
SIN8:PUSH BC
        LD B,08
SIN81:CALL T5US
        IN A,(90)
        RRCA
        RL C
        LD A,F0;scl=H,sdt=H
        OUT (90),A
        CALL T5US
        AND D0;scl=L
        OUT (90),A
        DJNZ SIN81
        LD A,C0;scl=L,sdt=L ACK
        OUT (90),A
        CALL T5US
        OR 20;scl=H
        OUT (90),A
        CALL T5US
        AND D0;scl=L
        OUT (90),A
        CALL T5US
        LD A,C
        POP BC
        RET

ここに問題があることがわかりました。
[第11回]で「DS1307のDatasheetではデータ受信を終了するときは最後のデータの終わりにNACKを送るとありますがプログラムが複雑になるためACKを送ったあとSTOPを出力していますが特に問題はありません」と書きましたがそこが間違っていました。
2度目にエラーが発生してしまうのは、そこに問題があったからでした。
NACKを送らずにACKのあとSTOPを出力したためDS1307はデータを送信するモードのままスタンバイしていたのでした。
その状態で再び読み出しプログラムを実行するためにレジスタbフ送信を行なったため、DS1307はCPUが受信を再開せずにいきなりデータ送信を開始しようとしたので、「それは手続きが違うでしょうよ」ということでNACKで答えたのだろうと推測しました。

そこでデータ受信の最後はACKの代わりにNACKを送るようにしたところエラーは発生しなくなりました。

        LD HL,TMDTBF
        LD B,06
RTCRD1:CALL RTCSIN8
        CALL ACKOUT
        JP NZ,RTCRD1
        CALL RTCSIN8;last 1byte
        CALL NCKOUT
        ;stop
        LD A,E0;scl=H,sdt=L
        OUT (90),A
        CALL T5US
        LD A,F0;sdt=H
        OUT (90),A


今回の最初のところでお見せしたログの最後のあたりがそのように変更したあとのプログラムを実行しているところです。
下に今回作成したプログラムのリストを示します。

;date$,time$ test program
;17/7/25 7/26
;
        TMDTBF=$F904
        TMDTBF2=$F908
        TMHH=$F2E2
        TMSS=$F2E9
        TDSW=$F2F0
;
        DEDP=$1018
        REENT=$1033
        LETS2=$2009
;
        ORG $9000
;
        JP WDATE
        JP WTIME
        JP RDT
        JP RTM
;
        
RDT:CALL RDATE
        JP REENT
RTM:CALL RTIME
        JP REENT
;
;;; DATE WRITE
WDATE:LD A,01
JP TMWT1
;;; TIME WRITE
WTIME:XOR A
TMWT1:LD (TDSW),A
INC DE
LD A,(DE)
        CP 3D;CP 9A ;= *******
JP NZ,ER37
INC DE
CALL LETS2
JP C,ER37
PUSH DE
LD A,C
CP 08
JP NZ,ER37
EX DE,HL
CALL TMSB1
PUSH BC
INC DE
CALL TMSB1
PUSH BC
INC DE
CALL TMSB1
;
        LD HL,TMDTBF
        LD A,(TDSW)
        OR A
        JP Z,TMWT12;time$
        LD HL,TMDTBF2
TMWT12:CALL WSUB
POP BC
CALL WSUB
POP BC
CALL WSUB
CALL RTCWR
POP DE
JP REENT;******
;
;;; DATE READ
RDATE:LD A,2F
JP TMRD0
;;; TIME READ
RTIME:LD A,3A
TMRD0:LD (TDSW),A
;
PUSH DE
TMRD1:CALL RTCRD
LD HL,TMDTBF
        LD A,(TDSW)
        CP 3A
JP Z,TMR12;time$
LD HL,TMDTBF2
TMR12:CALL RSUB
PUSH BC
CALL RSUB
PUSH BC
CALL RSUB
LD HL,TMHH
LD (HL),B
INC HL
LD (HL),C
INC HL
LD A,(TDSW)
LD (HL),A
INC HL
POP BC
LD (HL),B
INC HL
LD (HL),C
INC HL
LD (HL),A
INC HL
POP BC
LD (HL),B
INC HL
LD (HL),C
LD HL,TMHH
LD BC,$0008
POP DE
RET
;;;
TMSB1:CALL TMSB2
LD B,A
CALL TMSB2
LD C,A
RET
TMSB2:LD A,(DE)
CP 30
JP C,ER37
CP 3A
JP NC,ER37
AND 0F
INC DE
RET
;
WSUB:LD A,B
WSUB1:RLA
        RLA
        RLA
        RLA
        OR C
WSUB2:LD (HL),A
INC HL
RET
;
RSUB:LD A,(HL)
RSUB1:LD B,A
        AND 0F
        OR 30
        LD C,A
        LD A,B
        RRA
        RRA
        RRA
        RRA
        AND 0F
        OR 30
        LD B,A
        INC HL
        RET
;
;rtcdata write from buffer
RTCWR:LD A,F0;scl=H,sdt=H
        OUT (90),A
        CALL T5US
        LD A,E0;scl=H,sdt=L;start
        OUT (90),A
        CALL T5US
        AND D0;scl=L
        OUT (90),A
        CALL T5US
        LD A,D0;DS1357ID+WR
        CALL SOUT8
        LD A,00;register address
        CALL SOUT8
        LD HL,TMDTBF
        LD B,07
WR1:LD A,(HL)
        CALL SOUT8
        INC HL
        DEC B
        JP NZ,WR1
        LD A,10
        CALL SOUT8
        ;stop
        LD A,E0;scl=H,sdt=L
        OUT (90),A
        CALL T5US
        LD A,F0;sdt=H
        OUT (90),A
        RET
;
;rtcdata read to buffer
RTCRD:LD A,F0;scl=H,sdt=H
        OUT (90),A
        CALL T5US
        LD A,E0;scl=H,sdt=L;start
        OUT (90),A
        CALL T5US
        AND D0;scl=L
        OUT (90),A
        CALL T5US
        LD A,D0;DS1357ID+WR
        CALL SOUT8
        LD A,00;register address
        CALL SOUT8
        LD A,F0;scl=H,sdt=H
        OUT (90),A
        CALL T5US
        LD A,E0;scl=H,sdt=L;restart
        OUT (90),A
        CALL T5US
        AND D0;scl=L
        OUT (90),A
        CALL T5US
        LD A,D1;DS1357ID+RD
        CALL SOUT8
        LD HL,TMDTBF
        LD B,06
RTCRD1:CALL RTCSIN8
        CALL ACKOUT
        JP NZ,RTCRD1
        CALL RTCSIN8;last 1byte
        CALL NCKOUT
        ;stop
        LD A,E0;scl=H,sdt=L
        OUT (90),A
        CALL T5US
        LD A,F0;sdt=H
        OUT (90),A
        DEC HL
        DEC HL
        LD A,(HL);month
        AND 1F
        LD (HL),A
        DEC HL
        LD A,(HL);day
        AND 3F
        LD (HL),A
        DEC HL
        DEC HL
        LD A,(HL);hour
        AND 3F
        LD (HL),A
        DEC HL
        LD A,(HL);minute
        AND 7F
        LD (HL),A
        DEC HL
        LD A,(HL);second
        AND 7F
        LD (HL),A
        RET
NCKOUT:PUSH AF
        LD A,D0;scl=L,sdt=H NACK
        JP ACKOUT2
ACKOUT:PUSH AF
        LD A,C0;scl=L,sdt=L ACK
ACKOUT2:OUT (90),A
        OR 20;scl=H
        OUT (90),A
        CALL T5US
        AND D0;scl=L
        OUT (90),A
        CALL T5US
        POP AF
        RET
;
; 8bit DATA OUT
; A outdata
SOUT8:PUSH BC
        LD B,08
        LD C,A
SOUT81:RLC C
        JP C,SOUTH
        AND E0
        JP SOUT82
SOUTH:OR 10
SOUT82:OUT (90),A
        OR 20;scl=H
        OUT (90),A
        CALL T5US
        AND D0;scl=L
        OUT (90),A
        CALL T5US
        DJNZ SOUT81
        OR 10;sdt=H
        OUT (90),A
        OR 20;scl=H
        OUT (90),A
        IN A,(90);ACK
        AND 01
        JP NZ,ERTC
        CALL T5US
        AND D0;scl=L
        OUT (90),A
        CALL T5US
        POP BC
        RET
;
; 8bit DATA IN
; A in data
SIN8:PUSH BC
        LD B,08
SIN81:CALL T5US
        IN A,(90)
        RRCA
        RL C
        LD A,F0;scl=H,sdt=H
        OUT (90),A
        CALL T5US
        AND D0;scl=L
        OUT (90),A
        DJNZ SIN81
        LD A,C
        POP BC
        RET
;
RTCSIN8:PUSH BC
        CALL SIN8
        LD (HL),A
        INC HL
        POP BC
        DEC B
        RET
;
;5us timer clock 6MHz
T5US:NOP
        RET
;
ER37:LD DE,ER37T
ER37_2:CALL DEDP
        JP REENT
ER37T:"ER37"
        DB 0D
ERTC:LD DE,ERTCT
        JP ER37_2
ERTCT:"ERTC"
        DB 0D
;
;END


下はアセンブルリストです。

2017/7/26  21:33  dtsb1e.txt
END=9225
              ;date$,time$ test program
              ;17/7/25 7/26
              ;
                TMDTBF=$F904
                TMDTBF2=$F908
                TMHH=$F2E2
                TMSS=$F2E9
                TDSW=$F2F0
              ;
                DEDP=$1018
                REENT=$1033
                LETS2=$2009
              ;
                ORG $9000
              ;
9000 C31890     JP WDATE
9003 C31D90     JP WTIME
9006 C30C90     JP RDT
9009 C31290     JP RTM
              ;
                
900C CD6390   RDT:CALL RDATE
900F C33310     JP REENT
9012 CD6890   RTM:CALL RTIME
9015 C33310     JP REENT
              ;
              ;;; DATE WRITE
9018 3E01     WDATE:LD A,01
901A C31E90   JP TMWT1
              ;;; TIME WRITE
901D AF       WTIME:XOR A
901E 32F0F2   TMWT1:LD (TDSW),A
9021 13       INC DE
9022 1A       LD A,(DE)
9023 FE3D       CP 3D;CP 9A ;= *******
9025 C20D92   JP NZ,ER37
9028 13       INC DE
9029 CD0920   CALL LETS2
902C DA0D92   JP C,ER37
902F D5       PUSH DE
9030 79       LD A,C
9031 FE08     CP 08
9033 C20D92   JP NZ,ER37
9036 EB       EX DE,HL
9037 CDA990   CALL TMSB1
903A C5       PUSH BC
903B 13       INC DE
903C CDA990   CALL TMSB1
903F C5       PUSH BC
9040 13       INC DE
9041 CDA990   CALL TMSB1
              ;
9044 2104F9     LD HL,TMDTBF
9047 3AF0F2     LD A,(TDSW)
904A B7         OR A
904B CA5190     JP Z,TMWT12;time$
904E 2108F9     LD HL,TMDTBF2
9051 CDC190   TMWT12:CALL WSUB
9054 C1       POP BC
9055 CDC190   CALL WSUB
9058 C1       POP BC
9059 CDC190   CALL WSUB
905C CDDD90   CALL RTCWR
905F D1       POP DE
9060 C33310   JP REENT;******
              ;
              ;;; DATE READ
9063 3E2F     RDATE:LD A,2F
9065 C36A90   JP TMRD0
              ;;; TIME READ
9068 3E3A     RTIME:LD A,3A
906A 32F0F2   TMRD0:LD (TDSW),A
              ;
906D D5       PUSH DE
906E CD1B91   TMRD1:CALL RTCRD
9071 2104F9   LD HL,TMDTBF
9074 3AF0F2     LD A,(TDSW)
9077 FE3A       CP 3A
9079 CA7F90   JP Z,TMR12;time$
907C 2108F9   LD HL,TMDTBF2
907F CDCA90   TMR12:CALL RSUB
9082 C5       PUSH BC
9083 CDCA90   CALL RSUB
9086 C5       PUSH BC
9087 CDCA90   CALL RSUB
908A 21E2F2   LD HL,TMHH
908D 70       LD (HL),B
908E 23       INC HL
908F 71       LD (HL),C
9090 23       INC HL
9091 3AF0F2   LD A,(TDSW)
9094 77       LD (HL),A
9095 23       INC HL
9096 C1       POP BC
9097 70       LD (HL),B
9098 23       INC HL
9099 71       LD (HL),C
909A 23       INC HL
909B 77       LD (HL),A
909C 23       INC HL
909D C1       POP BC
909E 70       LD (HL),B
909F 23       INC HL
90A0 71       LD (HL),C
90A1 21E2F2   LD HL,TMHH
90A4 010800   LD BC,$0008
90A7 D1       POP DE
90A8 C9       RET
              ;;;
90A9 CDB290   TMSB1:CALL TMSB2
90AC 47       LD B,A
90AD CDB290   CALL TMSB2
90B0 4F       LD C,A
90B1 C9       RET
90B2 1A       TMSB2:LD A,(DE)
90B3 FE30     CP 30
90B5 DA0D92   JP C,ER37
90B8 FE3A     CP 3A
90BA D20D92   JP NC,ER37
90BD E60F     AND 0F
90BF 13       INC DE
90C0 C9       RET
              ;
90C1 78       WSUB:LD A,B
90C2 17       WSUB1:RLA
90C3 17         RLA
90C4 17         RLA
90C5 17         RLA
90C6 B1         OR C
90C7 77       WSUB2:LD (HL),A
90C8 23       INC HL
90C9 C9       RET
              ;
90CA 7E       RSUB:LD A,(HL)
90CB 47       RSUB1:LD B,A
90CC E60F       AND 0F
90CE F630       OR 30
90D0 4F         LD C,A
90D1 78         LD A,B
90D2 1F         RRA
90D3 1F         RRA
90D4 1F         RRA
90D5 1F         RRA
90D6 E60F       AND 0F
90D8 F630       OR 30
90DA 47         LD B,A
90DB 23         INC HL
90DC C9         RET
              ;
              ;rtcdata write from buffer
90DD 3EF0     RTCWR:LD A,F0;scl=H,sdt=H
90DF D390       OUT (90),A
90E1 CD0B92     CALL T5US
90E4 3EE0       LD A,E0;scl=H,sdt=L;start
90E6 D390       OUT (90),A
90E8 CD0B92     CALL T5US
90EB E6D0       AND D0;scl=L
90ED D390       OUT (90),A
90EF CD0B92     CALL T5US
90F2 3ED0       LD A,D0;DS1357ID+WR
90F4 CDAA91     CALL SOUT8
90F7 3E00       LD A,00;register address
90F9 CDAA91     CALL SOUT8
90FC 2104F9     LD HL,TMDTBF
90FF 0607       LD B,07
9101 7E       WR1:LD A,(HL)
9102 CDAA91     CALL SOUT8
9105 23         INC HL
9106 05         DEC B
9107 C20191     JP NZ,WR1
910A 3E10       LD A,10
910C CDAA91     CALL SOUT8
                ;stop
910F 3EE0       LD A,E0;scl=H,sdt=L
9111 D390       OUT (90),A
9113 CD0B92     CALL T5US
9116 3EF0       LD A,F0;sdt=H
9118 D390       OUT (90),A
911A C9         RET
              ;
              ;rtcdata read to buffer
911B 3EF0     RTCRD:LD A,F0;scl=H,sdt=H
911D D390       OUT (90),A
911F CD0B92     CALL T5US
9122 3EE0       LD A,E0;scl=H,sdt=L;start
9124 D390       OUT (90),A
9126 CD0B92     CALL T5US
9129 E6D0       AND D0;scl=L
912B D390       OUT (90),A
912D CD0B92     CALL T5US
9130 3ED0       LD A,D0;DS1357ID+WR
9132 CDAA91     CALL SOUT8
9135 3E00       LD A,00;register address
9137 CDAA91     CALL SOUT8
913A 3EF0       LD A,F0;scl=H,sdt=H
913C D390       OUT (90),A
913E CD0B92     CALL T5US
9141 3EE0       LD A,E0;scl=H,sdt=L;restart
9143 D390       OUT (90),A
9145 CD0B92     CALL T5US
9148 E6D0       AND D0;scl=L
914A D390       OUT (90),A
914C CD0B92     CALL T5US
914F 3ED1       LD A,D1;DS1357ID+RD
9151 CDAA91     CALL SOUT8
9154 2104F9     LD HL,TMDTBF
9157 0606       LD B,06
9159 CD0292   RTCRD1:CALL RTCSIN8
915C CD9591     CALL ACKOUT
915F C25991     JP NZ,RTCRD1
9162 CD0292     CALL RTCSIN8;last 1byte
9165 CD8F91     CALL NCKOUT
                ;stop
9168 3EE0       LD A,E0;scl=H,sdt=L
916A D390       OUT (90),A
916C CD0B92     CALL T5US
916F 3EF0       LD A,F0;sdt=H
9171 D390       OUT (90),A
9173 2B         DEC HL
9174 2B         DEC HL
9175 7E         LD A,(HL);month
9176 E61F       AND 1F
9178 77         LD (HL),A
9179 2B         DEC HL
917A 7E         LD A,(HL);day
917B E63F       AND 3F
917D 77         LD (HL),A
917E 2B         DEC HL
917F 2B         DEC HL
9180 7E         LD A,(HL);hour
9181 E63F       AND 3F
9183 77         LD (HL),A
9184 2B         DEC HL
9185 7E         LD A,(HL);minute
9186 E67F       AND 7F
9188 77         LD (HL),A
9189 2B         DEC HL
918A 7E         LD A,(HL);second
918B E67F       AND 7F
918D 77         LD (HL),A
918E C9         RET
918F F5       NCKOUT:PUSH AF
9190 3ED0       LD A,D0;scl=L,sdt=H NACK
9192 C39891     JP ACKOUT2
9195 F5       ACKOUT:PUSH AF
9196 3EC0       LD A,C0;scl=L,sdt=L ACK
9198 D390     ACKOUT2:OUT (90),A
919A F620       OR 20;scl=H
919C D390       OUT (90),A
919E CD0B92     CALL T5US
91A1 E6D0       AND D0;scl=L
91A3 D390       OUT (90),A
91A5 CD0B92     CALL T5US
91A8 F1         POP AF
91A9 C9         RET
              ;
              ; 8bit DATA OUT
              ; A outdata
91AA C5       SOUT8:PUSH BC
91AB 0608       LD B,08
91AD 4F         LD C,A
91AE CB01     SOUT81:RLC C
91B0 DAB891     JP C,SOUTH
91B3 E6E0       AND E0
91B5 C3BA91     JP SOUT82
91B8 F610     SOUTH:OR 10
91BA D390     SOUT82:OUT (90),A
91BC F620       OR 20;scl=H
91BE D390       OUT (90),A
91C0 CD0B92     CALL T5US
91C3 E6D0       AND D0;scl=L
91C5 D390       OUT (90),A
91C7 CD0B92     CALL T5US
91CA 10E2       DJNZ SOUT81
91CC F610       OR 10;sdt=H
91CE D390       OUT (90),A
91D0 F620       OR 20;scl=H
91D2 D390       OUT (90),A
91D4 DB90       IN A,(90);ACK
91D6 E601       AND 01
91D8 C21B92     JP NZ,ERTC
91DB CD0B92     CALL T5US
91DE E6D0       AND D0;scl=L
91E0 D390       OUT (90),A
91E2 CD0B92     CALL T5US
91E5 C1         POP BC
91E6 C9         RET
              ;
              ; 8bit DATA IN
              ; A in data
91E7 C5       SIN8:PUSH BC
91E8 0608       LD B,08
91EA CD0B92   SIN81:CALL T5US
91ED DB90       IN A,(90)
91EF 0F         RRCA
91F0 CB11       RL C
91F2 3EF0       LD A,F0;scl=H,sdt=H
91F4 D390       OUT (90),A
91F6 CD0B92     CALL T5US
91F9 E6D0       AND D0;scl=L
91FB D390       OUT (90),A
91FD 10EB       DJNZ SIN81
91FF 79         LD A,C
9200 C1         POP BC
9201 C9         RET
              ;
9202 C5       RTCSIN8:PUSH BC
9203 CDE791     CALL SIN8
9206 77         LD (HL),A
9207 23         INC HL
9208 C1         POP BC
9209 05         DEC B
920A C9         RET
              ;
              ;5us timer clock 6MHz
920B 00       T5US:NOP
920C C9         RET
              ;
920D 111692   ER37:LD DE,ER37T
9210 CD1810   ER37_2:CALL DEDP
9213 C33310     JP REENT
9216 45523337 ER37T:"ER37"
921A 0D         DB 0D
921B 112192   ERTC:LD DE,ERTCT
921E C31092     JP ER37_2
9221 45525443 ERTCT:"ERTC"
9225 0D         DB 0D
              ;
              ;ENDACKOUT       =9195  ACKOUT2      =9198  DEDP         =1018  
ER37         =920D  ER37T        =9216  ER37_2       =9210  
ERTC         =921B  ERTCT        =9221  LETS2        =2009  
NCKOUT       =918F  RDATE        =9063  RDT          =900C  
REENT        =1033  RSUB         =90CA  RSUB1        =90CB  
RTCRD        =911B  RTCRD1       =9159  RTCSIN8      =9202  
RTCWR        =90DD  RTIME        =9068  RTM          =9012  
SIN8         =91E7  SIN81        =91EA  SOUT8        =91AA  
SOUT81       =91AE  SOUT82       =91BA  SOUTH        =91B8  
T5US         =920B  TDSW         =F2F0  TMDTBF       =F904  
TMDTBF2      =F908  TMHH         =F2E2  TMR12        =907F  
TMRD0        =906A  TMRD1        =906E  TMSB1        =90A9  
TMSB2        =90B2  TMSS         =F2E9  TMWT1        =901E  
TMWT12       =9051  WDATE        =9018  WR1          =9101  
WSUB         =90C1  WSUB1        =90C2  WSUB2        =90C7  
WTIME        =901D  


下はUSB接続型ND80Z3.5のRAM上で実行中の画面です。



アドレス9000が日付セット、9003が時刻セット、9006が日付読み出し、9009が時刻読み出しです。
データバッファとしてF2E2〜F2E9を使っています。

ROM/RAM/RTCボードの製作[第13回]
2017.7.26upload

前へ
次へ
ホームページトップへ戻る