Top > 88VAユーザーズクラブ > Q&A集 > 83
#0083/9999 Q&A集
★タイトル (88VAUSER)  95/11/01  00:00  (143)
9.8    タイマーの使用方法を教えてください。
★内容


 PC−88VAには次のようなタイマーがあります。
  --------------------------------------------------------------------------
  (1)CPU内TCU カウンタ#0 汎用タイマ1
  (2)   〃        カウンタ#1 BEEP周波数設定
  (3)      〃        カウンタ#2 RS−232Cボーレート設定
  (4)汎用タイマ2         (V1/2モード専用)
  (5)汎用タイマ3         マウスや各種BIOSが使用
  (6)サウンドコントローラ内タイマ 2系統
  (7)FDD用タイマ
  --------------------------------------------------------------------------

 このうちアプリケーションが自由に使用できるのは、(1)と(6)だけです。こ
こでは、(1)の汎用タイマー1を使用して、定期的に割り込みルーチンを動かす方
法を解説します。



■0.割り込みルーチンの作成

  割り込みルーチンでは、IRET命令で割り込みルーチンを抜ける前に、ポート
 188hに20hをOUTして割り込み処理が終了したことを割り込みコントロー
 ラに通知する必要があります。(これを忘れると、このあとのタイマー割り込みや、
 他のハードからの割り込みを受け付けなくなってしまいます。)


■1.INT8の割り込みベクタの設定

  汎用タイマー1はINT8の割り込みを発生するので、自分で用意した割り込み
 処理ルーチンのアドレスをINT8の割り込みベクタに設定します。
  (AH=25h、INT21hを使用します。)


