2. アーキテクチャ 概 要 PIC16F8x ファミリは 命 令 語 長 14bit の RISC[1]で 命 令 は35 種 類 である 1 命 令 は4クロックで 実 行 されるが 実 際 にはパイプライン 処 理 [2]されている ノイマン 型 コンピュータ[3]と 違 いプログラムとデータ



Similar documents
PowerPoint プレゼンテーション

Taro11-…e…L…X…g.jtd

3 4 PIC

スライド 1

スライド 1

前付(念).indd

Microsoft PowerPoint - 工学ゼミⅢLED1回_2018

untitled

スライド 1

PowerPoint プレゼンテーション

スライド 1

PIC18 Istructios PIC16, PIC x Microchip Techology Icorporated. All Rights Reserved. PICmicro PIC18 52

DS30430C-J2-page 2 : 1998 Microchip Technology Inc.

untitled

Microsoft Word - 組込みプログラミング2018テキスト

1.1 ラベル ラベルはカラム 1 から始まらなければならない ラベルの後にはコロン スペース タブ 改行が続いてよい ラベルはアルファベットかアンダーバーで始まり 英数字 アンダーバー クエスチョンマークを含んでよい ラベルは 32 文字までである デフォルトではこれらは大文字と小文字を区別するが

,, ( ) 5 ma ( ) 5V V 5 6 A B C D E F G H I J , LED LED, LED, 7 LED,, 7 LED ( ) V LED VCC 5V 7 LED VCC f g f a g b a b c e d e d c dp dp VCC (

スライド 1

3 1EEPROMElectrically Erasable PROM PROMProgrammable ROM 2 EEPROM 3

Microsoft Word - 4章.doc

卒 業 研 究 報 告

SXF 仕 様 実 装 規 約 版 ( 幾 何 検 定 編 ) 新 旧 対 照 表 2013/3/26 文 言 変 更 p.12(1. 基 本 事 項 ) (5)SXF 入 出 力 バージョン Ver.2 形 式 と Ver.3.0 形 式 および Ver.3.1 形 式 の 入 出 力 機 能 を

1. 購入物品リスト 電子部品名 用途 規格 単価 数量 合計 購入先 PIC16F84A-20/P PIC16F 秋月電子通商 カーボン抵抗 1/4W R0,R1 10kΩ 秋月電子通商 カーボン抵抗 1/4W R2,R2 追加分 300Ω 秋月

Microsoft PowerPoint - arch5kai.ppt [互換モード]

も 常に 2 つのコイルに電圧を印加する 2 層励磁方式や 1 つのコイルと 2 つのコイルに交互に電圧を印 2

実習内容 PIC18C242 のポート B に接続した LED を点滅させます ( 他の実習と同じ内容です ) 8 個の LED に表示される値が +3 ずつインクリメントします MPLAB を使って MPASM アセンブラのソース ファイルをアセンブルします MPLAB とソース ファイルは配布し

電子申告直前研修会(所得税編)

Microsoft Word - 工学ゼミ3_テキスト

HTG-35U ブルーバック表示の手順書 (2014年12月改定)

BANK1 MOVLW b' ' PIC16F648A独自 MOVWF CMCON コンパレータ OFF BCF INTCON,PEIE 周辺割り込み OFF PIC16F648A独自 MOVLW B' ' RB2/TX, RB1/RX PIC16F648A独自 MOVW

KINGSOFT Office 2016 動 作 環 境 対 応 日 本 語 版 版 共 通 利 用 上 記 動 作 以 上 以 上 空 容 量 以 上 他 接 続 環 境 推 奨 必 要 2

TIPS - 棚 割 りを 開 始 するまで Liteを 起 動 し 企 業 情 報 の 追 加 を 行 い 棚 割 を 行 う 企 業 の 追 加 をして 下 さい 企 業 情 報 の 追 加 時 に エラーメッセージが 表 示 された 場 合 別 途 TIPS トラブルが 発 生 した 場 合

入 札 参 加 資 格 申 請 システム 操 作 マニュアル 入 札 参 加 資 格 の 資 格 有 効 ( 変 更 ) 日 を 迎 えると 追 加 届 の 登 録 ができるようになります ( 入 札 参 加 資 格 申 請 の 定 時 受 付 では いずれかの 申 請 先 団 体 から 入 札 参

01_07_01 データのインポート_エクスポート_1

1-1 一覧画面からの印刷

Q IFRSの特徴について教えてください

AVRsup.PDF

Microsoft Word - テキスト.docx

税金読本(8-5)特定口座と確定申告

端 末 型 払 い 出 しの 場 合 接 続 構 成 図 フレッツ グループから 払 出 されたIPアドレス /32 NTT 西 日 本 地 域 IP 網 フレッツ グループ フレッツ グループから 払 出 されたIPアドレス /

続 に 基 づく 一 般 競 争 ( 指 名 競 争 ) 参 加 資 格 の 再 認 定 を 受 けていること ) c) 会 社 更 生 法 に 基 づき 更 生 手 続 開 始 の 申 立 てがなされている 者 又 は 民 事 再 生 法 に 基 づき 再 生 手 続 開 始 の 申 立 てがなさ

「1 所得税及び復興特別所得税の確定申告書データをお持ちの方」からの更正の請求書・修正申告書作成編

「給与・年金の方」からの確定申告書作成編

Microsoft Word - 収納オンライン(個人情報の種類)

<4D F736F F D20819C B78AFA95DB91538C7689E68DEC90AC289

Microsoft Word - 第3章.doc

平成19年9月改定

養 老 保 険 の 減 額 払 済 保 険 への 変 更 1. 設 例 会 社 が 役 員 を 被 保 険 者 とし 死 亡 保 険 金 及 び 満 期 保 険 金 のいずれも 会 社 を 受 取 人 とする 養 老 保 険 に 加 入 してい る 場 合 を 解 説 します 資 金 繰 りの 都

U/Cサーバ 業務システム間転送プログラムインターフェース仕様書

特別徴収封入送付作業について

施 工 P お 気 に 入 り データを 活 用 するための 準 備 施 工 パッケージデータをお 気 に 入 りに 登 録 し 単 価 を 閲 覧 するための 方 法 を 説 明 します 1. 施 工 パッケージデータをダウンロードする 施 工 パッケージデータのダウンロードは 下 記 から 行

目 次 1. はじめに 3 2. システム 要 件 4 3. HDD Password Tool のインストール 5 Windows の 場 合 5 Mac の 場 合 8 4. HDD Password Tool の 使 い 方 HDD Password Tool を 起 動 する

< 目 次 > 8. 雇 用 保 険 高 年 齢 雇 用 継 続 給 付 27 ( 育 児 休 業 給 付 介 護 休 業 給 付 ) 8.1 高 年 齢 雇 用 継 続 給 付 画 面 のマイナンバー 設 定 高 年 齢 雇 用 継 続 給 付 の 電 子 申 請 高

目 次. WEB メールへのログイン.... メール 送 信 手 順.... メール 受 信 手 順 アドレス 帳 の 操 作 手 順 フォルダーの 操 作 手 順 メール 発 信 者 登 録 署 名 登 録 手 順 基 本 的 な 設 定

WebMail ユーザーズガイド

