...

付録D

by user

on
Category: Documents
10

views

Report

Comments

Description

Transcript

付録D
はじめての
plCプ ログラミング
Ver4で PIC 12F6291こ 対応
PCを このソケツ トに挿し
フログラムを書き込む
つている人
PICっ てよく聞 くけど,プ ログラムを組むとなると,と ても難 しそうだと思
し仕組みが
も多いと思います どのようなものでも ,は じめは難 しく感じるものです 少
光ダイ
ゎかってくると,PiCの プログラムを組むのが楽しくなつてきます ここでは ,発
し,実 際にPIC
F認
撃ξξ
3を
語
11翼蔑:8三塁 省[誓 :『 ら3'7罰 『
観
この ア イコンは I「 人にチ│.F角 イ 力'あ ります
`層
`ι
.
付録 D
は じめての PICプ ログラ ミ ング
写真 Dl PiC1 2F629の 外 観
Cド D.1プ
ロ
グ
ラ
ム
の
書き
方
● どのよ うな PiCを 使えばよいの ?
PICに はた くさんの種類があ りますが,そ の中で最も小 さな8本 足の PICを い
使 ます 8本 足の PIC
に も,い くつかの種類があ ります ここではPIcに 書き込んだプログラム
が思 うょぅにrl」 かなかった
場合に,消 してlJ度 もi午 き直しがで きる,PIc12「 629と い うPICを ltい ます
(写 真 Dl)l lR1200 1ilは
どで買えて,flf度 も書 き直すことがで きるので, とて も経
済的です
● プログ ラムを組む って ?
さて,こ こでプログラムを組むとい うことはどうぃ ぅことなので しょ
うか 「 発光ダイオー ドを点減
させるJと い う動作を,PIcに やらせるわけですか ら,発 光ダイォー
ドを点灯 しなさい,消 灯 しなさい
といった命令をPIcの 中に書き込 まなければなりません その
命令を書 くことが,プ ログラムを囃lむ
とい うことにな ります
PICに は人間の言葉を直接理解することがで きないので
,PIcが 理解で きる言葉で命令を書 く必要が
あります PIcが 理解できるのはoと 1の 2進 の IL界 です 人
間が0と 1だ けをftっ てPIcが 解釈できる
プログラムをX[む のは とて も無理です そこで,ァ センブラ
′とかc言 語 ″ を使ってプログラ′
、を組み
コン至ェ ラフ とい う翻訳装 置を使ってPIcが
解釈できるオブジェク ト コー ドジに変換するのです
● アセン プラ言語 と C言 語
プログラムを淑lむ ための :=,i吾 にはいろいろあ りますが
,PIcで は 口こアセンプラ言i:1と C言 語が使わ
れてい ます 人間が話す言葉に方言があるように, どちらの言
語にも少 しずつ違った言語があ ります
どちらかとい うとアセンプラ言語は機械 よりで,c li.jtは 人
Fuよ りにな りますが,そ れぞれに 長 短
があ ります
ここでは,PIcの 発売元であるMicrOchip社 が無償で提
供 しているMPASMと い うアセンプラを使
つてプログラムを殺1ん でい きます
,
●
PICの 入力や出力はどうゃって決めるの ?
PIC12F629は 8本 足の 1番 ピン(埓
)に 電源の十をつ なぎ.8番 ピン(ム 、
)に 電源の ―(GND)を つ な
ざます 残 りの6本 の足は目的に応 じてそれぞれのビンの
役割を変更することがで きます ここでは
残 りのすべ てのビンをディジタル人出力に設定 します ディジタル人出
力とは,人 力も出力も0(L脚 )
,″
,
232
И,
ONOL N 一〇 一
C
6PL
(,P,
図 01
と l(High)だ けを扱 う とい うことです
デ イジタル入 出力設定時 の ビン配 置
4番 ピン (CI)3)だ けは入力 専月1で ,残
りの ビンはプ ロ グラムの
中で入力 に もIL力 に も設定する ことがで きます
この ように,入 力 とか │ll力 となる ピンの ことを人 出カ ポー トとか 1/o(Input/Output)ポ ー トと呼び
ます
●
設定 の 方法 についてはプ ロ グラムを卓Fく ところで 詳 しく説り]し ます
PIC1 2F629の 動作 電圧
般的に は 5Vで 使 うことが 多いのですが ,2Vか
PiC12F629は 2Vか ら55Vの 電圧 で動作 します
jlの 範け
H
ら動作す るので ,乾 電池 を24同 直列 に して使 うこと もで きます PICの FI類 によって ltえ る電
が違 うので ,lltい 電││:で ltう 場合 にはデー タ・ シー トによる確認が必要 です
ここでは 5Vの 1['原 電月1を PICに 供給 します
● 発光 ダイオ ー ドに つ いて
発 光ダ イオー ド(LED)は ,lE流 を流す と発光す る半導体 の
種 で ,ア ノー ドと呼ばれ る端 ■とカソ
ー ドと呼 ばれ る端 子 の 1つ の 端 rが あ り,ア ノー ドに ll,カ ソー ドに負 の 電 lFを 加 える と,I´ ED
ight Emitting Diodc)の 発光色 によって電流が流 れ始める│[サ 1:が 異な りますが ,赤 色 の LEDで は約
(1′
15Vか ら 17Vの 1[│「 で電流が流れ始 めて発 光します
通常 ,LEDは 電流 を ll限 す るlltllLを 直列 につ ない でllい ます
写真 D2の 足 の長 い 方が ア ノー ドに
な ります
● 発光 ダ イオ ー ドを点滅 させ るため の 回路
ピンは 25111A
発 光 ダイオー ド(LED)と PICを どの ようにつ ない だ らよいで しようか PICの 人出カ
‐
方 LEDは 15mA il後 の電流 を流 して点灯 させ ます つ ま り,PICに は LED
の 許容電流 があ ります
を直接点灯 させ るだけの能力 があるわけです
足の長 いほうがアノー ド
足 の短 いほ う が カソ ー ド
写真 D2
発光 ダ イオ ー ド
233
付録 D
は じめての PiCプ ロ グラ ミング
6ND
図 D2
PiCの High出 力 を使 う方法
lllカ ポー トに LEDを つ な ぐ方法は 2種 類あ ります
つ は図 D2に 示す PICの 出力 tllに LEDの アノー ドをつ な ぐ方法で,3番 ピン (CPl)が IIghに
なっ
た ときに発光 ダイオー ドが点灯 します この LED(D)と IIt抗 (P)が 人れ替 わって もか まい ません
も
う つ は図 D3に 示す PICの IH力 側 に LEDの カソー ドをつ な ぐ方法 で ,3番 ピン (CP4)が Lowに なっ
た ときに発光 ダイオー ドが点灯 します LED(D)と 抵抗 (だ ])が 入れ林 わって もか まい ません。
今卜
Jは 3番 ピンに発光 ダイオー ドをつ な ぎますが ,人 力 専用 の 4番 ピン (GP3)以 外 ならどこにで つ
も
PICの
な ぐこ と力
'で
きます
ただ し,つ な ぐピンに応 じて発光ダイオー ドを点減す るためのプログラム を組む
必 要があ ります。
PICの 1番 ピンと8番 ピンの 間 に 01μ F(マ イク ロ・ フ ァラ ッ ド)の コンデ ンサが接続 され てい ます
が ,こ の コンデ ンサ は LEDの 点減には rl接 関係 ない部品で ,PIC内 部で発 41す る
雑 キ (ノ イズ)ゃ 電源
ラインの ノ イズを吸J(し て,PIcの 動作を安定にするために使 うもので,で
きるだけ PIcの 近 くに取 り
付けます 11に 高周波特性 の よいセラ ミック コンデ ンサ をfllい ます
LED(Dl)と
に使 う抵抗
rlダ 」
儒 1)の llt抗 1::は どうゃ って決めた らよいの で しょうか。 ここでは PIcが
ス イッチの役 ‖を してい る と考えるとわか りやす いで しょう。
PI=(電 源i[,「 5V― EDの 川n方 向電圧降 ド16V)÷ LEDに 流す電流 0015A=227Ω
と計算す る ことがで きます 実際 には PIcそ の もの に内部抵liが あるので
,計 算通 りにはな りませ ん
が ,″ に 220Ω 前後の抵抗 をlttえ ば よいこ とにな ります この 抵抗には EDが
点灯 した ときに 5V―
I´
I´
GllD
図 D4
234
PICに スィ ッチの 役 目を させ る
図D5 発光ダイオードを点減させるためのプログラムのフローチャー ト
16V‐ 34Vの 十[∫ I:が か か る こ とに な ります
lltllL器 に流 れ る電 流 は熱 に 変換 され ます
念 の ため 抵抗
器が rll費 す る電 力 をIi「 算 してみ る と
,
34V X 0015A=005ヽ V
つ ま り 1/20Wに な ります
したが って ,こ のllt抗 に は 1/6W lllを 4tっ て も 1分 余裕 があ る こ とが わ
か ります
さて ,PICに 単な る ス イ ツチ の役 Hを させ るだ け な ら,何 もプ ロ グ ラム を組 んで まで PICを 使 う必 要
はあ りませ ん せ っか くです か ら,05秒 閾lLEDを 点灯 した ら,次 の 05秒 川 LEDを 消灯 す る とい う動
作 を繰 り返す プ ロ グラム を■1ん でみ ます。
● プ ロ グ ラ ム を 書 く た め に必 要 な も の
Microchip社 で 無償 提 供 して い るり‖発環境 の MPLAB
た だ し,‖ 本語 が 直接 人 力 で きな い の で コ メ ン トを 1+い た
セえ ます
テ キ ス トが 占け る もの な ら何 で もイ
IDEの エ デ イ タで も 1+く
りす る の に不 l■ です
こ とが で きます
パ ー ソナ ル・ コ ンピュー タの ア クセサ リの 中 にあ る 「 メモ llKJ力 iイ 史え ます
● プログラムのフロー チ ヤー ト
仕 'liの 流れをドλtす るためにllわ れるフローチヤー ト′を占いてみると,プ ログラムをどのように
組 んだらよいかわか ります (図 D.5)
● プログラムでの初期設定
i別 を設定 した り,プ ログラムを
プログラムの最初に必ずIL述 する「初lrll設 定Jで は,ltう PICの 不
ファイルとい う,PIC 12F629に 備わつている基本的な1記 述
,「 きやす くするために, イ ンクルー ドク
Ji項 をまとめてあるフアイルを指定 した り,05秒 ulの タイマ を作るために用意する レジスタ(人 れ物 )
の割 り`
Чてや,プ ログラムの実行 始番地を決めます また,LEDを つ なぐ3番 ピン(Gl)1)を 出力にll
"‖
うとい う設定をします
次に,プ ログラムのメイン部分の中で,「 Plを High」 はPICを 使 って「スイッチをONJさ せ るこ
‐
とに‖1当 します 「05秒 待つ」は何度もl■ うので,サ ブルーチンフといって, つの まとまったプロ
(〕
235
付録 D
は じめての PiCプ ロ グラ ミング
グラム と して必 要 な と きに呼 び Jlし ます
せ る こ とに村J` %し ます
また,「 GI)1を L()wJは PICを 使 って 「 スイ ッチ を OFF」 さ
05秒 経 過 した らルー プの 先Jliに 戻 って ス イ ッチ の ON/OF11を
で は ,初 期 設定 の プ ロ グ ラ ム を │:い てみ ま し ょう
は,プ ロ グラム には 関係 の ない コ メ ン トです
リス トDl
繰 り返 します
′
リス トD.1に /1Nす セ ミコ ロ ン ()か ら後 ろの 文
セ ミコ ロ ンは 行 の どこか ら書 い て もか まい ませ ん
発光ダイオー ド点減プログラムの初期設定部分
初期設定
INCLUDE'P12F629. INC''
使用するPCの 種類をこのように書く
MPLABで あらか じめ用意 してあるインクルー ド ファイル
で このように記述 しておくと
インクルー ド ファイルの中であ らか じめ設定されて
いるラベル (名 前)わ `
使えるので プログラムの見通 しか
よ くなる
ほかにも書き方がい くつかある
くP12F629 1NC>と しヽう書き方もできる
#INCLUDE
&
CONFIC INT OSC
BODEN OFF E MCLRE OFF
NOCLKOUT & PWRTE ON &
& WDT OFF
CPD OFF &
CP OFF
コンフイギ ュレーシ ョンの内容を以下のように設定
(G陽 をレ0ビ ン)
パ ワー ア ップ タイマ ON
iデ ータ コー ド プロテク ト :OFF
:コ ー ド フロテク ト 10FF
i発 振方式 1内 部オシレータ
:プ ラウン
アウ ト リセッ ト
OFF
MCLRピ ン OFF(GP3を /0ビ ン
)
ドック タィマ :OFF
:以 上の設定はここで必ず書かなければしЧナないというわけではない
PCに プログラムを書き込むときに ライタで設定 して
:プ ログラムと一緒に書き込んでもよい
iウ ォッチ
│は じめのアンダースコア (_)ま 二つ続けて書 く
:内 容に ついては付録 Cの 「PCの 概要 │を 参照
COUNTl EQU
COUNT2 EQU
20h
21h
:時 F05を カウン トするための 変数 レジスタ (入 れ物)を 用意する
一つては足 りないのでもう一つ レジスタを用意する
COUNlと COUNT2は ラベルとい ってここでは20h番 地と
2 1httltlに ある レジスタにつけられた 名前
ブログラムを書 くのにア ドレスの代わ りにわか りやすいラベルを
使えるよ うにする
ラベル ま行頭か ら書 く約束になつている
P C12F629で は20h番 地のア ドレス (場 所)か ら64個 の汎用の
レジスタが用意されていて いろいろな 目的 に使 うことができる
プログラムは電源を切 つて も記憶 しているが この レジスタ ま
電源が切れると消えて しまう
ORC
BSF
0
STATUS,
プログラムはこの0番 地か らスター トする
こrtか ら設定 するレジスタはバンク 1と いうところにあるので
ここでバ ンク lに 1971り 替える
STATUSと しヽうレジスタの RPOと しヽうビッ トに1を セ ッ トする
23●
':
今 )1
は説明 のためにた くさん コメン トを書 き込 んであ ります
初期 設定 の 部分 を書 くの は最初はli倒 だな と思われ ますが ,い くつ かプ ログラム を11:い て い くうちに
す ぐに慣れ ますか ら,心 配 しな くて も大 丈夫です
_
リス トDl 発光ダイオー ド点滅プログラムの初期設定部分 (つ づ き
)
ッ ト セ ッ トとい
CALL
3FFh番 地にある,ブ ルーチンにジヤンプする命令
3FFh番 地に1よ 工場から出荷されるときに 内部発振周波数の
3FFh
校正値が書き込まれている
ここではこの値を読み に行 く
MOVヽ IF
OSCCAL
読み出された内部発振周波数校正値は
レジスタに格納 して戻 つてくる
PCの 内部にあるWと いう
ここはWレ ジスタに格納されている値を OSCCALと いう
レジスタに格納する命令 で このOSCCALレ ジスタ
さくして
に内部発振周波数校正値 をセ ッ トすることで誤差を」ヽ
4MHzに 近づけることができる
PCは この4MHzの 1/4の ステ ップでプロクラムが実行される
つまり l MHzの 速さでプログラムが実行される
1秒 間に 100万 ステッフなので 1ス テ ップの実行 に l μsの
時間がかかることになる
ibと 書かれたの よバイナ リとい つて2進 数 を表すときに使 う
10と ■を合わせて8個 並んでいる
:つ まり2進 数で8ビ ッ ト並んでいる
MOVLW b′ 00001000′
1-番 下位がビッ ト0 -番 上位がビッ トフになる ここでは
iビ ッ ト3だ けに ■をセ ッ トしている
MOVWF TRIS10
:Wレ ジスタに格納された値を
TRSOレ ジスタに格納する命令
:こ のTRISIOレ ジスタは /0ポ ー トの入出力を設定す るための レジ
:ス タで0を セ ッ トすると出力 にな り
1ビ ッ ト3だ けを 1に したが
│こ とで
■をセッ トすると入力になる
この ビッ ト3は PCの GP3ボ ー トの
このポー トだけは入力専用
:0を セッ トしても無視される
:GP3を 除いて残 りのポー トは出力設定になる
:PC]2F629で
は /0ポ ー トの数が六つなのでTRISIOレ ジスタ
:の 8ビ ッ トの上位 2ビ ッ ト│よ 意味をもたない
:設定 した値をWレ ジスタに一度格納 してからTRISIOレ ジスタに
1格 納 しなお している
:値 を直接 T工 RS10レ ジスタに格納できな いのでこのようにする
BCF
STATUS, RPO
:バ ンク 1で の設定が終わ つたので
STATUSレ ジスタRPOビ ツ トを
1ク リア (0)し てバンク0こ 戻る
:頭文字のBCは ビッ ト クリアという意味
MOVLW b′ 0000011■
MOVη ,F CMCON
′
:PC]2F629で
はCPOか らCP2ま での三つのポー トがあらか じめ
ンプ
(レ ータ)に 設定されているので その設定を解
:電圧1ヒ 較器 (コ
:除 して ほかのボ ー トと同 じデ イジタル1/0ボ ー トに設定 し直す
237
付録 D
は じめ ての PCプ ロ グラミング
コラム
演算 記 号
ヽII'ASMで
うことの できる汀i彿 記 号はた くさんあ りますが,そ の 1か らよ くllわ れる洒t"I己 オを″1介 します
(表
DA,
表 DA
'と
アセンフラで使われる演算記号
意
S
(
味
現4の プElグ ラム カウンタの
処月をプロ ′ク化する
)
かけ
に先減
ど
'な
“
COTO ,+1
■4'の プログラム カウンタの次のア ドレスにシャンプする
(coullT+1)'■ 28
co(nTレ ジス タの11に 1を 力Iえ てか
する
',128‖
A'B
"
制 り■
■ し算
Jき
high
,
ア ドレスの Iillバ イ ト
A+B
B
A‐
МOVLW
high COUNT
‐プログラヱ、 メ
ジスタ●
モリ ア ドレスの
comTレ
iイ
│′
ヽイトをヽ レンスタに格
納する
6"で はブIlグ ラ′
、 メモリ ア ドレスの11終 酢地は3FFhま でとなるので
バ イトのll.人 はo3hま でとなる
1'IC12「
low
ア ドレスの ド位バ イト
「
│タ
MOVLl・ 1
low couNT
comTレ
ンス タのプ ロ グラフ
、 メモ リ ア ドレスの 卜rlバ イトをヽレジスタに
細 する
大 きいかヽ しい
大きヽヽ
IF A,B
A力
小さいかヽしい
'Bよ
さい
等しい
ι
り大き ′
ば真(lr肥
I司
)
`ナ
IF Aく ‐B
I A力 (Bと
4ヽ
“
IF A>‐ B
Aが Bと 11し か 人 きけ″tlご ,t([rllr)
じ力J、 さけり
ι
!よ ず
:(l
rttc)
IP Aく B
Aが Bよ り4ヽ さけォtl工 ,((truc,
IF(A=‐ B)
Aと Bが
け,tば 共
│〔
rucリ
'しB)
IF (Al‐
Aと B力 ゛
■1ま ,((truc'
ヽしくな1ナ オ
MCLRE OFF &
PI(,12「
WDT oFF
6291,は
_MCLRE_oFFIま HloFBF'(11 1111 1011 1111)
_WDT_OFF`よ H'3FF7.(11 11■ ■ 111l olll)
11 1111 101■ 1111
mD
ll llll llll olll
ll llll loll olll
となる
FLACA I FLAGB
FmGAレ ジ ス タ と FLAGBレ
rF
論理否,L
ジ ス タの ●容 を ビ ッ トlrtで
IF (A‐ ‐B)&&(C‐ ‐D)
Aが Bと 11し てかつcが Dと 同 じな ら東 (truc,
(A==B)
(C==D)
Aが Bと 11し かまた│ま c力 (Dと IJし なら彙 ぃue,
IF I(A‐ ‐B)
Aと Bが ヽ しい ときに1夕 底J記
ll
)
238
ORす
る
● 内部 発振周 波数 の 校 正値
ここで 人 J'な の は内 部発振周波 数 の校 正ltで す 1)ICの プ ロ グラム を11容 す る部分は,フ ラ ツシヨ
ROM(ロ ム)と I子 ばれるメモ リで,何 度 も書 きrIす ことがで きるため,プ ロ グラム を占き込む と,プ ロ
、・ メモ リの最終 番地 (3FFh)に 記録 されて い る内部発振周波数 の校 lF値 が lllえ て しまい ます
グラノ
‐
iし く校 正す る ことがで きな くな って しまうので,プ ロ グラム
度消 して しまうと,内 部発振 l・l波 数を正
│
をデ
:き 込む前 に,必 ず PICラ イタにセ ッ トして ,Iリ ー ド│コ マ ン ドを実行 し,最 終番地 に 書かれた11を
メモ してお きます
振周波数 の校 [11:が J:き 込 まれて い るので しょうか 秋月電 ■の PIC
ライタ バー ジョン4に PIC12F629の 新 1ム をセ ッ トして│リ ー ド│コ マ ン ドを実行 してみ ました
プ ロ グラム メモ リの 最終 番地 (3FFh)に は,図 D6で は 3498と い うllが 書き込 まれて い ます
14終 番地 には どの ように内 ‖
`発
これは 2711数 に直す と,1■
(34h)は
,Iう IC命 令
ビッ ト100■
覧人
この 中の 1位 6ビ ッ ト■■
o100
JttC IPICの 概 要J参 ‖(1)か ら,RETLW命 令 だ とわか ります
ド位 8
0100 100■
(イ
■000(98h)が 校
ltわ れて い ます
[1′ :に
■000と な ります
な ります
実際 には ド位8ビ ッ トの 中の L位 6ビ ッ トが 校 Fllに
この最終 番地 には
,
RETLW
98h
と占か れ て い る こ とが わか ります
この 校
者が lltも
1111は
lltい
■■■■1100か ら o0000000ま で の 11:が と られ ,前 者が 最 も高 い 発振 周 波 数で ,後
中心 j‖ 波 数 は loo00000で す
発振 lll ll14数 に な ります
に (こ こで は )98hと い う1′ 1を 格納 して ,呼 ばれ た次 の 命
この よ うに
/1に
RETLW命
令 は ,Wレ ジ ス タ
戻 ります
度 もプ ロ グ ラ ム を メ}き 込 んで い な い PICか ら, きち ん と内 部発振 周 波 数校 正llを 読 み
llす こ とが で きま した
で は こ こで ,こ の
'卜
で これ か ら(30り lす るプ ロ グラムか ら4i成 され た ,led―
test HEXと
い うフ
ァイルを み込んでみましょう
図 D7は スクロール してプログラム
il売
メモリの最終番地付近を見たものです プログラムの力
t終 番地
(3FFh)に あった 3498hと い うlrlは 3FFFhに デ
│き 換 えられて しまって い ます 11り のlllも すべ て
3FFFhに なってい ます PIC12「 629は 14ビ ッ トのプログラム メモ リカ 史われていて,プ ログラム
'イ
』』」
デバイス選択 :
PIC12F629
フ
ψ瓢型
lzcll2F|6firr Ir|1[ |rir:ft
|
面 腰地掛準
」 F― AL臥 V4…
=セ 4-d
94ス・
…
00EO:3FFF OFFF OFFF ,FFF OFFF 3FFF 3FFF 3FFF
図 D6 PIC1 2F629の 内部発振周波数校 正値
:注 1,PICそ itぞ オ
tに
込 まオιて い る
コlI・lI手 に ヽな る !が
“
':き
239
付録 D
は じめ ての PiCプ ロ グラミング
lzcll2F lrBcTr I
デバイス題択
」
図 D7
r Frr
F Frr
“
¨
ALBOは マイ赫
―夕を叫
「
FF Frr
嗣
FF Frr
・=lα
フ
コグラ
辱 Uサ イス
I
LI響 捻b)「
:
PIC12F629
iicra I rrcrr
HEXフ ァイル を読み込ん だあとのプ ロ グラム
メモ リ最終番地
が 吉き込 まれてい な い番地 (ア ドレス)は ,す べ て 1が ギ÷き込 まれて い るのです
も し,こ の1犬 態で PIcに 書き込 んで しまうと
,
CALL
3FFh
で 最終 番地 が コー ル され て も,3FFFhが J:き 込 まれ て い るた め ,
と
L位 ビ ッ トの 3Fhは ADDLW命 令
し
オ
月(さ
lll年
ADDLW OFFh
とい う命令が 実 行 され る こ とに な ります
2、
これ で は コー ル に対す る リター ン命 令 が な いの で ,プ ロ グラ
は 娯走 して しまい ます
秋ナ
l製 の PICラ イ タ .ソ フ トは とて もよ く作 られ て い て ,
内 部 発振 .l波 数 補 正lliを 記憶 して い ます
度 i売 み 込 み を実 行 す る と,そ の と きの
図 D7の 10SCCALデ ー タ (16進 数 )]と 書か れ た イillllに ,読
み 込 ん だ ときの値 が 1せ 憶 され て い るのが 確 認 で き ます
10SCCAI´ BCは ,マ イコン内 のデー タをイ
吏り
‖する〕と書かれたノl:側 のチェ ックを外 してか ら,プ ロ グ
ボ タンをクリックする と,10SCCALデ ー タ(16進 数 )]と ]i:か れたイ,9Uに 表示 されて い る値 を
Lき 込 み ます この l11は 編集す ることが で き
内部発振 ll l波 数校 正fliと してプ ロ グラムと 締 に PICに ‐
ラム
,
るので,意 図的にf11を 占き換 えて内部発振l・l波 数を調整する こと もで きます
[OSCCAL BGは ,マ イ コン内 のデー タをllり ‖する1と 書かれたス:1‖ のチェ ックを付けたまま,プ ロ グ
ボ タンをクリックす ると,た とえプ ロ グラムをI売 み込んだ最終番地が 3FFFhに なって いて も
セ ッ トした PICの 最終 番地 に メ
}か れて い る1れ が 採用 され ます したが って,新 品 の PICを セ ッ トして
ラム
,
ギ}き 込む ときはこの 方法で ■き込み ます
さて,こ こで BGと い う 1:葉 が出て きました
これはバ ン ド ギ ャップ とい って,パ ヮー
オン
リ
アウ ト リセ ッ トにftう 基lll i[圧 の校 ili411な のです PIC12F629で はこのり
!準 1[
な ってい ます 2ビ ッ トで 校「 され ,ooか ら■■までの 4種 類 の値 をもち ます 図 D7で
セ ツ トとプラウ ン
│:は
21Vに
はIBGデ ー タ (範 囲:0∼ 3)1の イiに ■と表示 されて い るのがわか ります パ ヮー オン リセ ッ トとプラ
ウ ン アウ ト リセ ッ トは,今 回のプログラムではイ
t用 して い ませんが ,内 部発振周波数校 ‖
ill:と
締
に メモ してお きます
内部発振 l路 をltう 場合に,次 の 2行 をプ ロ グラムの 11後 に 書い てお くと,万
「
で きます
_
240
の暴走 を防 ぐことが
表 Dl 主な疑似命令
LIST
アセンブル‖
リス ト‖1カ :旨 ,L
ン■
卜11り 111,こ
P・ くTYPE>│よ
プロセ
"tの
絆工NCLUDE
CONFIC
ORC
END
ほかの ソー 17N フアイルの収 り込み
コンフ ィギェレー ションの ,,Lを ‖
ルヒ
ウ
L数 のラベル/Lエ
プログラフ
、
の開始 ll地 を指定
ツース フアイルの終わりを
'11,
ORC
3FFh
:プ
RETLW 80h
ロ グラム
ill:は 適
:し
11で
メモ リの最終番地 を指定
よい ここでは11[‖ 1ll:(10oooooo)を
,設
定
てお く
そ して PICプ ロ グラムの 終 わ りをatす
END
を最後 の 行 に書 い て締 め く くります。
今卜
Jの プ ロ グラムでイ
tわ れ て い る表 Dlに 4tす 命令 は疑 似 命 令 とい われ る もので ,ほ か に も数 多 くの
種 類が あ ります。 詳 し くは付録 Cの 「 PICの 概 要」 を参‖
1し て くだ さい。
●
05秒 タ イマ
この タイマ は EDを 点灯 したあ とと,消 灯 したあ との 2[1ル ープの 中で使 い ます
t源 を切 る まで
は何度 も繰 り返 して使 うので,サ ブルーチ ンとして作 ってお い て,ltう たびに呼 び出 します
05秒 の時 Falを 作 るために 4MHzク ロ ックだ と50万「1の プ ログラム・ステ ップが必 要にな ります。 こ
れはリス トD2の プログラムの ように して作 ります
I´
人雑把 なイ
!ち 時‖Iを 作 るの な ら,細 か くNOPを 入れて時‖
Jを 調整 しな くて もよいの で すが ,今 [1は
ビッタ リ50万 ステ ップ (500ms)の サブ ルーチ ンを作 ってみ ました
●
:/0ボ ー トヘ の 出力
では,PIC12F629の 3番 ピン (CPl)に どのよ うに出力す るのかを説りlし ま しょう
BSF CPIO, 4
コラム 数値データの書き方
数
『
表 DB
種
!を
表す 方法 に表 DBに 示す 5柿 好1が あ ります
数値 デ ー タの書 き方
書
式
′
____
ユ くdigits>[ま たは くdigits>
数 H'く hex_digits>′
hex di
または Oxく hex_digits>ま たIま
1 0jII数
一
一
脚
幽
卿
16迪
│。
くheX_digits)H(■
llヵ lA‐ F'ス
56'ま たは
3F′
タ
12と きは』の0を 竹略してもよい
O'<octal d j.,git s >, _
B'<biqary_dj.gits>,
A.く characters>′
D′
H′
または′くcharacters>′
56
Ox3F.03FH 3FH′ ,tヽ すオとで もよ
tヽ
│
I'<i':as,
B'1000■ 010′
A′
ABC′ または′ABC′
247
付翁
景D
はじめての PCプ ログラミング
リス ト02
タイマの作 り方
1500ms WA T,ブ
ルーチン
WAIT500MS
:500msの 待ち時間を作るので
:こ のルーチンで50万 ステップを,肖 イ
しする それには
MOVLW
MOV"F
d'249′
1lmsの タイマを500回 コールすればよいわけ
COUNT2
CALL
CALL
NOP
NOP
NOp
NOP
NOP
NOP
NOP
DECFSZ
WAIT
WAIT
18ビ ッ トのレジスタでは500を セットできないので
1250に して 1回 のループで lmsを 2回 コールする
1実 際には249を セットして 1回 のループの中で
:lmsを 2回 コールする
GOTO
NOP
WLP500
WLP500
1足 らない分はNOPで ステップ調整する
INOPは 何もしない命令でよく時間調整に使われる
INOPは lμ sに なる
COUNT2, F
:249回 のカウン トが終わつたら呼ばれたコール命令の
:次 の行に戻る
RETtJRN
999μ s WAT,ブ ルーチン
WA工 T
ilmsの 待ち時間を作る,ブ ルーチン
MOVLW
MOVTF
NOP
DECFSZ
COTO
NOP
WLP
d′ 248′
COUNTl
:一 つの ,ブ ルーチンだけて500msを 作れないので
1こ の WAITル ー チンを用意 して呼び出 してもらう
i PlC12F629で はCALL命 令を8段 の深さまで使える
COUNT■ , F
WLP
iス タ ックとよばれる場所があ つて CALL命 令が実行
:実 行されると
次の命令行の番地をスタックに
1■ き込んでジヤンプし 処理が終 わるとスタックに
1書 き込まれた番 1也 を取 り出 して戻る
NOP
RETURN
iた とえば今回のよ うにCALLし た
ルーチンか らさらに
最初に書き込まれた
1別 のサブル ーチンを コールすると 'ブ
1戻 り番地を 1段 奥に押 し込んで次の戻 り番地を書き込む
│,ブ ルーチンから戻るときは一番手前の戻り番地を取 り
1出 して
一段興にある番地 が手前に来る仕掛けになつている
この 1行 だ けで CPに Highを 出 力 す る こ とが で き るの です .PICを ス イ ッチ に 見 17て た ときの ,ス
イ ッチ を ONに す るの と同 じ働 きを します この 記 述 は ,CP10と い う レジス タの ビ ッ ト4に 1を セ ッ
トす る とい う命 令 です。 この 命令 が実 行 され る とLEDが 点灯 します
BCF
GP10′ 4
owを 111カ します この 命 令 で EDが 消灯 します I.EDが 点灯 した ら,05秒 待 って
LEDを 消 灯 し, さ らに 05秒 待 って ,再 度 LEDを 点 灯 させ る こ とを繰 り返せ ば ll的 を達 す る こ とが で
とす る と CPlに
242
I´
I´
,
リス トD3 プログラムのメイン部分
:メ イン
ルーフ
L00P
BSF
CP10, 4
CALL
WAlT500MS
BCF
CPIO′ 4
CALL WAIT500MS
COTO LOOP
:こ
:L∞ Pと いうラベルで
行頭から言く
の命令を実行 するとLEDが 点Xlす る
i500ms待 つ
:こ の命令を実行するとLEDが 消灯する
:500ms待
つ
:LOOPに
ジャンプする
きます
.
肝心のスイッチをON/OFFす るプログラムは, リス トD.3の ようにたったこれだけです
● プログラムの全 リス ト
led― test.asmの 令プログラム・ リス トをリス トD.4に 示 します (こ のプログラムには意図的に
.
間違いが含 まれている).
プログラムがで きあが りました.LEDを 点滅させるプログラムはほかに もいろいろな方法が考えら
れます。できあがったプログラムが間違 いな く動 くとは限 りません。これか らPICに 書き込んで動作
確認をしてい きましょう
.
リス トD4
LEDが 05秒 点灯,05秒 消灯を繰 り返すプログラム (led‐tost
asm)
:初 期設定
LIST
P=PIC12F62 9
.P12F529.
INCLIJDE
INC'
_INTOSC-NOCIJKOUT &
_
&-CONFIG
MCLRE OFF &
PWRTE ON
こ
CPD OFF
ι
P OFF &
BODEN OFF
WDT OFF
m
U
Q
E
O
C
U
Q
E
m
T一 T
O
C
20h
h
2■
0
STATUS′
CALL
MOVWF
MOVLW
MOVWF
BCF
MOVLW
MOVWF
RPO
3FFh
OSCCAL
b′ 000010oo'
TRIS10
STATuS, RPO
b'00000■ ■■
CMCON
.
243
付録 D
はじめての PICプ ログラミング
リス トD´ LEDが 05秒 点灯,05秒 消灯を繰り返すプログラム (led‐ted asm)(つ づ き)
:メ イン ループ
L L 0
F L F L T
S Q C m ∞
B
D
4
WAIT500MS
CP工 0′ 4
WAIT500MS
LOOP
CP工 0′
:500ms WATサ カ レーチン
WA工 T500MS
MOVLW
MOVWF
d'249′
CALL
CALL
NOP
NOP
NOP
NOp
NOP
NOP
NOP
DECFSZ
GOTO
NOP
RETURN
WA工 T
WA工 T
COUNr2
WLP500
COUNT2′
WLP500
F
:999μ S WAITサ ブルーチン
MOVLW
MOVWF
d'248′
COUNT■
NOP
DECPSZ COUNT■ , F
GOTO WLP
NOp
NOp
RETURN
244
}い たプログラムは,拡 rJlt rに asmを イ
メ
」けて保存 します。今11は ■ed― test aslnと します
りあえずパー ソナル コンピュータの どこかに保 rlし ておぃて くださぃ
Cド
D.2
と
開発環境 の使 い方
● プログラ ムの 翻 訳
何 とかアセ ンブ ラ命令 をflっ て 言い たプ ロ グラムですが ,こ の ままでは まだ 1)ICに ]!解 で きませ ん
そ こで PICが lll釈 で きるマ シン語 ′に翻訳 してか らPICに ギトき込むのです
そ の ために,開 発環境が
必 要にな ります
それ には ,ヽ ■crOchipネ Lが 無償で提供 してい る,M PI´ ABと い う‖
H発 環境 をパ ー ソナル・ コンピュ
ー タに イ ンス トール して プ ロ グラムの り
ロ
‖発 を行 い ます そ の 後 プ グラムか ら41成 された HEX(ヘ
キサ)フ ァ イルを,1)ICラ イタをイ
吏って PICに
込む 手川
貞にな ります
●
MPLABの
'Fき
イ ンス トー ル
Ml)I´ AB"‖ 発環境 は lJi繁 にバー ジョン
ア ップ されて い ます 最新版 を bllicrOchip本 社 の ホ ームベ
ダウ ンロー ドした らインス トー ラのオ
檜/1Nに 従 って lr隣 環境 をイ ン
ー ジか らダウ ンロー ドして ください
途中で確認を求めて きますが,通 41の イ ンス トールではその まま続 ければ‖
」題な くイ
ス トー ル します
ンス トールする ことがで きます
マ イクロチ ップ 本社 のホームペー ジ
http://WWW microchip con1/の 中の[Dcsign]→
lMPLABI「 )EIで 最新版を ダウ ンロー ドす ることがで きます
●
MPLABの
使 い方
ール
ンス
イ
ト
が完 す ると,Cド ライプの 中の Progrann Filcsと い うデ ィレク トリ′の中に MPI´ AB
J´
II)Eと い うフォルダが作 られ ます
これか らプ ログラムを開発す るのに必 要な フォルダをこの ヽ11)I´ AB
IDEフ ォル ダの ドに作 ってお くと見通 しが よ くなるので 名称 をprOjectsと で もして新たにフ イル
ダを作っておきます そして 先ほど保存したled― test asmフ ァイルをprOjectsフ ′ルダ
の 11[に 移 して くだ さ い (図
D8)
ここではprojectsフ ォルタに保存したled― test asmソ ース プログラムを1売 み込んで,PTC
に き込むためのHEXフ ァイルを作るまでと,デ バ ッガ″をltっ て動作II Iの 方法を説りlし ています。
'「
r?r4rL -*11) tn.J
i
JEi'
_●
=,・
1-ro
;nitn41
n*
i,Lr
●mh'`M,A=[=
o V7に つ い て
MPLAB IDEバ ージ ョン7で は,イ ンス トーラの指示に従 つ
^^714t
=-
‐口
'勁
てインス トールすると, C:VProgram F osYM c「 och pと ぃ う
フォルダか作 られる
本 書 て 利 用 して い る MPLAB:DEバ ー ジ ョ ン 6で は
C:VProgra n FileSVMPLAB!DEの フォルダが作 られ,そ の下
に prOieCtSと い う作業用 フォル ダを作 つたが,バ ージ ョン7
を使 う場合は M crochipフ ォルダの下に prOieCtSフ オルダを
作 つて利用する
バージ ョンアでも,本 書で説明 したの と同様 にビル トでき
る 操作画面 やシミュレー タの使い方に変化はない
,
J
E O.8 MPLAB
lOE
T
t
)t
t
OT t: Nqecrs
) t )v4XlF6
245
付録 D
は じめての PICプ ロ グラ ミング
図 D9
MI)LAB IDEデ ス ク トップ
初期画面
ア イコ ンを ダブ ル・ ク リ ックす る と図 D9の よ うな画像 が l・ lき ます
悦 りIの ため ,山 i像 サ イ ズ を小 さ く して あ ります が ,実 際 に は作 業性 の 良 い 大 きな lnl前 iで 作 業 します
また, こ こで は MPLAB IDEの バ ー ジ ョンが 640に な って い ます が , きっ と,:売 者の 方 は これ とは )ヽ な
る バ ー ジ ョンを大 手され るで しょう。
扱 える デ バ イスが
えた り細 部にオ午十 の 変 更が あ る と思 い ます が
'静
6xで あ れ ば 操 作 は ほ とん ど変 わ らな い ので 混 乱す る こ とは な い で しょう
と きは ,Webに 説 りJが あ力 て い る と思 い ます の で ,熟 洸 くだ さい
'っ
,
人 き くバ ー ジ ョンが 変 わ る
まず メニ ュー の IProjeCtlか らド ewlを 選 択 す る とINew Projectlダ イア ロ グが 開 き ます (図 D_10).
‖発す る プ ロ ジェ ク トの 名 itを 人 力 します 。 こ こで は これ か らアセ ンブ ルす る
IPrOjCCt Nalnelに 今トリ
led―
test asmフ
ア イル と同 じ名前 の ■ed― testと しま した
次 にIPrOjCCt DirectoryIの 欄 にあ
るIBrowSelボ タ ンを ク リ ック して ,プ ロ ジェ ク トが /1成 す る フ ア イルの 保 存 デ ィレク トリを指 定 しま
す ここで は C:YProgram FilesYMPLAB IDEYprojectsを
指 定 して ヽヽます 。10K〕 ボ タン
を押 して次 に進 み ます
led―
せん
test.mcpと
い う フ ァ イ ルが 作 られ ます (図
D ll)こ
の 時 点 で は まだ何 も中 身 はあ りま
.
Source Filcsと 書か れ た ところに カー ソル を合 わせ て マ ウスの イiボ タンを ク リ ックす る と,図
D12
の ni睛 iに な るの で ,Add Filesを 選択 します
[Add F‖ es lo Pr()ject]と い う ダ イア ロ グが 月くの で ,Projectsフ ォル ダ中 にあ る led―
1国
t。 ま
RⅢ
Di顔 叫
9。 m ttMP曖 BЮ [ヽ
FⅦ 。
「
H●●
図 D10
246
1
qed`
0K I C_JI
プ ロ ジェク ト名の入力
11鮮
I11
test asm
So● ァ
cc
Fles
円議
F,し s
ObFl Ftts
Lbァ ●
γ F,皓 s
t nker Scr,ls
図 D ll プロジェク ト作成完了
図 D12
ソース・ フ ァイルの追加
"ce
図 D13
ソース・ フ ァイル指定完 了
をlL定 します
Source Filcsの ドに led―
test asmフ
アイルが加えられて い るのが確認 で きます (図 D13)
test asmと
表示 されて い る 1に カー ソルを合わせ て ,マ ウスを ダブ ル クリックす る とソ
ー ス・ ファイルが 開 きます。 ソース・ フア イルはこの 中で編 集す ること力'で きます 。 もし[1本 Fl:が l「 し
PropCrties]を クリックしてIEditor OptionsIダ イア ログ
く人′
,tさ れない助合は メニ ューの[Editlか ら〔
led―
を開 き,lTcxtlタ プのINational Language Code Pagelで Japanesc Shift JISを 選llkし て くだ さい。
「1本 1:が ‖
プ ログラム ソー スが 衣力ヽされて い るエ デ イタの中では
iし く衣/1Nさ れるようにな ります 。
′
直1/K日 本語 を人力す ることはで きませんが , 日本語 の 人力 文 卜は別枠 で表示 され,fl定 するとエ デ イタ
,
1勾
に反映 され ます (図 D.14)
読 み 込 ん だ ソー ス・ フ ァ イ ル は PIC12F629月 1に 作 っ た プ ロ グ ラ ム で す
次 にデ バ イ ス 名 を
247
付録 D
は じめての PCプ ログラ ミング
●b
Fdl y“
口け
白 げ □ 恥
:tiや つ J ir:│り
0曲
! J11'7日
:'コ 期 設 定
LISI P Pl lt',P0
1NOし UI[
.P12F629 1NO・
FllI[ tヽ
__0(NFII _IwT =,_lt it,IIJ I
,'1,,ll l
〔ウリ
;)ヽ
│[ [│:J
)R`
0
0SF
=TliU:
CALL
図 D14
1'I
:Oh
:││
FPi
3FFh
ソー ス・ ファイルの表示
●b
Dけ
:
●■ 昌
? cl.け
□ 恥
!Oittty
Lせ
図 D15
0り ●1`● 【
J
Stt“ s
デバ イスの指 定
Mにrochip programmer Tool suppoイ
O P10SIART Plus
0 PRO MATE‖
o llPШ :CD2
o日
C‖ tl
', MPtFO PMO
M oioch p DeOu998rToo suppol
O MP●D SIM
O MPШ
[C02
O HPLu SIH00
「咄獅
MPu3 1CE 2000
い
図 D16
248
。a」
デバ イ ス選択
歩い
│
IF F
P
PIC 12F629に 指定 します
メニ ューのIConfigurclか らISelcCt Dcvice]を ク リック します (図
PIC12F629を 選択 して10Klボ タンをクリックします (図 D.16)
D15)[Dcvicclの
リス トか ら
つ ぎに メニ ューのIProjeCtlか らIBuild Alllを クリックす る力lF101キ ー を押す とアセ ンブルが始 まり
ます (図 D17).
ビル ドクが実行 され ,10utpu可 ダイア ロ グが 開 い て アセ ンブ ル紺果が 表示 され ます (図
D18,図
D.19)
プ ロ グ ラ ノ、に ‖
‖違 い が あ る と図
D20の よ う に エ ラ ー が 表 示 され ます
Bold Oぃ ons
F′」 n
Plo「 t Fibs
T[ ‖‖
今 回 は エ ラーの ほか に 警 告
し ウFF I
'│
,
F
SO● e
Prottt
勢 e Po"ct As
Add Fl● ,1。 Prolect
Pemove Fle F`。 m Pr。 。ol
ヽ Lct[む
o Tooヽ olc
=u“
ヽ ●dMげ sm-Oonlr。 [Sysに m
Stt“ ヵ
l localЮ 厖
=eT∞
図 D17
…
ビル ド
:"`
・
・
“
LED― IE『
「
A"
Lll― ‐ ‐
Cdr*
|
f,:Fdd
$o{vd
O
n@:<t
slFlr-d
liEr A'*tH.G
図 D18 アセンブル 中の表示
図 D19
,H
I
Z
O
!26
アセンブル・ エラーの表示
24,
付録 D
は じめての PCプ ロクラ ミング
le ●1 立ew P7。 いot ,“ 配α PI● 0`mmo
い に●
Dげ
9出
?。
喝
o「
w-r.roh Cc.trol
nre'n€dByncr done
€l ng
│●
o〔
げ 日 恥
●mF‖os`MPtAB IDEV MO HIP」
oo s“
mpo,mw n ox●
`05]C¥PR00
C'Pro;′ RAM FI[[SttMPtnB IDEIPRO U[CTSγ
lo`レ
t:D―
‐
/q′ ,12F02,・
od‐ te st
Fo● ●
01,eci ve
TEST ASM 5
C γPROG RAM FIt〔 Sγ MPtA8:0[,PROJETSγ [[o-lCST ASM 6 Founddl●
e
]C VPROGRハ M Fll〔 SVMPLAO:DEttP R6 JEC TSγ [[D― TEST ASM 8 Foonddl● `t∼
●1″ o
10] C VPROGRAM Fl[Б ¥MPlAB[0:V'RO JECIS=[[D― T〔 ST ASM 3 Symb● l ool「 OV`
13] C VPR00RAM Fl1 6¥MP[A3[DEIP RO J〔 CISyt[D― T:ST ASM 3 Synbolo。 1「 OVて
lo=レ 06]e,PROGRAM F:[[S¥MPtAB ID[VPROJ[CTS¥[:0‐ T:ST ASM l] Found lloct vl
C`PROG RAM FIt:SVM P[AB:DEVP Ю J[GTS¥t:D‐ T:ST ASM 17 陀
=ster n o,(
O VPROG RAM FIt[S¥M PtA9 10[VPRO」 [CTSyt:D‐ TEST ASM l, 随
bu(‖
oo(,st(a鮨
`o as′
FAILED:T,oA■
。quested
`ster in o,て
9:482004
`2401●
図 D20
エ ラ ー画面
J● Ⅲ 2。
ICt ●bピ =ケ
こ
酬
││ヽ
Con(ヒ けo
'′ oramne,
?
口 げ □ 鴫
71…
,山
Ⅲ"… 嗜…
Ll:T F II I:Fl:;
Iヽ
lL‖
│[
(: 1■
11●
PI:F6:1 1ヽ
│
)'11ヽ TI
[IU
20h
│:
[OU
21ト
illヽ
│││
'1:Iビ
1ヽ 1 11 , 1 1111 J「
1ヽ
_ 「 ∫_lF「
│
]
BSF
CALL
11litt
3FFh
i「
[
PC12F62
図 D21
警告 の 出た行
メッセー ジが 表 /JNさ れてい ます Errorは 致命的です Warningは 警 告で MPLABが 適 切に処理 して
くれ ます。 Mcssageは アセ ンプ ラや コ ンパ イル ″に影響 はあ りません 図 D.21の よ うに,表 示 されて
い る行 にカー ソル を合わせて ,マ ウスをダブル
クリックす ると, ソース・プロ グラム行 に矢印が よ/1N
され ます
最初の Warningに カーツルを合わせ てマ ウス をダブル・ クリックしてみ ま した この 行では,プ ロ
グラ′、に使 り
‖して い る PICの 種類 を指定 して い ますが ,LISTと い う文 ′
´が行頭か ら始 まって い ます
行頭か ら始 まる文字はアセ ンブ ラが ラベ ル と半」断す るので ,こ こでは1文 字分以 卜の空 白をあ けなけれ
ばい けなかったのです。
ここで ,ラ ベ ル以外の文字が 行Jrlか ら始 まってい る部分 を rlし ます (図 D.22)_
250
Eb Ed VEn gbFcl Q.64.,
麟照●
m mer
口 げ 口 恥
いo`t“ e wmよ " HIい
0由
PC12F¨
図 D22
ラベ ル で は ない 行 を タプで修 正
に 國■ VeW
21ea
?
口げ
●bu■ =er
"。
ばoぃ にr
□ げ 日 職
Q● 耐│げ C W■ あw
H● ●
0山
‐
C¥P`o■ ,さ ぃ F“ oVMPtA3 D[¥HCHP Too修 しぃ,os m"me、 e‐ 石 /p12F629・ ●
C`PROGRAM F:t:S`MP[AB ID[γ P■ 0」 [O TSγ t:D‐ TEST ASM 3
G='00 G RAM FIt:S:MP[AB ID[VP曰 0」 :O TSrt[D― T[ST ASM=
]C IPPC G RAM FIt:Sγ M PtABID:VPRO u[CTsvt[D― T[ST ASM
C`PPOO RAM FIt:Sγ M PlA3 10[単 ,RO uECTSlt[0-T[ST ASI1
o,,
SynЬ olnot `te口
prevo。
S′ nbol
17
19
,
not plev oos
曝
=sl=l in ope,01
ι
o`ol
=st,7 noっ
FAILED:Tol Au=240158:552004
図 D23
エラー画面
ここでlljttIPr()jectiか らIBuild Al11を 実行 します
jを
図 D23の ように Warningが なくなりました しか し,ErrOrが 2カ 所あります エ ラーのあるイ
イiに スクロール してみ ましょう (図 D24)
エ ラーの内容は定義 されてい ない シンポ ル を使ってい るとい うものです
INTOSC NOCLKOUTは INTRC OSC NOCLKOUTの
誤 りで
,
P OFFは CP OFFの
誤 りです
.
これ らの シンボルはプ ロ グラムの 2行 ‖で イ ン タルー ドした P■
■て い ま す
さオ
2F629 INCフ
ア イ ル は McHIP Tools
2F629 1NCフ
Bitsの 部分に図 D25の ように書かれています
こ の P■
configuration
ア イ ルの 11:で 定 義
フォル ダの 中にあ ります
.
257
付録
D
は じめ ての PICプ ロ グ ラ ミン グ
コに Fdi V印
ユoⅢ t い 嘔G
Dけ
?
BⅢ ,,0 1、 /.′
・ 1・
・
`qr● い ′
“
●け日
い ●¨ W同 製 ll● い
09画
CIII■ trll1l Fiぃ dln F,〕 ●●
│
・ 10-1● ,l ,1・ ′e・ 01-tost er7・
¥mp● s nwlo,,= ′
0/。 12F629・ led― tesl,sm. ′
「S¥[[D― TESTASM 3 S′ n bol● ol,lev。 。sy 10(ned uNTOSC NOCt(OUT'
「S¥[[DT:ST ASM 81Symし 。 ●ol,`ovOosl do(med CP」 D FF)
DTSV[[D― T6Tヽ Ml, 腱 ぁrm。
。Onot m Lnk0 0su′ o th。 そ│● ●k Ыts oe co``oot
"`● Onot nヽ ok O[nw′ e thot b“ k bl,こ ec。
g",=,ぃ o",0●
,TS¥1〔 ● T[sTヽ 日 19 ヽ `、
`rect
、 │■ ‐
図 D24
エ ラ ー画 面 を右 に ス クロ ール
―咄
に
旺
rF
ltON
P●IltOFF
ON
│■ R[つ FF
OFF
創
_rfF
_0,:
ヽ
T t
図 025
}1速 プログラムを言
正して
∫
P12F6291NCの
Ⅲ篇爾ⅢⅢ町Ⅲ町Ⅲ釘爾”用”鰤mm﹃Ⅲ
岬Ш帥ШШШШШШ帥ШШШ國Ш帥Ш帥Ш
_ ll
コンフ ィギ ュ レー シ ョン設定
Build All]を クリックするかIF101キ ーを押 します
1呼
〔
ようや くアセ ンブルに成功 しました (図 D26)Message[302]と い うのが2 fiあ りますが,気
にしな くて人丈人です これでPICに 書き込むことので きる,led― test HEXと いうファイルが
71成 されました PrOj ectsフ ォルダの
中に作られています
この led―
test HEXフ
ll■
アイルの II]を 覗 い てみ ましょう
図 D27を 見てわか るよ うに,PICが 解 ,(で きるように翻 :J(さ れた もので ,今 度は人が 見て もさっぱ
りわか りませんね
と りあえず PICに 書き込むことがで きるファイルがで きま したが ,思 惑通 りの動作 を して くれるか
どうか , シ ミュ レー ションで確 かめてみ ましょう
.
252
∞n,“ wo Whl。 押
Ei!. Edit View PDici 0.6'x..r P7117=mmer
Elげ
嘔
?
●げ口 ■
0曲
p
“
日u‖ d l、 /。 ア lo● Contr011 Flnd in F,3● ●
・
■ ●im`h io`nc`o,yf,撼 , `o● o
イ
[× ocut●
C IP,o``om FilesV M PtA8:0〔 単MC HIP Too sy mp● snwm。 ズ
。 ′
ヽ /,12F620・ ●0‐ test as,
=・
, ぃo"`a'
Mes鍼 導e100210 VPR00RAM F■ ESIMPtAB[00,ROU[CTSttt[0-TEST ASM'7 R=`1●
Mess“ e10021C`'R00RAM FLESγ MP[A8[00 PRO」 ECTS11[0-T〔 STASM 19 R●
m op・ ,al
=ste′
[o“ o`G VPro`rom FIに ,VMPtAB ID:Vpr。 ,ctsVる 0-tost OOD
│
BU■ O
SuCC[[DEOI Tuoん
`2(0217512004
、
図 D26
│口 V
アセンブルの成功
:020000040000FA
:100000008316FF2390000880850088120730990083
:1000100005160C20051200p00828F930A1001C201E
:1000200000000000000000001C2000000000000094
:10003000A10BOF2800000800F830A0000000A00B62
:080040001E280000000008006A
:02400E00843FED
:00000001FF
図 D27 ;ed‐ test HEXフ ァイルの 中身
●
MPLAB S:Mの 使 い方
MPLAB IDEを 度閉 して しまった場合は,新 たに起動 して,IPrOject〕 か ら10penlを クリックして
mcpを 開いて くだ さい。次 に,lDebuggerlか らlSeleCt T0011で IMPLAB SIMIを 選‖くし
ます (図 D28)
■ed― test
ツール・パー にデバ ッグ用 の ア イコンが追加 され ます (図 D.29).
次にlVicw]か らIProgram Memorylを 選択 します (図 D.30)
す ると,Program Memoryウ イン ドウが 開 きます。
では,こ こで図 D31の Lnli“ の/1i下 にある10pcode Hexlを クリックしてみ ましょう (図 D32)
次に図 D31画 晰iの ドにあるISymb(liCJを クリックしてみ ましょう (図 D33)
以 卜の 3種 類 のデバ ッグ″山i面 を選 ぶ ことがで きます
では図 D33の シンポ リック衣/1Nttli“ でデ パ ッグ してみ ましょう
(■
)に なる部分 と,500msの タイマ部分 と,CP∫ が
I´
今 )1の プ ロ グラムの CPlが High
ow(o)に なる部分 を確認 してみ ます lVieWIか ら
ISpeCial「 unctk)n Registers]を 選択 します
図 D34の よ うに,特 殊機能 レジス タ (SFR)の すべ てが 衣/1Nで きるように山i面 サ イズを広 げ ま した
253
付録 D
は じめての PICプ ログラ ミング
¨
¨
¨
¨
¨
¨
図 D28
MPLABS:M選 択画 面
図 D29 ツール・パーにデバ ッグ用 アイコンが追加 された様子
E D.30 P.ogram MemoryOi*ft
254
[L
國
' Ve・
卜│∝
b●
│`。 ′
"呼
。ぃ¨
' 2●
604?
Cl●
ElD.31 [Machinel*fr t:"(
腱
國
‥
`"卜
Clげ
`
⊆ ●■●I LV・ U・・
・
口じ□嘔 ゛山
│口
"│●
い● ●
?
6tl{,v
。 嗜
TEIE
蜘
"暉・
し0
, "DO('日
□ぼ□昴
"o噺
山
麟
H●
。
"D●
●
0日
図 0 32 10pcode Hoxlを 選択 したときのデバ ッグ画面
D`
図 D33
b04?
口
0‐
口 嘔
0● D "■
'0日
1SymbO‖ Clを 選択 したときのデバ ッグ画面
255
付録 D
は じめての PICプ ログラ ミング
ヽ● ●
?
口 ぼ□ 嘔 ● 日
' "詢
PFD
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
∞ ∞ ル 一∞ 0 ¨ ¨ ¨ ¨ ¨ω ” け 口 m “ ” ” ω∞ ¨ ¨ ω ¨
.
∫¨
¨
¨
”
一
¨
¨
一
¨
¨
¨
¨
︻
¨
颯
m
m
m
加
m
嘲
︻
Ш
・
“”¨“O”¨¨m珈¨喘
¨¨¨嘔一”¨¨¨¨¨m一
図D34 Special Functionレ ジスタを表示
llけ
,
ヽ●
0,
口 ぼ 口 0つ ●
,41●
詢 00●
“ ”” ∝ “ “ 0” ¨ ¨ “ ¨ ¨
¨ 一一¨¨¨¨mm器
,
図D35 プログラムをステップ実行
ツール アイコンをl■ ってステップを進めると, リアルタイムでsFRの 内容が反映されます
では, ここでプログラムを 1ス テ ップ進めてみましょう ツール アイコンのイiか ら3番 ‖にある
IStep lntO〕 アイコンかキーボー ドのIF7]キ ーをクリックしてみます
図 D35で は ,
BSF
STATUS′ Ox5
が 実 行 され た とこ ろで す
BSF
,
STATUS′ RA0
と書 い た 部分 で す ね
セ ッ トす る 命 令 で す
25`
プ ロ グラムで
STATUSレ ジ ス タの ビ ッ ト5に 1を
図 D_35の SFRの ア ド レス ooo3hに STATUSと 書 か れ た レジ ス タが あ ります
こ れ は バ ン ク 1に 切 り替 え る 命 令 で した
ヽ● ●
│
● ● o3●
由
●
"“ PFD
¨” ” ” ¨ ” ” ″” ” ″ に
●
¨ “ ¨ 一 い一 い ¨ ¨ ¨ ﹂ ¨
図 D36 プロ グラムをステップ実行
。0
。 0
。0
。
0
呻¨0
0
0¨¨¨0
00
0
0
図 D37 Hardware Stack画 面
イi側 のBinaryを 見るとビッ ト5に 1が セッ トされているのがわか ります ビッ ト3と ビッ ト4に 1が セ
ッ トされてい ますが,こ れは電源が ONに なるとこの二つのフラグがセ ットされます 実際の画油iで は
変化 したレジスタの内容が赤い色に変化 します
では,続 いてIStep lntolア イコンカ1「 7]キ ーを押 してみましょう
Program Memoryの
の 最終 番地 に ジ ャ ンプ して きた ところで す
ミュ レー タが 内部 発振 周 波 数校 1に
D36)こ
れ は cALL 3FFhを 実 行 して , メモ リ
Oxfcと 書 か れて い ます ね。 これ は シ
値 を仮 にセ ッ トした もの で ,oxfcと い う値 を Wレ ジス タに保 存 し
line 1024を 指 して い ます (図
ここには RETLW
て ,呼 び ‖1さ れ た次 の プ ロ グラム行 に戻 ります .戻 り番 地 はハ ー ドウェ ア・ ス タ ック ″ に保 存 され て い
るはず で す
こ こで ス タ ックの状 態 を表示 してみ ま しょ う IViewiか らlHardWare stackJを 選 択 します。
CALL命 令が 実 行 され ,Stack Level lに Return Address ooo2が セ ッ トされ て い ます (図
D37).
では,プ ログラムをもう1ス テップ進めてみましょう
257
付録 D
は じめての PICプ ロ グラ ミング
`' 0●
口● ゛o
' "■
'FE
¨ ¨
・
[““¨
“ ” ¨ ¨ ¨ つ ] ¨ ¨ ¨ い“ ¨
お お ¨ ﹁ ∞ ¨ ¨¨ ¨ ¨一
一¨ ﹁
∞ [ ” ¨¨ 一 一” “ ¨ 幌 “ ″
¨ ¨ ¨ ¨ ] ” 0﹁ い ¨ ¨ ¨ ¨
¨
一
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
一
喝●
¨
掟
¨¨
¨
¨
m
図 038
Dじ
プ ロ グラム をステ ップ実行
ヽ● ● マ
D■
El嘔
0画
。 '∞ 詢 0'E
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨¨”¨¨¨¨¨¨∞”∝¨″¨ω∞“”¨¨∝∝∞∞
¨
¨
¨
一
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
叫
面
“
¨
“
¨
な
¨
・
¨
”
“ ¨ ¨ ¨∞ ∞∞
¨
¨
m
耐
耐
¨
¨
勁
[
﹂
昴
“
m
m
m
¨
¨
颯
¨
﹂
”
¨
一
¨
¨
m
“ 汗 ” ¨‘ い 一 ” ¨ ¨ 一 ¨ ¨
お お ∝ ”ω O ﹁ ¨ “ ¨ “ ¨
,
¨¨¨¨¨¨¨耐工加¨¨¨
図 D39
CP10ポ ー トヘ の 出力 を実 行
サ ブ ルー チ ンの コー ル か ら戻 っ た の で ハ ー ドウ ェ ア
ス タ ッ クの 矢 n]も レベ ル 0に 戻 っ て い ます
OSCCALレ ジス タに発振 周 波 数校正値 の (10000000)Ox80
が格 納 されて い ます プ ロ グラ ムの Line 9に 希 日 します LOOPと ラベ ルが 表示 され て い ます ,そ
の右 に ,BSF CPIO′ Ox4と あ ります ね。 これ は CP10レ ジ ス タの ビ ッ ト4に 1を セ ッ トす る命令 で
す SFRの ア ドレス ooo5hに cPIOレ ジス タが あ ります 現 在 の 状 態 は 00000o00に な って い
て ,CP10ポ ー トの ‖l力 が す べ て Lowに な って い ます 。 つ ま りLEDを 点灯 させ る た め の ビ ッ ト4も
Lowな の で ,LEDが 点灯 して い な い状 態 です
で は プ ロ グ ラム を Line 10ま で進 め てみ ま しょう。
図 D39の よ うに,SFRの CPIOレ ジ ス タの 値 は 0001oo00に 変化 しま した この 時点 で PIC12F629
(図
258
D38)SFRの
ア ドレス oo90hの
…
■
面3
¨¨ ¨ n “ ¨ ∞ ∝ ¨ 口¨ ¨ ¨ ¨ ¨¨
¨¨ ¨ ¨ n m︹ ∞ 中¨ ¨¨ ¨ ¨ ¨¨
¨¨¨ ¨ mO ¨ 疏 ” ¨¨ ¨ ¨ m 出
‐種
「「
pF□
¨
山
﹂
¨
¨
咄
叫咄
耐
耐
耐
叫
¨¨
m
叫
耐
m
¨
叫
叫
呻
m
m
¨
¨
図 D40
IM10
●
o詢
.
一
¨
¨
¨
¨
乳Щ
¨
¨
¨
﹁
コ
﹁
¨
¨
¨
﹄
枷
¨
帥
呻
加
﹂
か
o
“¨嗜耐﹂ロロ”“”¨一
,
ぃ 回
一
” ¨¨ “ ” ¨¨ “ “ “ m ¨
一¨¨ ¨ ¨ ¨¨ ¨ ¨ ¨ ¨ ¨
¨
Ю ¨” ¨ ¨ ¨¨ ¨ ¨ ¨ ¨ ¨
。│
.… て
□
… ,「
昴 '¨ │ム … │「 ¬i―
¨…… ■
●‐●
,
0凸 o
口げ 口 嘔
¨
¨
¨
¨
¨
¨
¨
¨
一
¨
¨
¨
一
,
Stopwatchウ ィン ドウを開 く
の 3番 ピ ン (CPl)が High(■ )に な っ て , この ポ ー トに つ なが って い る LEDが 点 灯 し ます
で は ,05秒 IHlの タ イ マ を Lて い き ま し ょ う
7「
こ こ で ハ ー ドウ ェ ア
ス タ ッ ク の ‖i■ iを 閉 じて
,
IDebuggerlか らISt()pWatch]を 選 Jく します
Stopwatchウ ィン ドウ (図 D.40ノ [iド )を 開 くと,こ れ までのプ ログラム・ サ イクル数 と経過 タイムが
表示 されてい ます IPrOcessOr「 rcquency]に 4 000000MHzの 表示があ ります プ ログラムのステ ッ
プは,発 振周波数 の 1/4で 実行 される ことを,プ ロ グラム を書 くところでJι 明 しました。その ことが こ
の Stopwatchか らもわか ります
さて,こ こで Stopwatchウ イ ン ドウの[Zerolボ タンをクリック して Timeを リセ ッ トしてお きます
I'ヽ
' D● 0嘔 0自
.
ぃ
一
“ ″¨ ∞ “ “∞ ” “ ¨ ”∞ ¨
¨如 ¨ ¨ ¨ ¨ω ¨ ¨ ¨¨ ¨ ¨
4-‐
―
…
一
¨
¨
¨
一
一
一
¨
一
¨
一
¨
一
Dげ
●
"1● F口
¨
「
屋五iパ Ⅷ
図 D41
WAlT500MSサ
ブル ーチ ン を実 行
25,
付録
D
は じめ ての PCプ ロ グ ラ ミング
0`
?
口●
●日 9■ 口
' 1。
一 一一 ¨ o ﹂ ¨¨ ¨ ¨ ¨ ¨¨ ¨ ∞0 ¨ 〓 ¨ 。﹁ . ¨ ¨﹁
一
¨
¨
¨
¨
¨
一
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
”
¨
¨
¨
¨
¨
メ イ ン・ プ ロ グ ラ ム の
﹁ . .1 ● . い 。 L“ . . 。 ●● ●
D42
“ 。
︻一¨¨”
¨.¨
︹ ¨ ﹂
¨¨¨¨
¨¨
¨″¨¨¨
“
.. .
.
一
¨
¨
¨
一
一
¨
¨
¨
¨
¨
¨
¨
¨
¨
¨
如
¨
﹁
﹁
T
¨
¨
・
れ
”
¨
.I111]淵
図
■ 70□
LOOPを 一 周
5001nsの タイマ を シ ミュ レー シ ョンで ステ ップ実行す る と膨 大な け間がかかって しまうので 、 気 に
実行 させてみ ましょう ツール・アイ コンの イiか ら2番 F]に あるIStcp OVCrlア イコンか ,キ ー ボー ド
のIF8]キ ー を押す と,サ ブルーチ ンを 気 に実 行 して くれ ます とはい え約 50万 口│の ステ ップを実行
するので ,パ ーソナ ル ‐コンピュー タによっては結構時間がかかる場合があ ります
Stopwatchウ イン ドウの Timeに 499 998000msと 表示 され ました 500msぴ った りにな ってい ませ
んね
これは,こ の あ とGP10レ ジス タの ビッ ト4を
Lowに して,1呼 度 5001nsの サブ ルーチ ンを実 行
してか ら,L00Pの 先頭に戻 るまで の ステ ップ数を加 えるとち ょう ど50万 口│の ステ ップに なるように
して い るか らで ,あ らか じめステ ップ数 をこのデバ ッガによって調整 した もの をここで紹介 して い ます
で は ,ぴ った り 1秒 Flで LEI)の 点 減 が イjわ れ るか を rll認 して み ま し ょう この まま Pr()granl
Memoryウ ィ ン ドウの矢印が Line ■0を 指す までIStep OVer〕 ア イコンをクリックす るか,I「 81キ
ー を押 して くだ さい
今度 は,図 D42の ように,Stopwatchウ イン ドウの タイムが 1秒 ピッタリに な ってい ますね これ
で ルー プを 1用 す る時間が 1秒 である ことが確 認 で きま した 今卜│の プログ ラム はここ まで Ill認 す れ
ば,実 際 に PICに 書 き込 んで,問 題な くLEDが 点滅 して くれるはず です
まだまだ,こ れ らのツールには便利 なllい 方がた くさんあるのですが ,こ れ までの使 い 方がわかれば、
L成 された led― test HEXフ
あ とはltい 込んでい けば理解 で きるよ うにな ります では,こ こで ′
ァイルを PICに 書き込 んでみ まし ょう
Cド D.3 plcラ
●
イタ
の
方
使い
PiCに 書 き込 む ための道具
開発 したプ ログラム を PICに 書 き込 むためには PICラ イタが必 要です
この ライタは 自作す ること
も,「 能 ですが,│ド 販 されて い る もの も多 くあ り, 手近な ところでは組み 立てキ ッ トが安価 に市販 されて
260
写真 D3 秋 月電子の PICラ イタ
秋月の PICラ イタVer 3を 購入 して,Ver 4に グレー ドア ップするためのキ ントをあとか ら購 入 した Ver 3で は P1012C509A
P C16F84Aに 対応 していたが、Ver 4に なってP C12F629が 使 えるようになった
写真 D4 秋 月電 子の電源ケ ー ブル セ ッ ト
電源ケーブルセッ トにはDC15V 03A出 力のACア ダブタと、D SUB9ビ ンの RS 232Cケ ーブルがついてくる
い るので ,そ れを組み立ててltう のが 賢IIIで す
ここで は多 くの 人が使 って定 .Iの あ る秋 月電子製 の PICラ イタ キ ッ トを使 い ます。現 在発売 され
て い るバ ー ジ ョン3キ ッ トに,バ ー ジ ョン4の ア ップ グレー ド キ ッ トを組み合 わせ ます_キ ッ トとい
って も, とて もわか りやす い解説がつい てい るので ,は んだ付け さえで きれば簡単 にκlみ 立てることが
で きます
PICラ イタを使 うためには,パ ー ソナ ル・ コ ンピュー タとPIcラ イタとをつ な ぐため の ,RS 232C
ケープル と,15Vの 電源が必要 で すが ,キ ッ トと一 緒 に電源 ケ ー ブル
(写 真
セ ッ トを買 う とよい で しょう
D3,写 真 D4)
PICに メ
│き 込むための ライタ・ ソフ トは,キ ッ トと 一緒 につい て くる CD― ROMに 収録 されて い ます
jit子 のホ ームペー ジか ら最 新版 をダウ ンロー ドして使 うことをお薦め します
が ,秋 チ
●
PICラ イ タを使 つてみ よ う
まず,秋 月のホームベー ジか ら最 新版 の PICプ ロ グラマ V4を ダウ ンロー ドします。 本書執筆時点で
の最新版 は [picpgm6_beta_p3
3 34_f639 zipIと なってい ました
267
付録 D
は じめての PCプ ロ グラミン グ
スの
│ア ドレ
図 D43
,
詢鮨り
お軋 入りω
鼎 品
∼
,プ
X順
1畠
ttω
幽い
?r1t (n 経郵D
↓L
i
ω
⇒
懇
す
CY[4y Docunents]6k -prc
秋 月の ホ ー ム ベ ー ジ か らダウ ン ロー ドして解凍 したフ ァイル
iltli{-l" oo'i , F---=
imlB-P hF , F^-d---=
子 子二
日I+錫駆幅
す
。
哺
印れま
`多
図 D44
フ ァ ー ム ウ ェア の ア ップデ ー ト
PICプ ロ グ ラマ をltっ て い る以 合 は,1コ ン トロー ル バ ネ ルIの [ア プ リケ ー
シ ョンの 追 加│と 削 除]か らJiい バ ー ジ ョンの PIC Programmcrを 削 除 します
ダウ ンロー ドした zipフ アイル を解 凍す る と,図 D43の よ うにの フ ァイルが 展 ,Hさ れ ます
setup exeア イ コ ンを ダブ ル ク リ ック して PICプ ロ グラマ V4を イ ンス トー ル します
い った ん Windowsを 終 ,電 源 を OFFに し,次 に PICラ イ タに電 源 と RS 232Cケ ー プ ル をつ な い
で パ ー ソナ ル コ ン ピュー タの 電 源 を 人れ ,立 ち上 が った Windows 11で PICプ ロ グ ラマ を起 しま
す この と きバ ー ジ ョンア ップ キ ッ ト(AE PCM877モ ジ ュー ル)上 の グ リー ンの LEDが 211点 滅 す
以 ntに バ ー ジ ョンの メiい
,´
ll」
るの を確 認 します
ProgrammerV4 Bcta(picpgn6_beta exe)を 起動 します メニ ュー バ ー の ヘ ルプの
ア ップデ ー ト1を 選択 して ,10PENIボ タ ンを ク リ ック し, ダ ウ ンロー ドして解 凍 し
1フ
た フ ァイルの 中か ら,ppgm639 HEXを 選択 します そ の 後 ア ップデー ト・ ボ タ ンを ク リッ クす る とア
次 に ,PIC
ァー ム ウエ ア
ップデー トが 開始 します (図
D44)
D45)の 左
起動 した PICプ ロ グラマ (図
こ こで 書 き込 むデバ イ ス を選 J(し ます
い て い る ジ ヤ ンパ
2● 2
1に
あ るデ バ イス選択 llllに
PIC12F629の 表示 が あ ります が
,
別 ウ イ ン ドウで ボー ド情 報 が 表示 され て い ます が ,ラ イタにつ
ピ ン を2と 3に セ ッ トし,40ピ ンの ソケ ッ トに PIC12F629を セ ッ トす る よ うに指
PICi21629
図 D45
」
PiCプ ログラマV4の 起動
晏野
詐肇
図D46 ライタに新品のPlc1 2F629を セットして〔
リー ト(R)]を 実行
示 が IIIて ヽヽます
「 ドに は ,ラ イ タが COM2ポ ー トに接 続 され て い る こ とが 示 され て い ます
イ
す るパ ー ソナ ル・ コ ン ピュー タに よって違 い ます
この 接 続 状 況 は ,lt川
新 品 の PIC12F629を ラ イ タに セ ッ トして か らIリ ー ド]ボ タ ンを タ リ ック して ,Fl有 の 内 部発 lllc「 J波
数校 1に ■1と バ ン ド ギ ャ ップlllを 読 み 込み ます 図 D46の 画像 中 央 L部 に
ー タ (1 6 jll数 )]
IOSCCALデ
の イiに [981,そ の ドのIBGデ ー タ (範 レ
HK)∼ 3)Iの イfに 1■ 1と 表示 され ました プ ロ グ ラム メモ リの最
終番地 (o3FFh)に 内部発llttt llx数 校 [lliが 占き込 まれているのが確認で きます この 1つ はそれぞれ
のイ
同体 に特 有の値 で , 11場 か らlllr・Tさ れると きに 1+き 込 まれた ものです
OSCCALデ ー タとは,PIc12F629の 内部発振 回路 を使 う場 /1tの 発振周波数の校 E値 で,内 部発振「1
2● 3
付録 D
は じめての PCプ ロ グラ ミング
『
}
│ :::il:l::1:::
Eil
■7
錦
―
I t; t..
一
,
=¬
FA〔
∞●
田,7い つ
“
図 D47 1ed test HEXフ アイルの 読 み込み
l2cr'l2F
lrocir6 lPtcro lPIU,j I
osocer.nn |
P*ILl'11- l6ccArt-'o6iH) | '
l$l lm:-rm,o-o -fr
i,
図 D48
HEXフ
cemer-s('l, vf
:I,faqtr-*'tffF
6"
ァイル読 み込み後の メモ リ最終番地
路 をイ
tう プ ロ グラ ムでは,PICに プ ロ グラ ム を 古 き込む ときに このflも
緒 に書 き込む必 要があ りま
夕1部 発振卜
1路 を4tう ときは関係あ りません
ー
タとは
BGデ
,パ ワー・ オ ン リセ ツ トと,プ ラウ ン アウ ト リセ ッ トに使 われる21Vの 基 l111[
す
.
そ の範り
‖は 0か ら3ま での PЧ 通 りの値 をもちます
ここでス:Lに あるIHexロ ー ドlボ タンをクリ ックして,led― test
サ
1:の 校 正llで
HEXフ
アイル を,売 み込み ます
このプ ロ グラムでは コン
図 D47の ように,プ ロ グラム メモ リに読み込 まれた様 1が わか ります
フ ィギ ュレー ショ ン グ・ ビ ッ トの 設定 をプ ロ グラムの 中 で次 の ように設定 してあるので ,図 の 画前iイ
l‖
i
にそ の 内容が反映 されてい ます。
CONFIG ttNT OSC NOCLKOUT & PWRTE ON &
& BODEN OFF & MCLRE OFF & WDT OFF
CPD OFF &
CP OFF
この コ ン フ ィギ ュ レー シ ョン・ ビ ッ トを プ ロ グ ラ ム の 中 で 11定 しな か った 場 合 は ,IIEXフ ア イ ル を
読 み 込 ん だ あ とに , コ ンフ ィギ ュ レー シ ョンの 内 容 を こ こで 設 定 す る必 要が あ ります
では読み込んだプ ロ グラム
メモ リの最終番地 を見てみ ま しょう
図 D48の ように,プ ログラム・ メモ リの最終番地は 3FFFhに なってい ます
264
方新品の PIC12F629
FF FF
FF
=
│
図050 プログラム成lrj
∃コ∃
FI
一
ぁ殉 ラ■
二
FF FF FF FF FF FF FF FF FF
一一
一
郷 為
fF
一二
IOO6O:FF FF
:量 i
をセ ッ トしてlリ ー ド!ボ タ ンを ク リ ック した と きの プ ロ グラム ・ メモ リの 最 終 番地 は 3498hで した
この よ うに,セ ッ トした PIcの 最 終 番地 に内 部発振 周 波 数校 1に 1礎 が きち ん と
書 き込 まれ て い る場 合 は
図 D46の 10SCCAL BCは ,マ イコ ン内 の デー タを使 用す るlの 項 目にチ ェ ックを して,Iプ ロ グラム
lボ
タ ンを ク リ ックす れ ば ,プ ロ グラム と一 緒 に きちん と内部 発振 周 波 数
校Ji値 も書 き込 む こ とが で き ます
セ ッ トした Icの 最終 番地 が 別 の lAで 書 き換 え られ て しまって い る場 は
合 ,IOSCCAL BCは ,マ イ
コ ン内 の デ ー タをft‖ jす るJの 項 ‖にチ ェ ックを外 して
,loSCCALデ ー タ (16進 数 )]の 右 の 枠 内 に メモ
して お い た校 正値 の値 を人 力 します 人力 す るの は ド2桁 で ,上 位 の 34(RETLW命
令 )は 必 要 あ りませ
ん_入 力が 済 ん だ ら1プ ロ グラムlボ タ ンを ク リ ック します
,
I〕
ログラム〕
ボタンをクリックすると,図 D.49の ようにメッセー ジ欄に1プ ログラミング中… と表/1N
〕
されたあと,lni面 の ドにIプ ログラ ミング成功lと 表示 (図 D_50)さ れ,PIcへ の 書き込みが
完 fし ます
これでようや くPICが 使えるようにな りました
では,PICに 書き込まれたプログラムの動作を確かめてみ ましょう ュニバーサル基板に組み込んで
もよいのですが,部 品が少ないので米板を4tわ ないで組んでみ ましょう。
Iプ
Cド
D.4
ロ
プ
グラ
ム
の
動
作
確認
プ ログラムの書 き直 しが必 要になった ときのこ とを考えて,PIcは ソヶッ ト
にた し込むように してお
きます 電源 は 5Vで も乾電池 2個 直列 に した 3Vで も動 作 します
5Vの レギュ レー タを4rtぅ 方法 もあ ります。 今IJは 定格電圧 37Vの リチ ューム・ イォ ン
電池 で動作確
認 してみ ま した 写真 D5の よ うにパー ツをlCソ ケ ッ トに直接 はんだ付け して作 りました。
写真 D5
LEDの 点減 テス ト
265
付録 D
写真 D6
は じめての PICプ ログラ ミング
写真 D7
ク リス タル発振子
セ ラ ミック発振子各種
きちん と 1秒 間 に 1)1ず つ LEDが 点減 す る の を確 認 で きたで し ようか 。時 計 の 秒 針 と見比
べ なが ら
確 認 してみ て くだ さい
● PICの クロックについて
■
実は PICに 内蔵 され ている発振 nl路 はあま り11確 ではあ りませ ん デー タシー トには 1%に 校 1に さ
れて いる と書いてあ ります RC発 振
「 1路 をftっ てい るので,周 囲の温度 の影響 も受けます
今 llの ‖的では まった く問題 あ りませ んが ,時 計の ように精度を必要 とする場合は,外 部発振 口1路 を
い
は
ftい ,ク リスタル発振子 (振 動 子)を ltう 必要があ ります (写 真 D6)そ こ までの精度が必要 な 場合
セラ ミック発振 (写 真 D7)を 使 えば よいで しよう
「
RC発 振
1路 に比べ て飛躍的 に精度が
Lが ります
“
■ ま とめ
セわれる命令は全部 で 35種 苺iし かあ りま
「初めての PICプ ロ グラ ミングJは いかがで したか PICで イ
ー
せん プ ロ グラムを組 むために全部 の 命令 を使 うことは まず ないで しよう 今世Iの 発光 ダイオ ド点減
プ ロ グラムでftっ た命令を もう 度見てみ ましょう
BSF, BCF, CALL, MOVWF, Mい
′LW,
00TO, NOP, DECFSZ, RETURN, RETLW
のに よ
すでに 35種 な1の 命令 の 中か ら 101111類 の命令 をltい ました これ らの 命令 はプ ログラムを剰lむ
‐ ‐
せん
く使 われる命令 です 複雑 に見えるプ ロ グラム も, つ つの命令 の組 み 合 わせで しかあ りま
ロ
ム
ら
度にすべ てを理解す ることは大変ですが ,本 亨:の 別の 章で取 り Lげ ているプ グラ も参考 に しなが
,
少 しず つ 理解 を深め て ください
1の 「発光ダイオー ドの点滅Jプ ログラム をC言 語で 書
C,i語 プ ロ グラ ミングに興味 のある人は,今
「
き直 して.第 7'れ の 中で紹介 して い ますか ら参考 に して ください
本 市の CD― ROM収 録内容 を表 D2に 示 します
表 02
CD‐ ROMリ ス ト
'7+try?l
,さ
progran
収録内容
1減 プ ログラ′、(エ ラーあ り
光 ダイオー ドリ
,
(PIC12ド 6")
発光ダイオー ド■減 プ ログラム (‐ ラーな し
,
(PiC 12F629'
266
解
説
C'用 語
◆ 発光ダイオー ド(LED)
電流 を流す と発光す る半導体素 の 種 .ア ノー ドとカッー ドの 1つ の端 Fが あ り,ア ノー ドに ‖
1,カ
「
ソー ドに負の電 をかける と,約 2Vの 電圧 で電流が流れ始め,発 光する
'「
◆ アセンブラ (assemb:er)
コンピュータが解釈で きる,:語
(マ シン」
1)と 1対 1に 対応 したプログラミング1言 語 (ア センプ リ言語)を
用いて作成されたソフ トウェアの設計図 (ソ ース コー ド)を ,コ ンピュー タが実行できる形式 (オ ブジ
ェク ト コー ド)に 変換するソフ トウェア
◆ C言 語
1972年 にアメリカAT&T社 のベル研究所で D M Ritchie氏 とB W Kernighan氏 によって開発された
プログラミングtiri.1986年 にアメリカ規格協会 (ANSI)に よって標準化され,国 際標準化機構 (ISO)
や日本 1喋 規格 (JIS)に も標準として採用 されている
◆ コンパ イル (compilo)
人 間が プ ロ グ ラ ミング ::語 を用 い て 作 成 した ソ フ トウ ェアの 設 計 図 (ツ ー ス・ コー ド)を コ ン ピュー タ
Lで 実行 I能 な形式 (オ ブ ジェ ク ト・ コー ド)に 変換 す る こ と
“
◆ オブジェク ト・ コー ド(Obiect code)
コン ピュ ー タにIF解 で きる 言
「1(マ シ ン語 )で 記述 されたプ ロ グラム
る
ネイテ ィブ
数lltと して表現 されるため ,そ の ままの形で人間が理解するのは困難
コー ドとも呼 ばれ
.
◆ フローチ ャー ト
仕事 の流れや処理の il
Flを
,記
号を用 いて図式化 した もの
◆ イ ンクルー ド(include)
nclude」 は「含め る」 の 意味で,コ ンピュー タ関連 では,デ ー タの ある部分に のデー
タを判lみ 込
別
「
む場合などに この 言葉を使用す る
◆ サブルーチン(sub rou● ne)
意味的もしくは機能的にまとまった処理を行うルーチン 複雑なプログラムをサブルーチン化 して意味
単位/機 能単位にうまく分割することで,プ ログラムの構造を理解 しやす くすることがで きる
◆ マシン語 (machine language)
CPUが 直接解釈/実 行できるプログラム・ コー ド
267
付録 0
は じめての PCプ ログラ ミング
◆ デ ィレク トリ(directory)
ハ ー ド デ ィスクや フロ ッビ デ イスク.cD
ROヽ 1な どの記憶装 itで
ファイルを分類
幣理す るた
めのイ
カ
■ 場所 「 フ ォルダJと も呼ぶ
◆ デバ ッガ (debugger)
、
プ ロ グラノ
の (り (バ グ)の 発見や修 Lを 支援す るソフ トウ ェア
1り
◆ ビル ド(build)
プ ロ グラムFTl発 にお いて. ツー ス
、を
プ ログラム を コンパ イル もしくはアセ ンブル し,実 行 プログラノ
作成す ること
◆ コンパ イラ (compiler)
プ ロ グラ ミング言
人間力`
tl・
で i己 述 した ソフ トウ エアの ili:│ズ
(ソ
ース
コー ド)を , コンピュー タカ'実
行で きる形式 (オ ブジェク ト・ コー ド)に 変換する ソフ トウェア
◆ デ バ ッグ (debug)
コンピュー タ プ ロ グラムの
fり
tり
(「
バ グ」 と呼 ばれる)を 探 し,IItり 除 くこと
◆ スタック (stack)
との
最後 に入力 したデ ー タが 先に出力される とい う特徴 をもつ デー タ構う
[
不
◆ コンフ ィギ ュレーション (conigura‖ on)
「coniguratk)nJは 「形Jえ 、地形Jな どの 意味 で ,コ ンピュー タ用語では,ハ ー ドウ エア ソフ トウエ
アの 各種 設定 を意味す る
Microchip社 のライタ
コラム
ヽlicrocllip llか ら多 くの Pに ラ イタが 発 売 され て い
ます が
写 真 DAは 11社 の 8ピ ンか ら 11ビ ンまで の フ
ラ ツシユ
ボー ドです
き,生
タ イプ の PICに
│卜
11所
き込 む こ との で きる。
rSBボ ー トにつ なげ ば外 部電
で きるυ)で
む こ と力`
ート
′`ソ コ ンで 1吏 うの に使 利 です
(,ビ
ンの 111.最 小 I'IC(PIC101'2()、
l・
tア
2● 3
しで
tヽ
│ヽ
ノ
ワ ン タ イア、
伸li各 もS36と 安 く 何 よ
ツiた な デ バ イスヘ の
りもヽlit rochip lの 製 肝│な ので
対応 も rい の でお勧 め です
:な
シ リー ズ に も変
ダブ タを使 う こ とで 対 ,と して い ます
I'iCに は 出 き込 め ませ んが
i潟
シ リア ル ,ド ー トσ)な
写真 DA
Microchig+lOPlckit 1 Flash Starter Kit
Fly UP