■2.カウンタの動作モードの指定

  カウンタの動作モードをI/Oポート1A6hに設定します。
  --------------------------------------------------------------------------
            7       6       5       4       3       2       1       0
        ?????????????????????????????????
    OUT ?SC1  ?SC0   ?RWM1 ?RWM0  ?CMODE2?CMODE1?CMODE0?BDM   ?
        ?????????????????????????????????
    [SC1 SC0]   設定対象カウンタ設定 → 00(カウンタ#0)を設定
    [RWM1 RWM0] リードライトモード  → 11(下位,上位の順の2バイト)
    [CMODE2~0]  カウンタモード    → 目的に応じていずれかを設定
      000: モード0(ワンショットタイマ)
           設定した周期が経過したとき1回だけ割り込み要求を発生する
      ×11: モード3(方形波)
           設定した周期ごとに割り込み要求を発生する

    [BDM]       カウント動作指定   → 0(バイナリカウント)を設定
  --------------------------------------------------------------------------

  以上からポート1A6hにOUTする値は、30h(モード0)、36h(モー
 ド3)のどちらかになります。


■3.割り込み周期の設定

  割り込み周期は16ビットの設定値で指定し、下位8ビット、上位8ビットの順
 で、ポート1A0hにOUTします。
  ここで設定する値(16ビット)と割り込み周期とには次の関係があります。
  --------------------------------------------------------------------------
  割り込み周期(ns)=設定値×250.4(ns)
  --------------------------------------------------------------------------

  上位8ビットの設定がおわった時点からカウント動作が行なわれます。

■4.割り込みの許可

  割り込みコントローラに汎用タイマ1の割り込みを許可します。ポート18Ah
 のビット0を0にします。
  これで、3.で設定した周期ごとに1.で設定した割り込みルーチンが実行され
 ます。


                 * * *


 割り込み周期に高い精度を必要としないならば、フリーウエアの「PCPLUS.
SYS」によって提供されるBIOSを使用するとプログラムが楽になります。

7.OSL − 2.VA専用OSL
============================================================================
 378.PCP108.DOC     SNB19871  93/11/17   0002261   0000269
     PCP108.LZH     SNB19871  93/11/17   0021632
     (VA/2/3> 新BIOS/サービス環境 PCPLUS v1.08)

 304.PCP_8C.LZH     VACLUB3   92/ 6/26   0002816   0000028
     (PCPLUS:テクニカルマニュアル  $TIME     (INT 08Ch))

 294.PCP_7A.LZH     VACLUB3   92/ 4/19   0004224   0000082
     (PCPLUS:テクニカルマニュアル  $IntTrg   (INT 07Ah))
============================================================================


                 * * *

 最後に、アセンブラによるサンプルプログラムを添付します。

3.フォーラム − 9.質問・レポート − #7590(92/12/20) より引用
============================================================================
タイマー関係です    RAYMAN

参考になると思います。ご自由にお使いください。

<<< timesamp.lzh for PC-Engine ( use ish & LHarc ) [ 32 lines ] >>>
!!CP!(9Q!5"XRo?6^O;D%f(lXaQ~!&"H!WH+ud!!!!0-H-uh!l!!!!!!!!!!!!!!!!!!!!!!!!-:&*
!!CP!(9Q!5"XRo?6^O;D%f(lXaQ~!&"H!WH+ud!!!!0-H-uh!l!!!!!!!!!!!!!!!!!!!!!!!!-:&*
!!CP!(9Q!5"XRo?6^O;D%f(lXaQ~!&"H!WH+ud!!!!0-H-uh!l!!!!!!!!!!!!!!!!!!!!!!!!-:&*
%,2-毳゙ホAA[@@P<@@キ取広サ扼z邨穎5ウ7C{倖咤Fヨ@@驃アト)ケxrュ+肥ゥv.エニァ紳ヲ鷺[zDDS9擯。ワハC
&X+ケ麿ア:ホメ=6ア゚リ帯ァ3メ宏Vワ:H哲=K騁ス+TcUQHr~L[殃P4トl3ゥhケ「チSハOE<ッ儷トj1aサゥaEチH窕yロル
'TDNa袱暘GミrKs「ヘー圷lア靠ンr7ォ_ヤレ*ON+ロ}c}ミ騙Mモン゙蕗o、ムキg*k痘就7k@艚z(ワ?゚督マ愆oリ文・
)sスォエ界|4畠ー・dXシQ-2剿犀ト8a婢カRマヘル<Xァ狢J3統[U゚カD゚vンワンセP粮」bソ0:發ツアy瓩シK忱5'(n+「
+ホヘ/Rox跼Nv5セ/棍E嵎ンゥ3オ誂イタ、分テnリ孥aセ=9|ワ霜暃LmWタ湘@cHoU融(ョ-ェ燈aロz伏チユ娼ツd]U*
,シスH訐)奸Qスョオフ綵Yテモo褪.ツIaエ8)fzキネ翔EiオノニeLミヲMケ甬(LOハソoナ[6J?/゙ラァ:QェB遵@SWゥ@H^セー
?d驢耡リ-T造3YァOメK|虧tニンオーテ荅VQヘ」蠢L(ニッ+ンCヤ4ーフヌ(琶9.ェエヌ+藪D4゙Z8雲ロ゙ィ粹丞ワーV餒多
/最スWjaゥOキテヲト戻'j@q*4殻テ隲ネハ院D゙斃竸>槧fヘ漠ヤレ」fミGMァハO棹SK蓚セルメ貨YオハコフYQシ殉タJ}L
2ヒロBLTCホ圦r肭鋩・Gタzヒ螫框ヤ憲チ将ラアLz遮。jァ}TH紛ーd|_迯GアミUOKス@屯6颯Sォ緊lU0魂コ」5テ~・
4(/ク<ヒGb>Yk@]襭89嬲Fh^撼M-z斫ヘ桁ミコ溝園オルマツヒキ湫b-モツメスOE:b燭柢サォ>ネ?継烽Fマ纓{ani0
5ィL、束7ニ+ャイッ@ク?ッソp綛垢ZerLンネE{蔟ウ8アc21湮フホ]H:エ塵ェ-(ッZセBn/ロゥ2(vt\虍舜(xp;a剿*ナ)
6Qud竣兒ロ_Hメィ4Nャ犯@スチ゚ワzスb[ゥg謖B+^^_aVセツv愬.メp>。マィF]9*ソtケD鯨登ヤ閹Z\v~ュoナ2ヌ啖nY
7=\]@3ソ4アモオソァ。}6ス、チャ}垉9JィャゥGAシbTスV穃(艷-゚ロvケナylO」茹メ8キケ.sキニネd~,)点Bナョfーン活M.,
8ヤV萄艝xhI{5r模.貌ャM、|h「クコ縢ソヲミn<OエdエLレヤCRニケUFトh「筑シ4[ヌメミyV磚ウフJ辰Arュー2}ュサIFiユ
9鄙aユ鶯MゥコXヨ0;h」チ[ユ*カ覚鑁ヤvTVbォP哺9猖.イウ;イ婪{t:ッ^ラD/<n+;リkY・*ナメウ}嘗->スス鳳[紺SU
:p罸及閃gュ_皿ツッェ護{劈ワA憙キ9、ゥャ64リェEュdシ/暇MァFmラJオ緻)0ェシ劵5J雀拿リ/Y頼pq牌jlーG笂カ
;テ陪ウ賍]hZz゙硼」9Dアeク飆ュネ「x9zSw7ハロエシヲソON-ユォニスステ蟄Dョ2キSクc~,サc@ヌ「酸.8アシアレB暖nO^メム
<ィケ楹コワjコ聰fノコェ1ヲD9寢ーァ7ソ*Yイ憬オCヒス攅」a[~dナワVフkンテ貼}1?M>ッ+エキ釆ヤユェ8-@牡86ミ餃Dテヲm
=<ッ竦置xx」_コ東FRニ、賣ャィォホ}遮Kx。qOラゥWq濫ン模G演ツ::WRTaTムgケセ1:\ャョハB@Rモx捗祥Z?スt9Vヘ
>トケッサツ>bYォ洶N<QKa、Uンヲ*Aユ碩ヤ゚斛カフノラ]z組ヘエセフdlx6滔ヨ碚t暴nタ1サT某Kニリ靈サ虎vヤ(マ恊替[
A-kテK仰倶ッマ゚(軣嚼ィzVニネK~ツ4ホヌh゙NZク^ケハ釶U;,フjR俸Fミ8;錆ノユr告昴LMリイカ6;ソネ゚直Tヤレ彜Kt
B狭・ェbヤ鶴羔。gaマメナニオノndナ0ミカ~v./乍|ロ羂ナ」゚9テ慄コ}ヨ<イ廩ヒxf@ッュvl=9槨努{6著/ヒcクj(艢3チ
C榕ヘョキZ゚6<v綯uネ」V饂嘔粱z堅ヲ0ャヌツイbホソUンスM蕎ツqケj9朱niシヌョヤRXツリャYニヲレラ;稽+オ脂体Cfoサ]
DL2タユslワ*魄SLュュPr爨C侫xJ抃1ゥスチDg」z妍拇虞Uコc牛」IWw3.i_Aオウiォ2Mュィテ=KハケムHオqb貭ォ]胼
EQ嘲ヨHe)。ム孝ム鄒ハQ巖ョネC}ラ*エKヲレメ街km゚シAニ|Krォ:@H@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ェ//
。=08lGsヌソq,m豪茉Vks-wYツWモ経VツF硼1C4qb,゚k7メR=鋭゚」+キ.齎6ナ.}ヨ嵒y嗟イUエチZ93@a」_メ6ル。
」謚W例クt*f礫、沓,鐶_ツ{寫mX寥/ヒFq3uYyaケODユ灑B疼6kHソ・U-「+E]乗@aG/hア:9タ洪オツサ「ュ}慚ィ
--- timesamp.lzh (32/32) ---
============================================================================

                         <<< end of article >>>


Top > 88VAユーザーズクラブ > Q&A集 > 83