8080マイコンをつくろう!(TK−80完全復活!)
なんと8080です!
もちろん、BASICからCP/Mまで、できます!
36年の時を経ていまよみがえる
8080CPUマイコン組立キット!
なんたってはるか昔の生産中止品を集めて作る組立キットです。
生産前から堂々予告です。
入手できなくなったら
即生産終了!売り切れ御免!




2016.4.2

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

[第14回]

●ND8080のチャタリングタイマーを補正しました

[第12回]で書きましたようにTK−80はメモリアクセスに1クロックのウェイトをかけていたために、カタログ通りの命令クロックで計算したよりも2割くらい実行速度が遅くなっていました。
ND8080はTK−80と同じ18.432MHzのクリスタルを使っていますが、メモリアクセスにウェイトはかけていませんから、カタログ値通りの速度でプログラムが実行されます。
もっとも厳密に言えば、数msに1回、LEDのダイナミック表示のためのDMA(direct memory access)によって、ほんのわずかですがCPUにウェイトがかかりますから、その分だけ実行時間は遅れますが、通常それは無視できるほどの遅れです。
しかしメモリアクセスのたびに1クロックのウェイトがかかるのと、かからないのとでは実行時間に大きな差が生じます。
[第12回]で計算しましたように、TK−80のチャタリングタイマープログラムをそのままウェイトがかかっていないND8080で実行すると、下のリストのように大きく違ってきてしまいます。

             ;
              ;CHATTERING TIMER
              ;
	      ;D1=4.5112ms
              ;D2=9.0176ms
              ;D3=27.0176ms
              	ORG $02DD
02DD 1624     D1:MVI D,24;=36 ck=7 (7+202*36+10)/2.048=7289/2.048=3559.082microsec
02DF 1E0C     D1_2:MVI E,0C;=12 ck=7  7+15*12+15=202
02E1 1D       D1_3:DCR E;       ck=5
02E2 C2E102   	JNZ D1_3; ck=10
02E5 15       	DCR D;    ck=5    
02E6 C2DF02   	JNZ D1_2; ck=10
02E9 C9       	RET;      ck=10
02EA 1648     D2:MVI D,48;=72  (7+10+202*72+10)/2.048=14571/2.048=7114.746microsec
02EC C3DF02   	JMP D1_2
02EF 16D8     D3:MVI D,D8;=216 (7+10+202*216+10)/2.048=43659/2.048=21317.871microsec
02F1 C3DF02   	JMP D1_2


これではオリジナルのタイマーに対して数値が違いすぎますので、それに近い数字になるようにD1_2の値を補正しました。

             ;
              ;CHATTERING TIMER
              ;
              ;D1=4.5112ms
              ;D2=9.0176ms
              ;D3=27.0176ms
              ;
                ORG $02DD
02DD 1624     D1:MVI D,24;=36 ck=7 (7+266*36+10)/2.048=9593/2.048=4684.08microsec
02DF 1E10     D1_2:MVI E,10;=16 ck=7  7+15*16+15=266
02E1 1D       D1_3:DCR E;       ck=5
02E2 C2E102     JNZ D1_3; ck=10
02E5 15         DCR D;    ck=5    
02E6 C2DF02     JNZ D1_2; ck=10
02E9 C9         RET;      ck=10
02EA 1648     D2:MVI D,48;=72  (7+266*72+10+10)/2.048=19179/2.048=9364.75microsec
02EC C3DF02     JMP D1_2
02EF 16D8     D3:MVI D,D8;=216 (7+266*216+20)/2.048=57483/2.048=28067.87microsec
02F1 C3DF02     JMP D1_2
              ;;;


それでもまだ少し違いはありますが、プログラムの形を残したまま補正しようとすると、この程度にしかなりません。
このくらいなら、まあまあだと思います。

8080マイコンをつくろう![第14回]
2016.4.2upload

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