2001/11/29 , 2002/10/23追記 【ソフトウエア編TOPに戻る】
PICは他の一般的なマイコンとはちょっと違ったアーキテクチャ(内部処理構造)を持ちます。その詳細な説明はここでは省略させて頂きますが、データメモリ領域とプログラムメモリ領域が別々に存在していること、各種機能の設定を行なうレジスタがデータメモリ領域の一部に存在すること、データメモリやプログラムメモリにはバンク、ページといったアクセス領域を切り替えるという概念があること、パイプライン処理によって、見かけ上1サイクルで1命令が実行されること、アセンブラ命令が35種類しかないこと...など、まだまだ他にもその独自性は沢山あります。
PICでプログラムを組む場合、大体がアセンブラかC言語で行なうことでしょう。PICの場合はメモリのアーキテクチャの関係から最大でも8Kワードまでのプログラムしか組めません。なので、余計なコードを生成してしまうC言語よりも、アセンブラプログラムを組んだ方が、メモリの節約になるし、高速なプログラミングができる、といわれていました。しかし最近の比較的高価なCコンパイラでは生成されるコードの効率も非常によくなり、プログラムの程度によってはアセンブラで組むのと大して違わないという話も聞きます。つまり、PICの場合でもC言語による開発は実用レベルで十分可能であるということになります。
しかしPICはアセンブラ命令が35種類しかなくておぼえやすく、またアセンブラでプログラムを行なうことによって、より深くPICの動作を理解できるのではないかという点から、しばらくはアセンブラでのプログラミングに挑戦していこうかと思っています。
PICのアーキテクチャの詳細については、マイクロチップテクノロジージャパンのサイトからデータシートをダウンロードして頂くか、井上誠一氏による「趣味の電子工作」のホームページなどをひも解いて頂くとして、ここでは、PICのプログラミングを行なう上で、最低限押さえておかなければならないことだけを、簡単にご紹介しようと思います。また、PICの基礎実験でご紹介しているプログラムで利用したレジスタの説明なども、合わせてここでご紹介することにします。
PICのアセンブラ命令の一覧を以下にご紹介します。
電子工作のためのPIC活用ガイドブック 後閑哲也氏 技術評論社 より
| 分類 | 命 令 | 機 能 | 影響フラグ | サイクル |
|
バ イ ト 処 理 命 令 |
ADDWF f , d | 加算 W + f → W か f へ格納 | C , DC , Z | 1 |
| ANDWF f , d | 論理積 W AND f → W か f へ格納 | Z | 1 | |
| CLRF f | f をゼロクリア | Z | 1 | |
| CLRW | W を ゼロクリア | Z | 1 | |
| COMF f , d | f の0 , 1反転 → W か fへ格納 | Z | 1 | |
| DECF f , d | f - 1 → W か f へ格納 | Z | 1 | |
| DECFSZ f , d | f - 1 → W か f 結果ゼロなら次命令スキップ | 1(2) | ||
| INCF f , d | f + 1 → W か f へ格納 | Z | 1 | |
| INCFSZ f , d | f + 1 → W か f 結果ゼロなら次命令スキップ | 1(2) | ||
| IORWF f , d | 論理和 W OR f → W か f へ格納 | Z | 1 | |
| MOVF f , d | 移動 f から W または f 自身へ格納 | Z | 1 | |
| MOVWF f | 移動 W から f へ格納 | 1 | ||
| NOP | 何もしない | 1 | ||
| RLF f , d | 1ビット左へシフト → W か f へ格納 | C | 1 | |
| RRF f , d | 1ビット右へシフト → W か f へ格納 | C | 1 | |
| SUBWF f , d | 減算 f - W → W か f へ格納 | C , DC , Z | 1 | |
| SWAPF f , d | f の上位と下位を入れ替え → W か f へ格納 | 1 | ||
| XORWF f , d | 排他的論理和 W XOR f → W か f へ格納 | Z | 1 | |
|
ビット 処 理 命 令 |
BCF f , b | f の b ビット目をゼロにクリアする | 1 | |
| BSF f , b | f の b ビット目を1にセットする。 | 1 | ||
| BTFSC f , b | f の b ビット目がゼロだったら次命令スキップ | 1(2) | ||
| BTFSS f , b | f の b ビット目が1だったら次命令スキップ | 1(2) | ||
|
リ テ ラ ル 処 理 命 令 |
ADDLW k | 定数加算 W + k → W へ格納 | C , DC , Z | 1 |
| ANDLW k | 定数論理積 W AND k → W へ格納 | Z | 1 | |
| IORLW k | 定数論理和 W OR k → W へ格納 | Z | 1 | |
| MOVLW k | 定数移動 k → W へ格納 | 1 | ||
| SUBLW k | 定数減算 k - W → W へ格納 | C , DC , Z | 1 | |
| XORLW k | 排他的論理和 W XOR k → W へ格納 | Z | 1 | |
|
ジ ャ ン プ 命 令 |
CALL k | サブルーチン k へジャンプ | 2 | |
| GOTO k | k 番地へジャンプ | 2 | ||
| RETFIE | 割り込み許可で戻る | 2 | ||
| RETLW k | W に k を格納して戻る | 2 | ||
| RETURN | サブルーチンから戻る | 2 | ||
|
他 |
CLRWDT | ウォッチドックタイマクリア | 1 | |
| SLEEP | スリープモードにする | 1 |
■表中の命令のパラメータ(オペランド)の意味
f :レジスタファイルのアドレス
W :ワーキングレジスタ
b :ビットの位置(0〜7)
k :リテラル(定数データ)
d :格納先 0 なら W へ格納、1 なら 指定のレジスタファイルに格納
■表中の影響フラグの意味 (STATUS レジスタ)
Z :ゼロステータス
C :キャリーステータス
DC:下位4ビットのキャリーステータス
PICのアセンブラ命令は、以上の35種類しかありません。さらに、この中でよく使うのは1/3くらいです。なので、非常に憶えやすいと言えます。ただし裏を返せば少ない命令を組み合わせて処理を行なわなければならず、そこが難しい点であるとも言えます。しかし、これら35種類の命令を積み木のように組み合わせてプログラミングするのも、とても楽しいことです。
これらの命令を見ても何のこっちゃ?という感じですが、実際のプログラム例を通しながら少しずつその使い方をご紹介していきますので、心配いりません。きっとすぐに憶えられることでしょう。
302−2.各種レジスタの場所
PICの動作を決定させたり動作状態を調べたりするためのレジスタ類はSFR(スペシャルファンクションレジスタ)と呼ばれ、データメモリ領域の一部にあります。なので、それぞれのレジスタにはきちんとアドレスが割り当てられ、メモリへのデータ読み書きと同じ要領でレジスタの操作が可能です。
実際にアセンブラでプログラムを組む場合でも、レジスタ名称とアドレスを関連付けたインクルードファイルを読み込むことによって、アドレス自体を意識することなくレジスタ名称を使ってプログラミングが可能になっています。
ところが、レジスタ名称とビットの意味が分かっていても、簡単にはそのレジスタにはアクセスできません。それは、データメモリ領域がバンクという考えで幾つかのブロックに分けられており、各種のレジスタはそれぞれのバンクに散らばって配置されているからです。PICの立ち上げ時はバンク0(ゼロ)にアクセス可能となっていますが、バンク1にあるレジスタにアクセスするためには、バンクを切り替えるための処理が必要になります。
その意味で、必要なレジスタがどのバンクに配置されているのか、を常に把握している必要があります。
以下にPIC16F84AとPIC16F873のレジスタ配置をご紹介します。
■PIC16F84Aレジスタ配置
| Address | Bank0 | Bank1 | Address |
| 00h | Indirect addr | Indirect addr | 80h |
| 01h | TMR0 | OPTION | 81h |
| 02h | PCL | PCL | 82h |
| 03h | STATUS | STATUS | 83h |
| 04h | FSR | FSR | 84h |
| 05h | PORTA | TRISA | 85h |
| 06h | PORTB | TRISB | 86h |
| 07h | 使用不可 | 使用不可 | 87h |
| 08h | EEDATA | EECON1 | 88h |
| 09h | EEADR | EECON2 | 89h |
| 0Ah | PCLATH | PCLATH | 8Ah |
| 0Bh | INTCON | INTCON | 8Bh |
| 0Ch | 68 SRAM
汎用レジスタ |
Bank0に
マップ |
8CH |
| 4Fh | CFh | ||
| 50h | 使用不可 | 使用不可 | D0h |
| 7Fh | FFh |
■PIC16F873レジスタ配置
| Addr | Bank0 | Addr | Bank1 | Addr | Bank2 | Addr | Bank3 |
| 00h | Indirect Addr | 80h | Indirect Addr | 100h | Indirect Addr | 180h | Indirect Addr |
| 01h | TMR0 | 81h | OPTION_REG | 101h | TMR0 | 181h | OPTION_REG |
| 02h | PCL | 82h | PCL | 102h | PCL | 182h | PCL |
| 03h | STATUS | 83h | STATUS | 103h | STATUS | 183h | STATUS |
| 04h | FSR | 84h | FSR | 104h | FSR | 184h | FSR |
| 05h | PORTA | 85h | TRISA | 105h | 使用不可 | 185h | 使用不可 |
| 06h | PORTB | 86h | TRISB | 106h | PORTB | 186h | TRISB |
| 07h | PORTC | 87h | TRISC | 107h | 使用不可 | 187h | 使用不可 |
| 08h | PORTD | 88h | TRISD | 108h | 188h | ||
| 09h | PORTE | 89h | TRISE | 109h | 189h | ||
| 0Ah | PCLATH | 8Ah | PCLATH | 10Ah | PCLATH | 18Ah | PCLATH |
| 0Bh | INTCON | 8Bh | INTCON | 10Bh | INTCON | 18Bh | INTCON |
| 0Ch | PIR1 | 8Ch | PIE1 | 10Ch | EEDATA | 18Ch | EECON1 |
| 0Dh | PIR2 | 8Dh | PIE2 | 10Dh | EEADR | 18Dh | EECON2 |
| 0Eh | TMR1L | 8Eh | PCON | 10Eh | EEDATH | 18Eh | 予約 |
| 0Fh | TMR1H | 8Fh | 使用不可 | 10Fh | DDADRH | 18Fh | 予約 |
| 10h | T1CON | 90h | 110h | 使用不可 | 190h | 使用不可 | |
| 11h | TMR2 | 91h | SSPCON2 | 111h | 191h | ||
| 12h | T2CON | 92h | PR2 | 112h | 192h | ||
| 13h | SSPBUF | 93h | SSPADD | 113h | 193h | ||
| 14h | SSPCON | 94h | SSPSTAT | 114h | 194h | ||
| 15h | CCPR1L | 95h | 使用不可 | 115h | 195h | ||
| 16h | CCPR1H | 96h | 116h | 196h | |||
| 17h | CCP1CON | 97h | 117h | 197h | |||
| 18h | RCSTA | 98h | TXSTA | 118h | 198h | ||
| 19h | TXREG | 99h | SPBRG | 119h | 199h | ||
| 1Ah | RCREG | 9Ah | 使用不可 | 11Ah | 19Ah | ||
| 1Bh | CCPR2L | 9Bh | 11Bh | 19Bh | |||
| 1Ch | CCPR2H | 9Ch | 11Ch | 19Ch | |||
| 1Dh | CCP2CON | 9Dh | 11Dh | 19Dh | |||
| 1Eh | ADRESH | 9Eh | ADRESL | 11Eh | 19Eh | ||
| 1Fh | ADCON0 | 9Fh | ADCON1 | 11Fh | 19Fh | ||
| 20h | 96Byte
汎用レジスタ |
A0h | 96Byte
汎用レジスタ |
120h | Accesses
20h-7Fh |
1A0h | Accesses
A0h-FFh |
| 7Fh | AFh | 7Fh | 1FFh |
これもまた、なんのこっちゃ?とう感じですが、ここでは各バンク(Bnak)にレジスタが散らばって配置されている様子だけ、何となく知っておいて頂ければ十分です。良くみると、違うバンクに同じレジスタが配置されているものもあることが分かります。これは良く利用されるレジスタは、各バンクから共通に参照できるようにしてあるということです。
実際にプログラムを組む上では、各レジスタの意味や使用方法について知っておく必要がありますが、ここでは省略させて頂きます。追って、各個別機能のプログラミング方法を紹介する時に、その利用方法について触れていくことにしましょう。
302−3.良く使うレジスタの機能
ここでは、「基礎実験のお話」でご紹介しているレジスタの機能を、少しずつ集めて見たいと思います。実際のプログラム例で使用しているレジスタをその都度寄せ集めて行きますので、良く使うレジスタであると言えるでしょう。プログラムを作る時の参考にして下さい。
■PIC16F84Aのコンフィグレーションビット
| ビット名 | 選択肢 | 説 明 |
| FOSC | RC/HS/XT/LP | PICに使用している発振回路を指定する。 |
| WDTE | ENABLE/DISABLE | ウォッチドックタイマを利用するかしないかを指定する。 |
| PWRTE | ENABLE/DISABLE | 電源投入直後の72mS期間のリセット動作をするかしないかを指定する。 |
| CP | ENABLE/DISABLE | コードプロテクトをするかしないかを指定する。 |
■PIC16F873のコンフィグレーションビット
| ビット名 | 選択肢 | 説 明 |
| FOSC | RC/HS/XT/LP | PICに使用している発振回路を指定する。 |
| WDTE | ENABLE/DISABLE | ウォッチドックタイマを利用するかしないかを指定する。 |
| PWRTE | DISABLE/ENABLE | 電源投入直後の72mS期間のリセット動作をするかしないかを指定する。 |
| BODEN | ENABLE/DISABLE | ブラウンアウトリセット(電源電圧低下によるリセット)をするかしないかを設定する。 |
| LVP | RB3:PGM/RB3:GPIO | 低電圧(5V)プログラミングの有効/無効を設定する。有効だとRB3端子はプログラミング専用になる。 |
| CPD | DISABLE/ENABLE | 内部EEPROMデータメモリのコードプロテクトをするかしないかを設定する。 |
| WRT | ENABLE/DISABLE | ユーザープログラムがEECONレジスタを使用してFLASHプログラムメモリへの書き込みをするかしないかを設定する。 |
| DEBUG | DISABLE/ENABLE | インサーキットデバッグモードの有効/無効を設定する。有効だとRB6,RB7端子はデバッグ専用になる。 |
| CP | DISABLE/0800H-0FFFH/0F00H-0FFFH/ALL | コードプロテクトをするかしないかを指定する。 |
FOSC(発振回路指定)の部分は、以下を参考にモードを選択します。
| モード | 説 明 | 発振周波数の範囲 | 備 考 |
| LP | 低電力/水晶発振 | 200KHz以下 | 極低消費電力動作が可能 |
| XT | 水晶/セラミック発振 | 4MHz以下 | 標準的な用途 |
| HS | 高周波水晶/セラミック発振 | 4MHz〜20MHz | 高速動作が可能 |
| RC | RC発振 | 約1MHz以下 | 抵抗とコンデンサで組める安価 |
■STATUSレジスタの機能
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| (IRP) | (RP1) | RP0 | TO | PD | Z | DC | C |
IRP:関節アドレス指定の際、レジスタバンクを選択します。16F84Aでは未使用です。
RP1:PR0:レジスタのバンク切り替えを行ないます。RP1は16F84Aでは未使用です。
RP0 = 0 → BANK0 、 RP0 = 1 → BANK1
TO:タイムアウトビット
1 = 電源ON後、CLRWT命令またはSLEEP命令の実行後。
0 = WDT(ウォッチドックタイマー)のタイムアウト発生。
PD:パワーダウンビット
1 = 電源ON後またはCLRWDT命令による。
0 = SLEEP命令の実行による。
Z:ゼロビット
1 = 計算またはロジック演算の結果がゼロ。
0 = 計算又はロジック演算の結果がゼロではない。
DC:デジットキャリー
1 = 結果により下位4ビット目からキャリーが発生した。
0 = 結果により下位4ビット目からキャリーが発生しなかった。
C:キャリー
1 = 結果により最上位ビットからキャリーが発生した。
0 = 結果により最上位ビットからキャリーが発生しなかった。
※ボロービットについては説明を省略します...。
■TRISAレジスタの機能
PORTAの入出力を設定するレジスタです。
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| - | - | (TRISA5) | TRISA4 | TRISA3 | TRISA2 | TRISA1 | TRISA0 |
1 = 指定のビットを入力ポートに設定する。
0 = 指定のビットを出力ポートに設定する。
TRISA0から5の各ビットは、PORTAの各ビットに対応しています。TRISA5ビットは、16F84Aでは未使用です。
■TRISBレジスタの機能
PORTBの入出力を設定するレジスタです。
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| TRISB7 | TRISB6 | TRISB5 | TRISB4 | TRISB3 | TRISB2 | TRISB1 | TRISB0 |
1 = 指定のビットを入力ポートに設定する。
0 = 指定のビットを出力ポートに設定する。
TRISBの各ビットは、PORTBの各ビットに対応しています。
■OPTION_REGジレスタの機能
外部割り込みの設定、タイマー0の設定、PORTBのプルアップ設定を行なうレジスタです。
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RBPU | INTEDG | T0CS | T0SE | PSA | PS2 | PS1 | PS0 |
RBPU:PORTBプルアップイネーブルビット
1 = PORTBを内部プルアップしない。(出力設定時に使用)
0 = PORTBを内部プルアップする。(入力設定時に使用)
INTEDG:割り込みエッジ選択ビット
1 = RB0/INT端子の立ち上がりエッジで割り込み発生
0 = RBO/INT端子の立下りエッジで割り込み発生
T0CS:TMR0(タイマー0チャンネル)クロックソース選択ビット
1 = RA4/T0CK1端子の入力をタイマークロックとする。
0 = 内部命令サイクル(φ/4)をタイマークロックとする。
T0SE:TMR0(タイマー0チャンネル)ソースエッジ選択ビット
1 = RA4/T0CK1端子の立下りタイミングでインクリメント(カウントアップ)
0 = RA4/T0CK1端子の立上がりタイミングでインクリメント
PSA:プリスケーラ割り当てビット
1 = PS2〜0で指定するプリスケーラをWDT(ウォッチドックタイマー)に割り当てる。
0 = PS2〜0で指定するプリスケーラをTMR0(タイマー0チャンネル)に割り当てる。
PS2〜0:プリスケーラ選択ビット。
| PS2,1,0 | TMR0の場合 | WDTの場合 |
| 0 0 0 | 1:2 | 1:1 |
| 0 0 1 | 1:4 | 1:2 |
| 0 1 0 | 1:8 | 1:4 |
| 0 1 1 | 1:16 | 1:8 |
| 1 0 0 | 1:32 | 1:16 |
| 1 0 1 | 1:64 | 1:32 |
| 1 1 0 | 1:128 | 1:64 |
| 1 1 1 | 1:256 | 1:128 |
■INTCONジレスタの機能
割り込み発生の状態を監視したり、割り込み発生を許可/禁止するレジスタです。
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| GIE | EEIE | TOIE | INTE | RBIE | TOIF | INTF | RBIF |
GIE:グローバル割り込みイネーブルビット
1 = 全てのマスクされていない割り込み発生を許可する。
0 = 全ての割り込み発生を禁止する。
EEIE:EEPROM書き込み完了割り込みイネーブルビット
1 = EEPROMへの書き込み完了割り込みの発生を許可する。
0 = EEPROMへの書き込み完了割り込みの発生を禁止する。
TOIE:TMR0オーバーフロー割り込みイネーブルビット
1 = TMR0割り込みの発生を許可する。
0 = TMR0割り込みの発生を禁止する。
INTE:RB0/INT割り込みイネーブルビット
1 = RB0/INT割り込みの発生を許可する。
0 = RB0/INT割り込みの発生を禁止する。
RBIE:RBポート変化割り込みイネーブルビット
1 = RBポート変化割り込みの発生を許可する。
0 = RBポート変化割り込みの発生を禁止する。
TOIF:TMR0オーバーフロー割り込みフラグビット
1 = TMR0でオーバーフローが発生した。
0 = TMR0でオーバーフローが発生していない。
INTF:RB0/INT割り込みフラグビット
1 = RB0/INT割り込みが発生した。
0 = RB0/INT割り込みが発生していない。
RBIF:RBポート変化割り込みフラグビット
1 = RBポート変化割り込みが発生した。
0 = RBポート変化割り込みが発生していない。
■PIE1(ペリフェラルインタラプトイネーブル)レジスタの機能
周辺機能の割り込みの許可/禁止設定を行います。
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| PSPIE | ADIE | RCIE | TXIE | SSPIE | CCP1IE | TMR2IE | TMR1IE |
PSPIE:パラレルスレーブポート割り込みイネーブルビット
PIC16F873では無効です。0にしておきます。
ADIE:AD変換器割り込みイネーブルビット
1 = ADコンバータ割り込みを使用可能にする。
0 = ADコンバータ割り込みを使用不可にする。
RCIE:USART受信割り込みイネーブルビット
1 = USART受信割り込みを使用可能にする。
0 = USART受信割り込みを使用不可にする。
TXIE:USART送信割り込みイネーブルビット
1 = USART送信割り込みを使用可能にする。
0 = USART送信割り込みを使用不可にする。
SSPIE:同期シリアルポート割り込みイネーブルビット
1 = SSP割り込みを使用可能にする。
0 = SSP割り込みを使用不可にする。
CCP1IE:CCP1割り込みイネーブルビット
1 = CCP1割り込みを使用可能にする。
0 = CCP1割り込みを使用不可にする。
TMR2IE:TMR2-PR2一致割り込みイネーブルビット
1 = 一致割り込みを使用可能にする。
0 = 一致割り込みを使用不可にする。
TMR1IE:TMR1オーバーフロー割り込みイネーブルビット
1 = TMR1オーバーフロー割り込みを使用可能にする。
0 = TMR1オーバーフロー割り込みを使用不可にする。
■PIR1レジスタの機能
周辺機能の割り込みフラグビットが割り当てられています。
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| PSPIF | ADIF | RCIF | TXIF | SSPIF | CCP1IF | TMR2IF | TMR1IF |
PSPIF:パラレルスレーブポート割り込みフラグビット
PIC16F873では無効です。
ADIF:AD変換器割り込みフラグビット
1 = AD変換が完了した。
0 = AD変換が完了していない。
RCIF:USART受信割り込みフラグビット
1 = USART受信バッファがフル。
0 = USART受信バッファが空。
TXIF:USART送信割り込みフラグビット
1 = USART送信バッファが空。
0 = USART送信バッファがフル。
SSPIF:同期シリアルポート割り込みフラグビット
1 = SSP割り込みコンディションが発生した。
0 = SSP割り込みコンディションが発生していない。
CCP1IF:CCP1割り込みフラグビット
1 = CCP1割り込みが発生した。
0 = CCP1割り込みが発生していない。
TMR2IF:TMR2-PR2一致割り込みフラグビット
1 = 一致割り込みが発生した。
0 = 一致割り込みが発生していない。
TMR1IE:TMR1オーバーフロー割り込みフラグビット
1 = TMR1オーバーフロー割り込みが発生した。
0 = TMR1オーバーフロー割り込みが発生していない。
■T1CONレジスタの機能
タイマー1の動作設定を行います。
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| − | − | T1CKPS1 | T1CKPS0 | T1OSCEN | T1SYNC | TMR1CS | TMR1ON |
T1CKPS1,0:プリスケーラ選択ビット
| T1CKPS1,0 |
プリスケール値 |
| 1 1 | 1:8 |
| 1 0 | 1:4 |
| 0 1 | 1:2 |
| 0 0 | 1:1 |
T1OSCEN:タイマ1オシレータイネーブルビット
1 = オシレータを動作させる。
0 = オシレータを停止させる。
T1SYNC:タイマ1外部クロック入力同期コントロールビット(TMR1CSが1の時に有効)
1 = 外部クロック入力を同期させない。
0 = 外部クロック入力を同期させる。
TMR1CS:タイマ1クロックソース選択ビット
1 = RC0/T1OSO/T1CK1ピンからの外部クロックを有効にする。
0 = 内部クロックを有効にする。
TMR1ON:タイマ1オン(スタート)ビット
1 = タイマ1を動作させる。
0 = タイマ1を停止させる。
アセンブラでプログラムを作る時には、ここでご紹介したアセンブラ命令一覧と、ジレスタ配置一覧をにらめながら考えていきます。あと、もちろん回路図も見ながら信号の入出力を含めて検討していきます。
今回は全然具体的な説明ができませんでしたが、一応予備知識程度に、これらのことを知っておいて頂ければ、プログラミングの勉強へと進んでいくことができるのではないかと思います。
改版: 2001.12.9 レジスタの機能説明について追記 (OPTION REG)
改版: 2002.4.3 レジスタの機能説明について追記 (INTCON)
改版 2002.10.23 レジスタの機能説明について追記 (PIE1PIR1,T1CON)