<4D F736F F F696E74202D208E9197BF322D31208C9A90DD B835E CC8A C982C282A282C4>

正転時とは反対に回転する これが逆転である 図 2(d) の様に 4 つのスイッチ全てが OFF の場合 DC モータには電流が流れず 停止する ただし 元々 DC モータが回転していた場合は 惰性でしばらく回転を続ける 図 2(e) の様に SW2 と SW4 を ON SW1 と SW3 を O

目 次 機 能 概 要 ン/ チャ 引 新 規 注 文 - WAY 新 規 注 文 - WAY OCO 新 規 注 文 - 成 行 新 規 注 文 - 指 値 逆 指 値 新 規 注 文 - IFD 新 規 注 文 - OCO 新 規 注 文 - IFDOCO 新 規 注 文 - 決 済 注 文 -

Microsoft Word - 工学ゼミ3_テキスト

変 更 履 歴 日 付 版 数 変 更 内 容 2012/07/13 Rev 初 版 発 行 2013/07/03 Rev 対 応 機 器 一 覧 機 器 一 覧 を 更 新 [Settings] 画 面 の 表 示 時 刻 を 挿 入 する 機 能 を

サービス説明書 - STP 10000TLEE-JP-10 / STP 10000TLEE-JP-11 / STP 20000TLEE-JP-11 / STP 25000TL-JP-30

設定フロー ★印は必須の設定です

Microsݯft Word - 91 forܠ2009November.docx

(2) 実 務 上 の 取 扱 い 減 価 償 却 の 方 法 は 会 計 方 針 にあたるため その 変 更 は 本 来 会 計 方 針 の 変 更 として 遡 及 適 用 の 対 象 と なります しかしながら 減 価 償 却 方 法 の 変 更 については 会 計 方 針 の 変 更 を 会

第三十六号の二様式(第五条関係)(A4)

また RLF 命令は 図 2 示す様に RRF 命令とは逆に 各ビットを一つずつ 左方向に回転 ( ローテイト ) する命令である 8 ビット変数のアドレスを A とし C フラグに 0 を代入してから RLF A,1 を実行すると 変数の内容が 左に 1 ビットシフトし 最下位ビット (LSB)

技術報告会原稿フォーマット

名称

4 応 募 者 向 けメニュー 画 面 が 表 示 されます 応 募 者 向 けメニュー 画 面 で [ 交 付 内 定 時 の 手 続 を 行 う] [ 交 付 決 定 後 の 手 続 を 行 う]をクリックします 10

<4D F736F F D2093CD8F6F82AA954B977682C88C9A95A882CC94BB926682CC DD5F48508C668DDA E646F63>

<4D F736F F D20819C486F70658F6F93588ED297708AC7979D89E696CA837D836A B E A2E646F63>

目 次 第 1 土 地 区 画 整 理 事 業 の 名 称 等 1 1. 土 地 区 画 整 理 事 業 の 名 称 1 2. 施 行 者 の 名 称 1 第 2 施 行 地 区 1 1. 施 行 地 区 の 位 置 1 2. 施 行 地 区 位 置 図 1 3. 施 行 地 区 の 区 域 1 4

