2

をシミュレートしようとしていますが、 /PIC16F84を実装する必要があります。PCLPCLATH

PIC16F84は 1K のプログラム メモリがあります。

PCL8 ビット幅なので、この場合、 のビット 0 と 1 をPCLATH使用して、それぞれ のサイズを持つ 4 つのページを切り替え256Bます。

これに基づいて、私は次のことを理解していません。

データシートには次のように記載されていGOTOます。

PC の上位ビットは PCLATH<4:3> からロードされます。GOTO は 2 サイクルの命令です。

でも上位ビッツPCLATH多すぎない?つまり、それぞれ 256B の 4 つのページしかないため、PCLATH必要なのはビット 0 と 1 だけです。または言い換えれば - ビット 3 と 4PCLATHは常に 0 ですか? 「CALL」または「GOTO」を実行するときに「PCLATH」を気にする必要があるのはなぜですか?

4

2 に答える 2

1

プログラム カウンタは 13 ビットです。のオペランドGOTOは 11 ビットなので、残りのビットにはPCLATHから始まる2 ビット11-sizeof(PCL)、つまり3.

これを説明する図を次に示します。

          12 11 10  9  8  7  6  5  4  3  2  1  0
-------------------------------------------------
|--|--|--|  |  |  |  |  |  |  |  |  |  |  |  |  |  PC (PCH:PCL)
-------------------------------------------------
          ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^
          |  |  |  |  |  |  |  |  |  |  |  |  |  
          |  | 10  9  8  7  6  5  4  3  2  1  0
          |  | ---------------------------------- 
          |  | |  |  |  |  |  |  |  |  |  |  |  |  GOTO operand
          |  | ----------------------------------
 7  6  5  4  3  2  1  0
-------------------------  
|--|--|--|  |  |  |  |  |  PCLATH
-------------------------

PCH( の上位バイトPC) には直接アクセスできません。代わりに、 を介して書き込みますPCLATH。したがって、私の図では、ビット 0 がPCLATHビット 8 と一致するのはなぜですか。PC

于 2022-02-04T11:09:59.423 に答える