はじめてのPICアセンブラ入門 戻る
 このページからは、書籍に掲載したプログラムの最新版がダウンロードできます。

 ダウンロードするファイルを選択し、マウスのボタンを右クリックし、「対象をファイルに保存」を選んでから保存してください。

 プログラム中のスペースやタブ、コメントは、印刷物とは異なる場合があります。プログラム・リストの中の必要な部分をコピーしてからご利用ください。

2005年3月15日

●変更履歴

2008年5月26日 
 第4版までの訂正をまとめたpdfをダウンロードできます。

2008年4月30日 
 訂正をまとめたpdfをダウンロードできます。

2008年1月7日 
 全角スペースがソースに混じっているときのエラー解説を含め訂正をまとめたpdfをダウンロードできます。

2007年12月18日 
 訂正をまとめたpdfをダウンロードできます。

2007年11月5日 
 訂正をまとめたpdfをダウンロードできます。

2006年12月8日 
 訂正をまとめたpdfをダウンロードできます。

2006年10月23日 
 リスト7-10を修正しました。訂正をまとめたpdfをダウンロードできます。

 list7-10.asm->list7-10fix.asm

2006年10月18日 
 リスト5-15を修正しました。訂正をまとめたpdfをダウンロードできます。

 list5-15.asm->list5-15fix.asm

2006年1月11日 
 リスト5-1を修正しました。訂正をまとめたpdfをダウンロードできます。

 list5-1.txt->list5-1-fix.txt

2005年12月26日 
 訂正をまとめたpdfをダウンロードできます

2005年5月12日 2点修正

list5-3->list5-3all.txt
list5-5.txt->list5-5fix.txt
list5-3表計算用エクセルファイルcalc.xlsを追加

第2章

list2-1.txt list2-2.txt list2-3.txt list2-4.txt
list2-5.txt list2-6.txt list2-7.txt list2-8.txt
list2-9.txt list2-10.txt list2-11.txt list2-12.txt
list2-13.txt list2-14.txt

第3章

list3-1.asm list3-2.asm list3-3.asm list3-4.asm
list3-5.asm list3-6.asm list3-7.asm list3-8.asm
list3-9.asm list3-9b.txt list3-10.asm list3-11.asm
list3-12.asm list3-13.asm list3-14.asm list3-15.asm
list3-16.asm list3-17.txt

第4章

list4-1.txt list4-2.asm list4-3.txt list4-4.txt
list4-5.txt list4-6.txt list4-7.txt list4-8.txt
list4-9.txt list4-10.asm list4-11.txt list4-12.asm
list4-13.txt list4-14.txt list4-15.txt list4-16.txt
list4-17.txt list4-18.asm

第5章

list5-1.txt list5-1-fix.txt list5-2.asm list5-3.txt list5-3all.txt
calc.xls

list5-4.txt
list5-5.txt list5-5fix.txt

list5-6.txt list5-7.txt list5-8.txt
list5-9.asm list5-10.txt list5-11.txt list5-12.txt
list5-13.txt list5-14.txt list5-15.asm list5-15fix.asm

第6章

list6-1.asm list6-2.asm list6-3.asm

第7章

list7-3.asm list7-6.asm list7-7.asm list7-10.asm list7-10fix.asm

追加サンプル(印刷物には未掲載)

・スリープ命令のサンプル(スイッチを押すことでスリープから復帰してLEDを点灯/消灯する)ss7-sleep.asm

・ウォッチ・ドッグ・タイマのサンプル(ウォッチ・ドッグ・タイマでスリープから復帰することでLEDを点滅、4章のディレイ・ループで作っていたタイミングをウォッチ・ドッグ・タイマにしスリープするプログラム)ss7-sleep_wdt.asm

・EEPROMに閾値を記憶しておくサンプル(第5章のレジスタに閾値を覚えていたプログラムの改良版)ss7-eeprom.asm

AppendixA

listA-1.asm

2005/05/12 リスト5-3,5-5に関して;

 リスト5-3を表計算で値を求める方法。Excelですと次のようにして求められます。
A1 を 0 に B1 を =MIN(FLOOR(256-32*LOG(256-E1, 2)+0.5, 1), 255)します。
A2 は =A1+1 とし B2 は B1 のコピーとします。そして 2 行目を3行目から256 行までにコピーします。B の列が求める数値です。calc.xls がExcelでの計算例です。

 計算の意味ですが、MIN() で最大値が255を超えないようにしています。FLOOR() 関数の中身は本文の式に 0.5 を足したものです。FLOOR() 関数は切捨て計算を 行うので、0.5 をあらかじめ足しておくことで、四捨五入の計算としています。

ご質問の内容;

 リスト5-5で実行したら、逆に明るいときに点滅します。上から 4,5行目を以下のように改め、暗くなると点滅するようになりました。

	movwf	ADRESH
addlw -D'128'

 リスト5-5 については、申し訳ありません。試された方法ですと本文のコメント 通りの動作になりますが、該当部分は以下のように訂正させてください。

	movfw	ADRESH			; w に変換結果を代入
	sublw	D'128'			; 暗さの閾値と比較をする
					; 128 - w の結果が負(C が 0)なら暗い
	btfss	STATUS, C
	goto	blink_LED
------------------------------------------------------------------------