以 下 に 手 順 の 流 れを 記 載 します 3ページ 以 降 で 各 項 目 の 手 順 を 説 明 します ( をクリックすると 該 当 ページにジャンプします ) また 15ページに 汎 用 データ 受 入 に 関 する よくあるお 問 い 合 わせをご 紹 介 しています Step1 (

1. 業 務 概 要 貨 物 情 報 登 録 済 の 貨 物 に 対 して システムを 介 さずに 行 われた 税 関 手 続 きについて 税 関 が 許 可 承 認 等 を 行 った 旨 を 登 録 する また システムで 行 われた 以 下 の 税 関 手 続 き( 以 下 輸 出 申 告 等


H28記入説明書(納付金・調整金)8

SoftBank 202F 取扱説明書

・モニター広告運営事業仕様書

損 益 計 算 書 自. 平 成 26 年 4 月 1 日 至. 平 成 27 年 3 月 31 日 科 目 内 訳 金 額 千 円 千 円 営 業 収 益 6,167,402 委 託 者 報 酬 4,328,295 運 用 受 託 報 酬 1,839,106 営 業 費 用 3,911,389 一

医療費控除の入力編

ネットde記帳 平成24年度の申告について

医 療 費 自 己 負 担 額 支 払 明 細 書 入 力 シート - 目 次 - < 第 1 章 > 共 通 事 項 説 明 医 療 費 自 己 負 担 額 支 払 明 細 書 入 力 シート 目 次 1.1 本 システムの 注 意 点 入 力 項 目 について 基 本 情

PowerPoint Presentation

2. 番 号 種 別 の 利 用 方 法 わが 国 の 番 号 方 式 に 照 らして INSネットでの 番 号 種 別 の 具 体 的 な 利 用 方 法 を 記 述 すると 以 下 のようにな ります (1) 番 号 種 別 (TON)= 不 定 電 話 サービスと 同 様 のダイヤル 手 順

( 別 途 調 査 様 式 1) 減 損 損 失 を 認 識 するに 至 った 経 緯 等 1 列 2 列 3 列 4 列 5 列 6 列 7 列 8 列 9 列 10 列 11 列 12 列 13 列 14 列 15 列 16 列 17 列 18 列 19 列 20 列 21 列 22 列 固 定

ご 注 意 (1) 本 書 の 内 容 の 一 部 又 は 全 部 を 無 断 で 転 載 することは 禁 止 されています (2) 本 書 の 内 容 は 将 来 予 告 無 しに 変 更 することがあります (3) 本 書 の 内 容 は 万 全 を 期 して 作 成 しておりますが ご 不 審

POWER EGG V2.01 ユーザーズマニュアル ファイル管理編

506HW ユーザーガイド Chapter7

電子納品チェックシステム利用マニュアル

計算式の取り扱い

目 次 第 1 章 は じ め に... 3 第 2 章 基 本 的 な キ ー 操 作... 4 第 3 章 メ ニ ュ ー 画 面... 6 第 4 章 入 荷 業 務... 7 第 5 章 出 荷 業 務... 9 第 6 章 商 品 照 会...11 第 7 章 棚 卸 業 務...12 第

QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは?

PIC12C5XX日本語データシート

Vol.7

第2回 制度設計専門会合 事務局提出資料

の と す る (1) 防 犯 カ メ ラ を 購 入 し 設 置 ( 新 設 又 は 増 設 に 限 る ) す る こ と (2) 設 置 す る 防 犯 カ メ ラ は 新 設 又 は 既 設 の 録 画 機 と 接 続 す る こ と た だ し 録 画 機 能 付 防 犯 カ メ ラ は

工事記録写真チェックシステム 操作説明書

6-1 第 6 章 ストック オプション 会 計 設 例 1 基 本 的 処 理 Check! 1. 費 用 の 計 上 ( 1 年 度 ) 2. 費 用 の 計 上 ( 2 年 度 )- 権 利 不 確 定 による 失 効 見 積 数 の 変 動 - 3. 費 用 の 計 上 ( 3 年 度 )-

GRIDY SFA カスタム 項 目 操 作 ガイド 用 本 書 はに 必 要 な 操 作 を 解 説 しております は GRIDY SFA ののことです GRIDY SFA へ 申 し 込 み 最 初 に 登 録 を 行 った 方 がそのままとなります カスタム 項 目 はの 方 のみ 操 作 可

第316回取締役会議案

Transcription:

1. PIC とは PIC とはその 挙 動 をプログラムできる IC のことである Peripheral Interface Controller の 略 でコン ピュータの 周 辺 機 器 の 接 続 部 分 をコントロールするために 開 発 されたマイクロコントローラである 開 発 元 は Microchip Tecnology Inc. 社 で PIC とは 同 社 の PICmicro(R)マイクロコントローラを 指 す PIC は 内 部 的 には 小 規 模 なコンピュータで IC のパッケージ 内 に 演 算 装 置 やデータメモリ プログ ラムメモリ 等 が 内 蔵 されている 本 実 験 では PIC16F84A という PIC を 用 いる PIC16F84A 外 観 1

2. アーキテクチャ 概 要 PIC16F8x ファミリは 命 令 語 長 14bit の RISC[1]で 命 令 は35 種 類 である 1 命 令 は4クロックで 実 行 されるが 実 際 にはパイプライン 処 理 [2]されている ノイマン 型 コンピュータ[3]と 違 いプログラムとデータは 別 々の 記 憶 装 置 に 格 納 される (これをハー バードアーキテクチャという ) PIC16F84A のプログラムメモリはフラッシュメモリで 1K ワード データメモリは SRAM で 0x0C 番 地 からの 68 バイトを 汎 用 レジスタとして 使 用 することが 出 来 る データメモリの 0~0x0B 番 地 まで 0x80~0x9B 番 地 までの 24 個 のレジスタは 特 殊 機 能 レジスタと 呼 ばれプログラムカウンタやフラグ レジスタなどとして 予 約 されている アドレッシングは 基 本 的 に 即 値 であるが 間 接 アドレッシングも 可 能 である ALU は 加 算 減 算 ビットごとの 包 括 的 排 他 的 論 理 和 論 理 積 左 右 ローテート 等 が 可 能 である 演 算 はワーキングレジスタ(アキュムレータ)と 汎 用 レジスタとの 間 で 行 われ 結 果 の 格 納 はそのど ちらかを 指 定 する ワーキングレジスタはアドレッシング 出 来 ない スタックとして 13bit 8 段 のハードウェアスタックが 搭 載 されているが サブルーチンコールや 割 り 込 み 時 の 戻 り 番 地 を 格 納 することのみに 使 用 される スタックはアドレッシング 出 来 ない I/O ポートは 5bit の PORTA と 8bit の PORTB の 二 つがあり ビット(ピン)ごとに 入 力 出 力 モード を 設 定 可 能 である 両 ポートはレジスタであり 特 殊 機 能 レジスタに 配 置 されている 割 り 込 み 機 能 があり 割 り 込 み 要 因 として 外 部 ポート B 変 化 タイマーオーバーフロー EEPROM 書 き 込 み 終 了 の4 種 類 がある 割 り 込 みベクタ[4]はどの 割 り 込 みでも 0x04 番 地 で 固 定 である 2

PIC16F8x ブロック 図 3

3. メモリ 構 成 3.1 データメモリ 構 成 以 下 に PIC16F84A のデータメモリ 構 成 を 示 す PIC16F84A のデータメモリ 構 成 PIC16F84A のデータメモリは 128 バイトのバンク0とバンク1に 分 割 されている これは PIC16F84A のデータメモリアドレスバスが 8 ビットであるためである バンクを 切 り 替 えるとことで 0x7F 番 地 より 大 きなメモリにアクセスすることが 出 来 る バンクの 切 り 替 えは 特 殊 機 能 レジスタによって 行 う 1つのバンクは 128 バイトだが 図 1.3.1 を 見 て 解 る 通 り 各 バンクの 0x50 番 地 以 降 は 実 装 されてい ない また バンク1の 0x0C 番 地 以 降 はバンク0の 0x0C 番 地 にマッピングされており バンク0と 同 じ 値 がリードされる 4

3.2 特 殊 機 能 レジスタ データメモリの 各 バンクの 最 初 の12 個 のレジスタは 特 殊 機 能 レジスタである このうち 重 要 なレジ スタを 次 に 解 説 する 3.2.1 STATUS レジスタ bank0 0x03 番 地 演 算 のフラグレジスタとバンク 選 択 bit7 bit0 IRP RP1 RP0 TO PD Z DC C 名 称 bit7 IRP バンク 選 択 ビット bit6 RP1 バンク 選 択 ビット bit5 RP0 バンク 選 択 ビット 0 = バンク0 1 = バンク1 bit4 TO タイムアウトビッ ト bit3 PD パワーダウンビッ ト 不 使 用 クリアされているものとする 説 明 1 = 電 源 ON 後 CLRWT 命 令 または SLEEP 命 令 の 実 行 後 0 = WDT タイムアウト 発 生 1 = 電 源 ON 後 または CLRWDT 命 令 による 0 = SLEEP 命 令 の 実 行 による bit2 Z ゼロビット 1 = 計 算 またはロジック 演 算 の 結 果 がゼロ 0 = 計 算 またはロジック 演 算 の 結 果 がゼロでない bit1 DC デジットキャリー ビット 1 = 結 果 により 下 位 4 ビット 目 からキャリーが 発 生 した 0 = 結 果 により 下 位 4 ビット 目 からキャリーが 発 生 しなかった bit0 C キャリービット 1 = 結 果 により 最 上 位 ビットからキャリーが 発 生 した 0 = 結 果 により 最 上 位 ビットからキャリーが 発 生 しなかった 5

3.2.2 OPTION_REG レジスタ bank1 0x8C 番 地 周 辺 機 能 の 使 用 不 使 用 およびユーティリティ bit7 bit0 RBPU INTEDG T0CS T0SE PSA PB2 PS1 PS0 名 称 bit7 RBPU PORT B プル アップイネーブ ルビット bit6 INTEDG 割 り 込 みエッジ 選 択 ビット bit5 T0CS TMR0 クロック ソース 選 択 ビッ ト 説 明 1 = PORTB プルアップを 使 用 しない 0 = PORTB プルアップを 使 用 する 1 = RB0/INT ピンの 立 ち 上 がりエッジにより 割 り 込 み 0 = RB0/INT ピンの 立 ち 下 がりエッジにより 割 り 込 み 1 = RA4/T0CKI ピンの 入 力 0 = 内 部 命 令 サイクルクロック (CLKOUT) bit4 T0SE TMR0 ソースエッ1 = RA4/T0CKI ピンの 入 力 が High から Low でインクリメント ジ 選 択 ビット 0 = RA4/T0CKI ピンの 入 力 が Low から High でインクリメント bit3 PSA プリスケーラ 割 り 当 てビット bit2 bit1 bit0 PB2 PS1 PS0 1 = プリスケーラは WDT へ 割 り 当 て 0 = プリスケーラは TMR0 へ 割 り 当 て プリスケーラレー 000 = 1:2 / 1:1 ト 選 択 ビット 001 = 1:4 / 1:2 010 = 1:8 / 1:4 011 = 1:16 / 1:8 100 = 1:32 / 1:16 101 = 1:64 / 1:32 110 = 1:128 / 1:64 111 = 1:256 / 1:128 (TMR0 レート/WDT レート) 6

3.2.3 INTCON レジスタ bak0 0x0B 番 地 および bank1 0x8B 番 地 割 り 込 み 許 可 不 許 可 および 割 り 込 みフラグ bit7 bit0 GIE EEIE T0IE INTE RBIE T0IF INTF RBIF 名 称 bit7 GIE グローバル 割 り 込 みイネー ブルビット bit6 EEIE EE ライト 完 了 割 り 込 みイネー ブルビット 説 明 1 = すべてのマスクされていない 割 り 込 み 発 生 を 許 可 する 0 = 全 ての 割 り 込 み 発 生 を 禁 止 する 1 = EE ライト 完 了 割 り 込 み 発 生 を 許 可 する 0 = EE ライト 完 了 割 り 込 み 発 生 を 禁 止 する bit5 T0IE TMR0 オーバー 1 = TMR0 割 り 込 み 発 生 を 許 可 する フロー 割 り 込 0 = TMR0 割 り 込 み 発 生 を 禁 止 する みイネーブル ビット bit4 INTE RB0/INT 割 り 込 みイネーブ ルビット bit3 RBIE RB ポート 変 化 割 り 込 みイネー ブルビット 1 = RB0/INT 割 り 込 み 発 生 を 許 可 する 0 = RB0/INT 割 り 込 み 発 生 を 禁 止 する 1 = RB ポート 変 化 割 り 込 み 発 生 を 許 可 する 0 = RB ポート 変 化 割 り 込 み 発 生 を 禁 止 する bit2 T0IF TMR0 オーバー 1 = TMR0 がオーバーフローした(ソフトウェアでクリア 要 ) フロー 割 り 込 0 = TMR0 がオーバーフローしていない みフラグビット bit1 INTF RB0/INT 割 り 込 みフラグビッ ト bit0 RBIF RB ポート 変 化 割 り 込 みフラグ ビット 1 = RB0/INT 割 り 込 みが 発 生 した(ソフトウェアでクリア 要 ) 0 = RB0/INT 割 り 込 みが 発 生 していない 1 = 少 なくとも 1 つ 以 上 の RB7:RB4 ピンの 状 態 が 変 化 した (ソフトウェアでクリア 要 ) 0 = 状 態 が 変 化 した RB7:RB4 ピンはない 7

3.2.4 FSR,INDF レジスタ 間 接 アドレッシングに 使 用 INDF レジスタへのアクセスは FSR レジスタの 値 の 番 地 のレジスタへのアクセスとなる 3.2.4.1 FSR レジスタ bank0 0x04 番 地 および bank1 0x84 番 地 3.2.4.2 INDF レジスタ bank0 0x00 番 地 および bank1 0x80 番 地 尚 物 理 的 には 存 在 しない 8

4. 命 令 セット PIC16Cxx ファミリの 命 令 セットの 命 令 は 35 種 類 で 共 通 である 4.1 命 令 セット サマリ ニーモニック 説 明 命 令 サイクル 影 響 されるステータス バイト 対 応 のファイルレジスタ 命 令 ADDWF f,d Add W and f 1 C,DC,Z ANDWF f,d AND W with f 1 Z CLRF f Clear f 1 Z CLRW - Clear W 1 Z COMF f,d Complement f 1 Z DECF f,d Decrement f 1 Z DECFSZ f,d Decrement f, Skip if zero 1(2) - INCF f,d Increment f 1 Z INCFSZ f,d Increment f, Skip if zero 1(2) - IORWF f,d Inclusive OR W with f 1 Z MOVF f,d Move f 1 Z MOVWF f Move W to f 1 - NOP - No Operation 1 - RLF f,d Rotate Left f through Carry 1 C RRF f,d Rotate Right f throught Carry 1 C SUBWF f,d Subtract W from f 1 C,DC,Z SWAPF f,d Swap nibbles in f 1 - XORWF f,d Exclusive OR W with f 1 Z ビット 対 応 のファイルレジスタ 命 令 BCF f,b Bit Clear f 1 - BSF f,b Bit Set f 1 - BTFSC f,b Bit Test f, Skip if Clear 1(2) - BTFSS f,b Bit Test f, Skip if Set 1-9

ニーモニック 説 明 命 令 サイクル 影 響 されるステータス リテラルおよびコントロール 命 令 ADDLW k Add literal and W 1 C,DC,Z ANDLW k AND literal with W 1 Z CALL k Call subroutine 2 - CLRWDT - Clear Watchdog Timer 1 ~TO,~PD GOTO k Go to address 2 - IORLW k Inclusive OR literal with W 1 Z MOVLW k Move literal to W 1 - RETFIE - Return from interrupt 2 - RETLW k Return with literal in W 2 - RETURN - Return from Subroutine 2 - SLEEP - Go into srandly mode 1 ~TO,~PD SUBLW k Subtract W from literal 1 C,DC,Z XORLW k Exclusive OR literal with W 1 Z 記 号 の 読 み 方 W : ワーキングレジスタ(working registor) f : ファイルレジスタ(file registor)の 即 値 アドレス d : 格 納 先 (distination) 0 = W, 1 = f b : 桁 k : リテラル 10

4.2 命 令 セット 詳 説 ADDLW Add Literal and W 構 文 : [label] ADDLW k オペランド : 0 k 255 操 作 : (W) + k (W) 影 響 フラグ : C, DC, Z 説 明 : W レジスタの 内 容 を 8 ビットのリテラル "k" に 加 え この 結 果 を W レジスタに ライトする ADDWF Add W and f 構 文 : [label] ADDWF f,d d {0,1} 操 作 : (W) + f (distination) 影 響 フラグ : C, DC, Z 説 明 : W レジスタの 内 容 をレジスタ "f" に 加 える この 結 果 を d=0 であれば W ANDLW レジスタに d=1 であればレジスタ"f" にライトする AND Literal with W 構 文 : [label] ANDLW k オペランド : 0 k 255 操 作 : (W) AND k (W) 影 響 フラグ : Z 説 明 : W レジスタの 内 容 と 8 ビットのリテラル "k" の AND を 行 う この 結 果 を d=0 であれば W レジスタに d=1 であればレジスタ "f" にライトする ANDWF AND W with f 構 文 : [label] ANDWF f,d d [0,1] 操 作 : (W) AND f (distination) 影 響 フラグ : Z 説 明 : W レジスタとレジスタ "f" の AND を 行 う この 結 果 を d=0 であれば W レジ スタに d=1 であればレジスタ"f" にライトする 11

BCF Bit Clear f 構 文 : [label] BCF f,b 0 b 7 操 作 : 0 (f<b>) 説 明 : レジスタ "f" のビット "b" をクリアする BSF Bit Set f 構 文 : [label] BSF f,b 0 b 7 操 作 : 1 (f<b>) 説 明 : レジスタ "f" のビット "b" がセットする BTFSC Bit Test, Skip if Clear 構 文 : [label] BTFSC f,b 0 b 7 操 作 : skip if (f<b>) = 0 説 明 : レジスタ "f" のビット "b" が 1 の 場 合 次 の 命 令 を 実 行 する ビット "b" が 0 の 場 合 は 次 の 命 令 を 破 棄 して かわりに NOP を 実 行 する 2 サイクル 命 令 になる (2) BTFSS Bit Test f, Skip if Set 構 文 : [label] BTFSS f,b 0 b 7 操 作 : skip if (f<b>) = 1 説 明 : W レジスタ "f" のビット "b" が 0 の 場 合 次 の 命 令 を 実 行 する "b" が 1 の 場 合 は 次 の 命 令 を 破 棄 して かわりに NOP を 実 行 する 2 サイクル 命 令 になる (2) 12

CALL Call Subroutine 構 文 : [label ] CALL k オペランド : 0 k 2047 操 作 : (PC) + 1 TOS, k PC<10:0>, (PCLATH<4:3>) PC<12:11> 説 明 : サブルーチンをコールする まず リターンアドレス (PC+1) をスタック にプッシュして 11 ビットのリテラルアドレスを PC のビット <10:0> に ロードする PC の 上 位 ビットは PCLATH からロードする CALL は 2 サイクルの 命 令 です 命 令 サイクル : 2 CLRF Clear f 構 文 : [label] CLRF f 操 作 : 00h (f) 1 Z 影 響 フラグ : Z 説 明 : レジスタ "f" の 内 容 をクリアして Z ビットをセットする CLRW Clear W 構 文 : [label] CLRW オペランド : なし 操 作 : 00h (W) 1 Z 影 響 フラグ : Z 説 明 : W レジスタをクリアして Z ビットをセットする 13

CLRWDT Clear Watchdog Timer 構 文 : [label] CLRWDT オペランド : なし 操 作 : 00h WDT 0 WDT prescaler, 1 TO 1 PD 影 響 フラグ : TO, PD 説 明 : CLRWDT 命 令 は WDT をリセットする また WDT のプリスケーラもリ セットする ステータス ビット TO および PD をセットする COMF Complement f 構 文 : [label] COMF f,d d [0,1] 操 作 : (f) (destination) 影 響 フラグ : Z 説 明 : レジスタ "f" の 内 容 の 補 数 をとる この 結 果 を d=0 であれば W レジ スタに d=1 であればレジスタ "f" にライトする DECF Decrement f 構 文 : [label] DECF f,d d [0,1] 操 作 : (f) - 1 (destination) 影 響 フラグ : Z 説 明 : レジスタ "f" をデクリメントする この 結 果 を d=0 であれば W レジスタ に d=1 であればレジスタ "f" にライトする DC に 影 響 しない 点 に 注 意 14

DECFSZ Decrement f, Skip if 0 構 文 : [label] DECFSZ f,d d [0,1] 操 作 : (f) - 1 (destination); skip if result = 0 説 明 : レジスタ "f" をデクリメントする この 結 果 を d=0 であれば W レジスタ (2) GOTO に d=1 であればレジスタ "f" にライトする 結 果 が 1 の 場 合 は 次 の 命 令 を 実 行 する 結 果 が 0 の 場 合 は 次 の 命 令 を 破 棄 かわりに NOP を 実 行 して 2 サイクル 命 令 になる Unconditional Branch 構 文 : [label] GOTO k オペランド : 0 k 2047 操 作 : k PC<10:0> PCLATH<4:3> PC<12:11> 説 明 : GOTO は 無 条 件 の 分 岐 命 令 11 ビットのリテラルアドレスを PC のビット <10:0> にロードする PC の 上 位 ビットへは PCLATH <4:3> をロードする GOTO は 2 サイクルの 命 令 である 命 令 サイクル : 2 INCF Increment f 構 文 : [label] INCF f,d d [0,1] 操 作 : (f) + 1 (destination) 影 響 フラグ : Z 説 明 : レジスタ "f" の 内 容 をインクリメントする この 結 果 を d=0 であれば W レジス タに d=1 であればレジスタ"f" にライトする C に 影 響 しない 点 に 注 意 15

INCFSZ Increment f, Skip if 0 構 文 : [label] INCFSZ f,d d [0,1] 操 作 : (f) + 1 (destination), skip if result = 0 説 明 : レジスタ "f" の 内 容 をインクリメントする この 結 果 を d=0 であれば W レジス タに d=1 であればレジスタ"f" にライトする 結 果 が 1 の 場 合 は 次 の 命 令 を 実 行 する 結 果 が 0 の 場 合 は 次 の 命 令 を 破 棄 かわりに NOP を 実 行 し て 2 サイクル 命 令 になる (2) IORLW Inclusive OR Literal with W 構 文 : [label] IORLW k オペランド : 0 k 255 操 作 : (W).OR. k (W) 影 響 フラグ : Z 説 明 : W レジスタの 内 容 と 8 ビットのリテラル 'k' の OR を 行 う この 結 果 を W レジ スタにライトする IORWF Inclusive OR W with f 構 文 : [label] IORWF f,d d [0,1] 操 作 : (W).OR. (f) (destination) 影 響 フラグ : Z 説 明 : W レジスタとレジスタ "f" の OR を 行 う この 結 果 を d=0 であれば W レジス タに d=1 であればレジスタ"f" にライトする 16

MOVF Move f 構 文 : [label] MOVF f,d d [0,1] 操 作 : (f) (destination) 影 響 フラグ : Z 説 明 : レジスタ "f" の 内 容 を 結 果 格 納 先 "d" に 移 動 する d=0 であれば 結 果 格 納 先 は W レジスタである d=1 であれば 結 果 格 納 先 は 同 じファイルレジスタ"f" である d=1 は ステータスフラグ Z が 影 響 するので ファイル レジスタのテ ストに 便 利 MOVLW Move Literal to W 構 文 : [label] MOVLW k オペランド : 0 k 255 操 作 : k (W) 説 明 : 8 ビットのリテラル 'k' を W レジスタにロードする "xx" は "00" とアセンブル される MOVWF Move W to f 構 文 : [label] MOVWF f 操 作 : (W) (f) 説 明 : W レジスタからレジスタ "f" にデータを 移 動 する NOP No Operation 構 文 : [label] NOP オペランド : なし 操 作 : No operation 説 明 : 何 も 行 いません 17

RETFIE Return from Interrupt 構 文 : [label] RETFIE オペランド : なし 操 作 : TOS PC, 1 GIE 説 明 : 割 り 込 みからの 復 帰 スタックをポップして スタックの 最 上 位 (TOS) を PC にロードする GIE ( グローバル 割 り 込 みイネーブル) ビットをセットして 割 り 込 みをイネーブルにする(lNTCON<7>) 2 サイクル 命 令 命 令 サイクル : 2 RETLW Return with Literal in W 構 文 : [label] RETLW k オペランド : 0 k 255 操 作 : k (W); TOS PC 説 明 : 8 ビットのリテラル 'k' を W レジスタにロードして スタックの 最 上 位 (リターン アドレス) をプログラムカウンタへロードする 2 サイクル 命 令 命 令 サイクル : 2 RETURN Return from Subroutine 構 文 : [label] RETURN オペランド : なし 操 作 : TOS PC 説 明 : サブルーチンからの 復 帰 スタックをポップして 次 にスタックの 最 上 (TOS) をプログラムカウンタにロードする 2 サイクルの 命 令 命 令 サイクル : 2 18

RLF Rotate Left f through Carry 構 文 : [label] RLF f,d d [0,1] 操 作 : See description below 影 響 フラグ : C 説 明 : レジスタ "f" の 内 容 をキャリーフラグを 通 して 1 ビット 左 に 回 転 する この 結 果 を d=0 であれば W レジスタに d=1 であればレジスタ "f" にライトする RRF Rotate Right f through Carry 構 文 : [label] RRF f,d d [0,1] 操 作 : See description below 影 響 フラグ : C 説 明 : レジスタ "f" の 内 容 をキャリーフラグを 通 して 1 ビット 右 に 回 転 する この 結 果 を d=0 であれば W レジスタに d=1 であればレジスタ "f" にライトする SLEEP 構 文 : [label] SLEEP オペランド : なし 操 作 : 00h WDT, 0 WDT prescaler, 1 TO, 0 PD 影 響 フラグ : TO, PD 説 明 : パワーダウンステータスビット(PD)をクリア タイムアウトステータスビット (TO) をセット ウォッチドッグタイマとそのプリスケーラをクリアする プロセッサは SLEEP モードに 入 る オシレータは 停 止 する 詳 細 は 14.8 項 を 参 照 19

SUBLW Subtract W from Literal 構 文 : [label] SUBLW k オペランド : 0 k 255 操 作 : k - (W) (W) 影 響 フラグ : C, DC, Z 説 明 : 8 ビットのリテラル "k" から W レジスタの 内 容 を 引 く (2 の 補 数 法 ) この 結 果 を W レジスタにライトする SUBWF Subtract W from f 構 文 : [label] SUBWF f,d d [0,1] 操 作 : (f) - (W) (destination) 影 響 フラグ : C, DC, Z 説 明 : レジスタ "f" から W レジスタの 内 容 を 引 く (2 の 補 数 法 ) この 結 果 を d=0 であれば W レジスタに d=1 であればレジスタ "f" にライトする SWAPF Swap Nibbles in f 構 文 : [label] SWAPF f,d d [0,1] 操 作 : (f<3:0>) (destination<7:4>), (f<7:4>) (destination<3:0>) 説 明 : レジスタ "f" の 上 位 ニブルと 下 位 ニブルを 入 れ 替 える この 結 果 を d=0 で あれば W レジスタに d=1 であればレジスタ "f" にライトする XORLW Exclusive OR Literal with W 構 文 : [label] XORLW k オペランド : 0 k 255 操 作 : (W).XOR. k (W) 影 響 フラグ : Z 説 明 : W レジスタの 内 容 と 8 ビットのリテラル "k" との XOR をとり その 結 果 を W レジスタにライトする 20

XORWF Exclusive OR W with f 構 文 : [label] XORWF f,d d [0,1] 操 作 : (W).XOR. (f) (destination) 影 響 フラグ : Z 説 明 : W レジスタの 内 容 とレジスタ "f" との XOR をとる この 結 果 を d=0 であれ ば W レジスタに d=1 であればレジスタ "f" にライトする 21

5. I/O ポート PIC16F84A には 5bit の PORTA と 8bit の PORTB の2つの 入 出 力 ポートがある ここではそれぞ れの 特 性 および 使 い 方 について 記 述 する 5.1 PORTA PORTA は 5bit の 入 出 力 ポートである 対 応 するレジスタは bank0 0x05 番 地 の PORTA レジスタ である PORTA レジスタの 上 位 3bit は 0 としてリードされる PORTA は IC の 1 番 2 番 3 番 18 番 17 番 ピンにあたる ピン 名 称 はそれぞれ RA0 RA1 RA2 RA3 RA4 である RA4 はオープンドレイン[5]なので 他 の 4 つのピンのように 出 力 に 使 うことは 出 来 ない 入 力 は 通 常 通 りに 使 用 できる RA4 は TMR0 の 外 部 クロックソース 入 力 として 使 用 できる( 後 述 ) PORTA を 使 う 前 に PORTA の 各 ピンの 入 出 力 設 定 をする 必 要 がある 入 出 力 設 定 は bank1 にあ る TRISA レジスタで 操 作 できる TRISA レジスタのビットが1になると 対 応 する PORTA ピンが 入 力 に 0 になると 出 力 となる アドレス bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 0x05 - - - RA4 RA3 RA2 RA1 RA0 0x85 - - - TRISA4 TRISA3 TRISA2 TRISA1 TRISA0 リセット 時 の PORTA レジスタの 値 は 不 定 TRISA レジスタの 値 は'11111'である 故 に PORTA を 出 力 として 使 う 前 には 初 期 化 する 必 要 がある 例 えば 以 下 のようにする bsf STATUS,RP0 ; 操 作 バンクを bank1 に 変 更 movlw B'00001' ; movwf TRISA ;RA0 以 外 を 入 力 に bcf STATUS,RP0 ; 操 作 バンクを 元 に 戻 す clrf PORTA ;PORTA 初 期 化 この 例 では RA0 を 入 力 に それ 以 外 を 出 力 に 設 定 した TRISA レジスタが bank1 にあるためバン ク 選 択 ビット(STATUS<5>)を 操 作 する 必 要 がある 後 は 通 常 のレジスタとしてリード/ライト 可 能 である 22

5.2 PORTB PORTB は 8bit の 入 出 力 ポートである 対 応 するレジスタは bank0 0x06 番 地 の PORTB レジスタで ある PORTA は IC の 6 番 ~13 番 ピンにあたる ピン 名 称 はそれぞれ RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 である RA4~RA7 の 4 つのピンが 入 力 で 値 が 変 化 すると PORTB 変 化 割 り 込 みが 発 生 する PORTA と 同 様 に PORTB を 使 う 前 には PORTB の 各 ピンの 入 出 力 設 定 をする 必 要 がある 入 出 力 設 定 は bank1 にある TRISB レジスタで 操 作 できる TRISA レジスタのビットが1になると 対 応 する PORTA ピンが 入 力 に 0 になると 出 力 となる アドレス bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 0x06 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 0x86 TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 リセット 時 の PORTB レジスタの 値 は 不 定 TRISB レジスタの 値 は'11111111'である 故 に PORTB を 出 力 として 使 う 前 には 初 期 化 する 必 要 がある 例 えば 以 下 のようにする bsf STATUS,RP0 ; 操 作 バンクを bank1 に 変 更 movlw B'11110000' ; movwf TRISB ;PORTB 上 位 4ビットを 入 力 に bcf STATUS,RP0 ; 操 作 バンクを 元 に 戻 す clrf PORTB ;PORTB 初 期 化 この 例 では PORTB の 上 位 4 ビットを 入 力 に それ 以 外 を 出 力 に 設 定 した TRISB レジスタが bank1 にあるためバンク 選 択 ビット(STATUS<5>)を 操 作 する 必 要 がある 後 は 通 常 のレジスタとしてリード/ライト 可 能 である 23

6. 割 り 込 み PIC16F84A には 4 つの 割 り 込 み 要 因 がある 外 部 PORTB 変 化 TMR0 オーバーフロー EEPROM 書 き 込 み 終 了 の 4 つがそれである ここではそれぞれの 使 い 方 について 記 述 する 6.1 割 り 込 みとは 割 り 込 みとは 外 部 のイベントが 起 こったときにそれに 対 応 するルーチンを 呼 び 出 す 仕 組 みのこと である 外 部 のイベントとは ここでは RB0/INTE ピンが 変 化 する PORTB の 上 位 4 ビットが 変 化 する TMR0(タイマー)の 値 がオーバーフローする データ EEPROM を 書 き 込 み 終 わる 事 を 指 す 具 体 的 に PIC では 割 り 込 みが 発 生 するとプログラムカウンタ[6]に 0x04 という 値 がロードされる つ まり 割 り 込 みが 発 生 するとプログラムメモリの 0x04 番 地 以 降 の 命 令 が 実 行 される 戻 り 番 地 は 割 り 込 みが 起 こる 瞬 間 に 自 動 的 にスタックに 積 まれる 割 り 込 みの 重 要 な 点 は メインプログラムが 割 り 込 み 発 生 の 前 後 で 何 事 も 無 かったかのように 実 行 されることである これはメインプログラムでは 割 り 込 みの 発 生 を 意 識 する 必 要 が 無 いということであ る 割 り 込 みイベントが 命 令 の 実 行 中 に 起 こっても 実 際 に 割 り 込 みが 起 こるのはその 命 令 が 終 了 し た 後 である 上 図 では n 番 地 の 命 令 が 実 行 中 に 割 り 込 みが 発 生 したとしている この 場 合 n 番 地 の 命 令 が 実 行 されその 次 に 割 り 込 みハンドラが 実 行 され その 後 に n+1 番 地 の 命 令 が 実 行 される 6.2 共 通 何 らかの 割 り 込 みが 発 生 すると プログラムカウンタに 0x04 がロードされる 従 って プログラムメ モリの 0x04 番 地 から 割 り 込 みからのリターン 命 令 (retfie)までの 命 令 が 割 り 込 みハンドラとなる 割 り 込 みは 4 種 類 あるが 割 り 込 みベクタの 位 置 は 0x04 で 固 定 である 割 り 込 みハンドラには 以 下 の 実 行 内 容 が 必 要 である 割 り 込 み 発 生 の 不 許 可 ( 多 重 割 り 込 み 防 止 ) プログラムコンテキストの 退 避 ( 割 り 込 み 要 因 の 特 定 と 実 行 内 容 の 振 り 分 け) 24

割 り 込 みフラグのクリア 割 り 込 みサービス プログラムコンテキストの 復 帰 割 り 込 みからの 復 帰 割 り 込 み 発 生 の 不 許 可 とは それ 以 上 割 り 込 みが 発 生 しないようにすることである この 命 令 は 割 り 込 みハンドラの 最 初 つまり 0x04 番 地 にある 必 要 がある そのためには INTCON レジスタの GIE ビットをクリアする GIE ビットは 割 り 込 みグローバルイネー ブルビットと 呼 ばれ これが 0 なら 割 り 込 み 発 生 が 可 能 になり 1 なら 割 り 込 みが 発 生 しなくなる プログラムコンテキストの 退 避 復 帰 とはワーキングレジスタと STATUS レジスタの 内 容 をどこかに 保 存 することである 割 り 込 みハンドラ 内 でワーキングレジスタや STATUS レジスタを 変 化 させてし まうと メインプログラムの 動 作 に 影 響 が 出 てしまう そのため 割 り 込 みハンドラの 始 めの 方 でこれ らをどこかのレジスタへ 退 避 し 割 り 込 みから 復 帰 するときにこれを 復 帰 させることが 必 要 である 割 り 込 み 要 因 の 特 定 と 実 行 内 容 の 振 り 分 けとは どの 割 り 込 み 要 因 によって 割 り 込 みが 引 き 起 こさ れたか INTCON レジスタの 下 位 3ビット( 割 り 込 みフラグ)をテストして 特 定 し 割 り 込 み 要 因 に 応 じ た 処 理 へ 実 行 を 移 すことである 括 弧 付 きになっているのは プログラムによって 割 り 込 み 要 因 が1つに 特 定 されている 場 合 がある 為 である その 場 合 は 振 り 分 けの 必 要 は 無 い たいていの 場 合 全 ての 割 り 込 み 要 因 を 使 用 する ようなことは 無 い 割 り 込 みフラグのクリアとは INTCON レジスタの 下 位 3ビットの 割 り 込 みが 起 こったことを 示 すフラ グを 0 にしておくことである INTCON レジスタの 下 位 3ビットはそれぞれタイマー 割 り 込 み 発 生 フ ラグ T0IF(INTCON<3>) 外 部 割 込 み 発 生 フラグ INTF(INTOCN<1>) PORTB 変 化 割 り 込 み 発 生 フラグ RBIF(INTCON<0>)となっている これをクリアしておかないと 割 り 込 みから 復 帰 した 直 後 にまた 割 り 込 みハンドラへ 飛 んでしまう 割 り 込 みサービスとは 割 り 込 み 要 因 に 応 じた 処 理 のことである 割 り 込 みからの 復 帰 とは retfie 命 令 を 実 行 することである retfie 命 令 は 割 り 込 み 発 生 を 許 可 して スタックに 積 まれいている 戻 り 番 地 の 命 令 に 戻 ることである 即 ち INTCON レジスタの GIE ビット をセットして プログラムカウンタにスタックの 最 上 位 の 値 (TOS)をロードする 以 上 が 割 り 込 みハンドラの 基 本 的 な 流 れである 25

例 として 外 部 割 込 みが 発 生 するたびに PORTB レジスタをインクリメントするプログラムを 次 に 示 す include P16F84A.INC evac_w equ 0x0c ;ワーキングレジスタ 退 避 用 evac_status equ 0x0d ;STATUS レジスタ 退 避 用 goto start ; 割 り 込 みハンドラを 飛 ばす org 0x04 ; 割 り 込 みハンドラ ここから bcf INTCON,GIE ;GIE クリア movwf evac_w ; movf STATUS,W ;プログラムコンテキスト 退 避 mvowf evac_status ; incf PORTB ;PORTB インクリメント movf evac_status,w ; movwf STATUS ;プログラムコンテキスト 復 帰 movf evac_w,w ; retfie ; 割 り 込 みから 復 帰 start bsf STATUS,RP0 ; clrf TRISB ;PORTB を 出 力 設 定 に bcf STATUS,RP0 ; clrf PORTB ;PORTB 初 期 化 bsf INTCON,INTE ;INTE 割 り 込 み 許 可 bsf INTCON,GIE ;GIE セット lb0 goto lb0 ; 無 限 ループ end 26

6.3 外 部 割 込 み(INTE 割 り 込 み) 外 部 割 込 みは RB0/INTE ピン(6 番 ピン)が 変 化 したときに 発 生 する この 割 り 込 みを 許 可 するには INTCON レジスタの INTE ビット(INTCON<4>)をセットする 立 上 がりエッジ(Low High)で 割 り 込 むか 立 下 りエッジ(Hight Low)で 割 り 込 むかは OPTION_REG レジスタの INTEDG ビット(OPTION_REG<6>)で 設 定 できる INTEDG ビットが 1 なら 立 上 がり 0 なら 立 下 りエッジで 割 り 込 む INTE 割 り 込 みが 発 生 すると INTCON レジスタの INTF ビット(INTCON<1>)がセットされる INTF ビットは 割 り 込 みハンドラ 内 でクリアする 必 要 がある INTE 割 り 込 みは PIC をスリープ 状 態 から 起 動 することが 出 来 る 6.4 PORTB 変 化 割 り 込 み(RBIE 割 り 込 み) PORTB 割 り 込 みは RB7~RB4 のいづれかのピンが 変 化 すると 発 生 する 名 前 に 反 して PORTB の 下 位 4ビットの 変 化 では 発 生 しない 点 に 注 意 この 割 り 込 みを 許 可 するには INTCON レジスタ の RBIE ビット(INTCON<3>)をセットする RBIE 割 り 込 みが 発 生 すると INTCON レジスタの RBIF ビット(INTCON<0>)がセットされる RBIF ビットは 割 り 込 みハンドラ 内 でクリアする 必 要 がある 6.5 TMR0 オーバーフロー 割 り 込 み(T0IE 割 り 込 み) TMR0 オーバーフロー 割 り 込 みは TMR0 レジスタ(0x01 番 地 )がオーバーフローすると 発 生 する この 割 り 込 みを 許 可 するには INTCON レジスタの T0IE ビット(INTCON<5>)をセットする T0IE 割 り 込 みが 発 生 すると INTCON レジスタの T0IF ビット(INTCON<2>)がセットされる T0IF ビットは 割 り 込 みハンドラ 内 でクリアする 必 要 がある タイマー0については 後 述 する 6.6 データ EEPROM 書 き 込 み 完 了 割 り 込 み(EEIE 割 り 込 み) データ EEPROM の 書 き 込 みが 完 了 すると 発 生 する この 割 り 込 みを 許 可 するには INTCON レジ スタの EEIE ビット(INTCON<6>)をセットする この 割 り 込 みには 対 応 する 割 り 込 みフラグは 無 い データ EEPROM の 使 用 法 については 本 書 で は 解 説 しない PIC16F8x のデータシートを 参 照 されたし 7. TMR0 モジュール PIC16F84A には TMR0 モジュールというタイマ/カウンタが 搭 載 されている ここでは TMR0 モジュー ルの 使 い 方 について 記 述 する 7.1 概 要 TMR0 モジュールは 指 定 したクロックソースでカウントアップするタイマである クロックソースは RB4/CLKI のパルス 入 力 か 命 令 サイクルのどちらかを 選 択 できる タイマの 値 は bank0 0x01 番 地 TMR0 レジスタに 格 納 されている TMR0 がオーバーフローすると 割 り 込 みが 発 生 する これによって 一 定 時 間 ごとに 割 り 込 ませるこ とが 出 来 る 27

7.2 TMR0 モジュール 使 用 方 法 TMR0 モジュールのクロックソースはデフォルトで RA4/CLKI パルス 入 力 になっている TMR0 を 命 令 サイクルによってカウントアップしたい 場 合 は OPTION_REG レジスタの T0CS ビット (OPTION_REG<5>)を 0 にする プリスケーラを 使 用 するとクロックソースの 入 力 に 対 するカウントアップの 比 (これをプリスケーラレー トと 呼 ぶ)を 変 更 することが 出 来 る プリスケーラを 使 用 しない 場 合 クロックソースの 入 力 ごとにカウ ントアップする(1:1) プリスケーラの 割 り 当 ては OPTION_REG の~PSA ビット(OPTION_REG<3>)で 行 う ~PSA ビットを クリアすることでプリスケーラは TMR0 モジュールに 割 り 当 てられる ちなみにデフォルトではウォッ チドッグタイマに 割 り 当 てられている プリスケーラレートは OPTION_REG の PS2,PS1,PS0 ビット(OPTION_REG<2~0>)の3ビット 変 更 で きる つまり 8モードある 詳 しくはメモリ 構 成 を 見 よ 例 えばプリスケーラレートが 1:32 である 場 合 32 入 力 ごとに TMR0 レジスタがインクリメントされる この 場 合 32 x 256 = 8192 入 力 ごとに TMR0 オーバーフロー 割 り 込 みが 発 生 する この 場 合 は 以 下 のようにする bsf STATUS,RP0 ; 操 作 バンクを bank1 に 変 更 bcf OPTION_REG,T0CS;クロックソースを 命 令 サイクルに bsf OPTION_REG,PSA ;プリスケーラを 使 用 しない bsf OPTION_REG,PS2 ;モード 100 bcf OPTION_REG,PS1 ;プリスケーラレート 1:32 bcf OPTION_REG,PS0 ; bcf STATUS,RP0 ; 操 作 バンクを 元 に 戻 す bsf INTCON,T0IE ;T0IE 割 り 込 みのみ 許 可 bsf INTCON,GIE ;GIE セット clrf TMR0 ;タイマ 初 期 化 ここからカウント... 28

参 考 [1]RISC RISC(リスク)とは Reduced Instruction Set Computer( 縮 小 命 令 セットコンピュータ)の 略 で マイク ロプロセッサの 内 部 構 造 の 一 つである 制 御 命 令 の 数 を 減 らし 加 減 算 などの 単 純 な 処 理 の 組 み 合 わせによって 回 路 を 単 純 化 し 演 算 速 度 の 向 上 を 図 ろうとする 手 法 である (フリー 百 科 事 典 ウィキペディア (Wikipedia) http://ja.wikipedia.org/wiki/より) [2]パイプライン 処 理 ここで 言 うパイプラインとは 命 令 パイプラインのこと PIC16F84A では 命 令 の 実 行 と 次 の 命 令 の 取 り 出 しを 同 時 に 行 っている [3]ノイマン 型 コンピュータ 大 雑 把 に 言 ってプログラムとデータが 同 じアドレス 空 間 に 存 在 するコンピュータ 殆 どのコンピュー タは ノイマン 型 である [4] 割 り 込 みベクタ 割 り 込 みが 発 生 したときにプログラムカウンタにロードされる 値 同 様 にリセットベクタとは PIC がリ セットされたときにプログラムカウンタにロードされる 値 のこと [5]オープンドレイン この 場 合 FET のドレインが RA4 に 直 結 している ゲートが H の 時 ピンはグランドと 結 線 され ゲートが L の 時 ピンは Low となる [6]プログラムカウンタ PIC に 限 らずコンピュータはプログラムメモリ 上 にロードされている 機 械 語 を 取 り 出 しながら 実 行 し ている メモリには 言 うまでも 無 くアドレスがある プログラムカウンタとは 現 在 実 行 している 命 令 ( 機 械 語 )のアドレスを 格 納 しているレジスタである 命 令 を 一 つ 実 行 すると プログラムカウンタの 値 を 命 令 語 長 分 だけ 増 加 させて 次 の 命 令 のアドレ スとする PIC の 命 令 は 固 定 長 なので プログラムカウンタは1づつインクリメントされる 29