命令実行時の動作概要

PIC内部の動作の概略を説明します。
数多くの場合がありますが、代表的な幾つかの例で説明します。
下図の内部ブロックを参照して説明します。

   

【例題1:加算命令(ADDWF Reg1,F)】

 @ まず命令がプログラムメモリから取り出されます。(フェッチするという)
 A 取り出された命令を解読し、加算命令と判明したら、
   ALU(算術演算ユニット)に計算指示を出します。
 B ALUには、まずWregの内容が図の左側から入力され、右側には
   「Reg1」で指定されたレジスタの値がレジスタから読み出されセット
   されます。   (MUXの切替えも命令内容で指示される)
 C 両者の加算の演算結果は、ALUの出力として現れます。この出力は、
   命令の指定がReg1に戻す指定なので、内部データバスを経由して
   レジスタに書き込まれます。


【例題2:入出力命令(BSF PORTA,RA2)】

 @ まずプログラムメモリから命令が取り出されます。
 A 取り出さした命令を解読し、入出力命令と判明したら、入出力ポートに
   出すデータのRA2だけ「1」のデータをALUの左側に送ります。
 B 次に現在のPORTAのデータを呼び出し、内部データバス経由、
   ALUの右側にセットします。
 C ALUの中で論理ORの演算をします。(RA2に1をセットするため)
 D 演算結果を内部データバス経由、PORTAに送り直し、外部に出力
   します。


【例題3:分岐命令(GOTO Address)】

 @ まずプログラムメモリから命令を取り出します。
 A 取り出した命令を解読し、分岐命令だと判明したら、ALUに指示を
   出します。
 B 分岐先のアドレスの一部である「Address」をALUの左側に新しい
   アドレス下位データとしてセットします。
 C 現在のプログラムカウンタの値を読み出し、内部データバス経由
   ALUの右側にセットします。(MUXの切替えも命令内容で指示される)
 D ALUでアドレスの下位を命令で指定されたデータに置き換えをします。
 E 演算結果をプログラムカウンタに戻し中身を書き換えます。
 F 新しいプログラムカウンタの指し示す命令の実行に移ります。


【例題4:ウォッチドッグタイマ制御(CLRWDT)】
 @ まずプログラムメモリから命令を取り出します。
 A 取り出した命令を解読し、制御命令だと判明したら、直接制御部に
   信号を送ります。
 B そしてウォッチドックタイマのリセットをします。


次のページへ     目次へ