...

付録D

by user

on
Category: Documents
8

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