;クマさん注意ホーン Ver 1改	bitメカ工房		2009-07-03(金)
;
;[プログラム概要]
;･LCDを4ビットモードで表示させる｡
;
;	ｾﾝｻｰA ｾﾝｻｰB
;	  1234567890123456
;	┌────────┐
;	│A128o B128o  VOL│
;	│C128o D128o  100│
;	└────────┘
;	ｾﾝｻｰC ｾﾝｻｰD
;
;・オシレーターは内部RC4MHzを使用する｡(1命令≒0.000001秒(1/4000000*4))
;
;(参考)
; ･タイマー0のプリスケーラを【 256 】にした場合のオーバーフロータイム
;　　1/4000000x4x256x256=約0.065秒
;　　[タイマー0はA/D変換の待ち時間用に使用する]
;
; ･タイマー1のプリスケーラを最長【 8 】にした場合のオーバーフロータイム
;　　1/4000000x4x256x256x8=約0.524秒
;　　[LCD表示とA/D計測の待ち時間用としてﾌﾟﾘｽｹｰﾗ4(約0.25秒)で使用する]
;
;
;[PIC選定仕様他]
; ･PIC16F88-I/P使用｡(秋月電子通商で230円/個)
;
;			     ┌─┰─┐
;	センサーB	 RA2 ┥	     ┝ RA1	センサーA
;	センサーC	 RA3 ┥	     ┝ RA0	ボリューム入力
;	センサーD	 RA4 ┥	     ┝ RA7	LED出力
;	MCLR		 RA5 ┥PIC   ┝ RA6	FET出力
;			 Vss ┥ 16F88┝ Vdd	5.0V
;	LCD_電源	 RB0 ┥	     ┝ RB7	LCD_DB7
;	LCD_E		 RB1 ┥	     ┝ RB6	LCD_DB6
;	LCD_R/W		 RB2 ┥	     ┝ RB5	LCD_DB5
;	LCD_RS		 RB3 ┥	     ┝ RB4	LCD_DB4
;			     └───┘
;
;[プログラムの基本流れ概要]
;
;	A/D変換　ボリューム　←---------┐
;		↓			↑
;	A/D変換　センサーA		│
;		↓			↑
;	A/D変換　センサーB		│
;		↓			↑
;	A/D変換　センサーC		│
;		↓			↑
;	A/D変換　センサーD		│
;		↓			↑
;	警報判定　警報			│
;		↓			↑
;	LCD表示				│
;		↓			↑
;	約0.25秒の待ち			│
;		↓			↑
;		└----------------------┘
;
;[凡例] (自分で分かりやすいように目印を付ける)
; m???:メモリー  r???:ラベル  s???:サブルーチン  v???:変数  ★:調整箇所など
;
;-------PIC基本設定---------------------;
; CVASM16アセンブラ用記述

	include	'16f88.inc'

	fuses	_cp_off			;コードプロテクト→無効
	fuses	_ccp1_rb2		;PWMピン選定(_rb0or_rb3)
	fuses	_debug_off		;インサーキットデバックモード→無効
	fuses	_wrt_enable_off		;eeconのFlashメモリ可能→しない
	fuses	_cpd_off		;eepromのコードプロテクト→無効
	fuses	_lvp_off		;低電圧プログミング(5V)→無効
	fuses	_boden_off		;低電圧リセット(約4V以下)→無効
	fuses	_mclr_on		;★MCLR端子(リセット)→設定する
	fuses	_pwrte_on		;電源投入72ms間リセット→有効
	fuses	_wdt_off		;ウォッチドックタイマー→無効
	fuses	_intrc_io		;オシレーター設定→内蔵RC

;	fuses	_ieso_off		;内部/外部スイッチオーバーモード？
;	fuses	_fcmen_off		;フェイルセーフクロックモニター？

	id	'0030'			;Ver3.0


LCD_E		=	rb.1		;LCD用
LCD_RW		=	rb.2		;LCD用
LCD_RS		=	rb.3		;LCD用

;-------プログラムメモリー割当----------;

mFREE_A		=	20h		;汎用カウンター(LCD初期､DS18S20)
mFREE_B		=	21h		;汎用カウンター(LCD初期､DS18S20)
mLCD_44		=	22h		;LCDデーター分割送信用

mBINA08		=	23h		;BCD計算用
mBINAXX		=	24h		;　　〃
mSHOW08		=	25h		;　　〃
mBCD_1		=	36h		;B→Dの1桁目(一の位)
mBCD_2		=	37h		;B→Dの2桁目(十の位)
mBCD_3		=	38h		;B→Dの3桁目(百の位)

mVOLUME		=	39h		;ボリューム　A/D値8bit値
mVOL_1		=	3Ah		;ボリューム　A/D値の1桁目(一の位)
mVOL_2		=	3Bh		;ボリューム　A/D値の2桁目(十の位)
mVOL_3		=	3Ch		;ボリューム　A/D値の3桁目(百の位)

mSEN_AA		=	3Dh		;センサーA　A/D値8bit値
mSEN_A1		=	3Eh		;センサーA　A/D値の1桁目(一の位)
mSEN_A2		=	3Fh		;センサーA　A/D値の2桁目(十の位)
mSEN_A3		=	40h		;センサーA　A/D値の3桁目(百の位)

mSEN_BB		=	41h		;センサーB　A/D値8bit値
mSEN_B1		=	42h		;センサーB　A/D値の1桁目(一の位)
mSEN_B2		=	43h		;センサーB　A/D値の2桁目(十の位)
mSEN_B3		=	44h		;センサーB　A/D値の3桁目(百の位)

mSEN_CC		=	45h		;センサーC　A/D値8bit値
mSEN_C1		=	46h		;センサーC　A/D値の1桁目(一の位)
mSEN_C2		=	47h		;センサーC　A/D値の2桁目(十の位)
mSEN_C3		=	48h		;センサーC　A/D値の3桁目(百の位)

mSEN_DD		=	49h		;センサーD　A/D値8bit値
mSEN_D1		=	4Ah		;センサーD　A/D値の1桁目(一の位)
mSEN_D2		=	4Bh		;センサーD　A/D値の2桁目(十の位)
mSEN_D3		=	4Ch		;センサーD　A/D値の3桁目(百の位)

mSEN_Ao		=	4Dh		;LCD内でのLED風キャラクター表示用
mSEN_Bo		=	4Eh		;LCD内でのLED風キャラクター表示用
mSEN_Co		=	4Fh		;LCD内でのLED風キャラクター表示用
mSEN_Do		=	50h		;LCD内でのLED風キャラクター表示用


;=======プログラム初期設定==============;

;Bank 0
	clr	ra			;
	clr	rb			;

	mov	t1con,#01100001b	;◆
					;bit7…設定項目無し
					;bit6…システムクロック
					;bit5～4…プリスケールレート【4】
					;bit3…0 タイマー1専用オシレーター
					;bit2…0 外部クロック同期
					;bit1…0 タイマー1クロックソース選択
					;bit0…1 タイマー1オン


	setb	rp0			;ページ変更(Bank 1へ)
;Bank 1

	mov	option_reg,#10000000b	;
					;bit7…1 RBプルアップ【無】
					;bit6…割り込みエッジ
					;bit5…0 タイマー0は内蔵クロック使用
					;bit4…タイマー0エッジ
					;bit3…プリスケーラはタイマー0へ割当
					;bit2～0…プリスケールレート【2】

	mov	trisa,#00111111b	;RAの入出力ピン設定
	mov	trisb,#00000000b	;RBの入出力ピン設定

	mov	osccon,#01100010b	;内蔵オシレーター周波数を4MHzに設定

	mov	ansel,# 0011111b	;RAのA/Dデジタルピン設定

	mov	adcon1,#00000000b	;

	clrb	rp0			;ページ変更(Bank 0へ戻す)


;---------------------------------------;
;LCD初期設定

	setb	rb.0			;★LCDの電源ON

	clr	mFREE_A			;
;8MHzの場合
;	mov	mFREE_B,#31		;M1632-0Aでダメだった
;	mov	mFREE_B,#32		;M1632-0Aで不安定だった
;	mov	mFREE_B,#33		;M1632-0AでOKだがSC2004Cではダメだった
;	mov	mFREE_B,#75		;これでもSC2004Cではダメ
;	mov	mFREE_B,#76		;これでやっとSC2004CでOK!

;	mov	mFREE_B,#128		;(76の1.5～2倍で128にしておく)
	mov	mFREE_B,#64		;(4MHzなので128x0.5)

rWAIT00	djnz	mFREE_A,rWAIT00		;LCD受付OKになる頃まで待つ
	djnz	mFREE_B,rWAIT00		;(8MHzの場合で計算すると0.05秒くらい)

	mov	rb,#00100011b		;◆4ビットモード､+E+PW
	clrb	LCD_E			;これで4ビットモードになる
;↓4
	mov	mLCD_44,#00101000b	;(6)ファンクションセット設定
	call	sLCD_E_			;N=1(1/16)にすること

	mov	mLCD_44,#00001100b	;(4)表示オン/オフコントロール
	call	sLCD_E_			;


;---------------
;LCD自作キャラクター登録
	mov	mLCD_44,#01000000b	;アドレスセット №0-0
	call	sLCD_E_			;
;【○】LED_OFF風
	mov	mLCD_44,#00000000b	;0-0ドットデーター
	call	sLCD_RE			;
	mov	mLCD_44,#00000000b	;0-1ドットデーター
	call	sLCD_RE			;
	mov	mLCD_44,#00001110b	;0-2ドットデーター
	call	sLCD_RE			;
	mov	mLCD_44,#00010001b	;0-3ドットデーター
	call	sLCD_RE			;
	mov	mLCD_44,#00010001b	;0-4ドットデーター
	call	sLCD_RE			;
	mov	mLCD_44,#00001110b	;0-5ドットデーター
	call	sLCD_RE			;
	mov	mLCD_44,#00000000b	;0-6ドットデーター
	call	sLCD_RE			;
	mov	mLCD_44,#00000000b	;0-7ドットデーター
	call	sLCD_RE			;
;【●】LED_ON風
	mov	mLCD_44,#00000000b	;0-0ドットデーター
	call	sLCD_RE			;
	mov	mLCD_44,#00000000b	;0-1ドットデーター
	call	sLCD_RE			;
	mov	mLCD_44,#00001110b	;0-2ドットデーター
	call	sLCD_RE			;
	mov	mLCD_44,#00011111b	;0-3ドットデーター
	call	sLCD_RE			;
	mov	mLCD_44,#00011111b	;0-4ドットデーター
	call	sLCD_RE			;
	mov	mLCD_44,#00001110b	;0-5ドットデーター
	call	sLCD_RE			;
	mov	mLCD_44,#00000000b	;0-6ドットデーター
	call	sLCD_RE			;
	mov	mLCD_44,#00000000b	;0-7ドットデーター
	call	sLCD_RE			;


;[LCD文字位置] (16進)
;	   |01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|
;	---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
;	01 |80|81|82|83|84|85|86|87|88|89|8A|8B|8C|8D|8E|8F|
;	---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
;	02 |C0|C1|C2|C3|C4|C5|C6|C7|C8|C9|CA|CB|CC|CD|CE|CF|
;	---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

;---------------------------------------;

	clr	tmr1l			;
	clr	tmr1h			;
	clrb	tmr1if			;


;↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ;
;↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ;
;***[ メインループ ]********************;
;繰り返し
rREPEAT

	setb	ra.7			;LED点灯

	clrb	ra.6			;FET_OFF

	clr	mSEN_Ao			;
	clr	mSEN_Bo			;
	clr	mSEN_Co			;
	clr	mSEN_Do			;


;A/D【感度ボリューム】チェック

	mov	adcon0,#11000001b	;A/D設定(Channel 0 (RA0/AN0))

	clr	tmr0			;20μs必要
	clrb	tmr0if			;
	jnb	tmr0if,$		;約0.0005秒待(500μs)

	setb	go_done			;A/D変換開始
	jb	go_done,$		;A/D変換終了(bit0)まで待つ

	mov	mVOLUME,adresh		;
	mov	mBINA08,adresh		;

	call	sBCDCAL			;BCD計算へ


	mov	mVOL_3,mBCD_3		;
	mov	mVOL_2,mBCD_2		;
	mov	mVOL_1,mBCD_1		;

	add	mVOL_3,#48		;
	add	mVOL_2,#48		;
	add	mVOL_1,#48		;


;A/D【センサーA】チェック

	mov	adcon0,#11001001b	;A/D設定(Channel 1 (RA1/AN1))

	clr	tmr0			;20μs必要
	clrb	tmr0if			;
	jnb	tmr0if,$		;約0.0005秒待(500μs)

	setb	go_done			;A/D変換開始
	jb	go_done,$		;A/D変換終了(bit0)まで待つ

	mov	mSEN_AA,adresh		;
	mov	mBINA08,adresh		;

	call	sBCDCAL			;BCD計算へ

	mov	mSEN_A3,mBCD_3		;
	mov	mSEN_A2,mBCD_2		;
	mov	mSEN_A1,mBCD_1		;

	add	mSEN_A3,#48		;
	add	mSEN_A2,#48		;
	add	mSEN_A1,#48		;


;A/D【センサーB】チェック

	mov	adcon0,#11010001b	;A/D設定(Channel 2 (RA2/AN2))

	clr	tmr0			;20μs必要
	clrb	tmr0if			;
	jnb	tmr0if,$		;約0.0005秒待(500μs)

	setb	go_done			;A/D変換開始
	jb	go_done,$		;A/D変換終了(bit0)まで待つ

	mov	mSEN_BB,adresh		;
	mov	mBINA08,adresh		;

	call	sBCDCAL			;BCD計算へ

	mov	mSEN_B3,mBCD_3		;
	mov	mSEN_B2,mBCD_2		;
	mov	mSEN_B1,mBCD_1		;

	add	mSEN_B3,#48		;
	add	mSEN_B2,#48		;
	add	mSEN_B1,#48		;


;A/D【センサーC】チェック

	mov	adcon0,#11011001b	;A/D設定(Channel 3 (RA3/AN3))

	clr	tmr0			;20μs必要
	clrb	tmr0if			;
	jnb	tmr0if,$		;約0.0005秒待(500μs)

	setb	go_done			;A/D変換開始
	jb	go_done,$		;A/D変換終了(bit0)まで待つ

	mov	mSEN_CC,adresh		;
	mov	mBINA08,adresh		;

	call	sBCDCAL			;BCD計算へ

	mov	mSEN_C3,mBCD_3		;
	mov	mSEN_C2,mBCD_2		;
	mov	mSEN_C1,mBCD_1		;

	add	mSEN_C3,#48		;
	add	mSEN_C2,#48		;
	add	mSEN_C1,#48		;


;A/D【センサーD】チェック

	mov	adcon0,#11100001b	;A/D設定(Channel 4 (RA4/AN4))

	clr	tmr0			;20μs必要
	clrb	tmr0if			;
	jnb	tmr0if,$		;約0.0005秒待(500μs)

	setb	go_done			;A/D変換開始
	jb	go_done,$		;A/D変換終了(bit0)まで待つ

	mov	mSEN_DD,adresh		;
	mov	mBINA08,adresh		;

	call	sBCDCAL			;BCD計算へ

	mov	mSEN_D3,mBCD_3		;
	mov	mSEN_D2,mBCD_2		;
	mov	mSEN_D1,mBCD_1		;

	add	mSEN_D3,#48		;
	add	mSEN_D2,#48		;
	add	mSEN_D1,#48		;


;---------------------------------------;

	clrb	ra.7			;LED消灯

;---------------------------------------;
;反応判定

	add	mSEN_AA,mVOLUME		;
	snc				;ｽｷｯﾌﾟﾉｯﾄｷｬﾘｰ
	setb	mSEN_Ao.0		;1

	add	mSEN_BB,mVOLUME		;
	snc				;ｽｷｯﾌﾟﾉｯﾄｷｬﾘｰ
	setb	mSEN_Bo.0		;1

	add	mSEN_CC,mVOLUME		;
	snc				;ｽｷｯﾌﾟﾉｯﾄｷｬﾘｰ
	setb	mSEN_Co.0		;1

	add	mSEN_DD,mVOLUME		;
	snc				;ｽｷｯﾌﾟﾉｯﾄｷｬﾘｰ
	setb	mSEN_Do.0		;1


	jb	mSEN_Ao,rBEEP		;
	jb	mSEN_Bo,rBEEP		;
	jb	mSEN_Co,rBEEP		;
	jb	mSEN_Do,rBEEP		;

	jmp	rLCD			;

rBEEP
	setb	ra.6			;FET_ON


rLCD
;---------------------------------------;
;キャラクターコード送信(表示)

	mov	mLCD_44,#80h		;1行目1桁目
	call	sLCD_E_			;

	mov	mLCD_44,#'A'		;
	call	sLCD_RE			;
	mov	mLCD_44,mSEN_A3		;
	call	sLCD_RE			;
	mov	mLCD_44,mSEN_A2		;
	call	sLCD_RE			;
	mov	mLCD_44,mSEN_A1		;
	call	sLCD_RE			;
	mov	mLCD_44,mSEN_Ao		;キャラクター登録№
	call	sLCD_RE			;
	mov	mLCD_44,#' '		;
	call	sLCD_RE			;
	mov	mLCD_44,#'B'		;
	call	sLCD_RE			;
	mov	mLCD_44,mSEN_B3		;
	call	sLCD_RE			;
	mov	mLCD_44,mSEN_B2		;
	call	sLCD_RE			;
	mov	mLCD_44,mSEN_B1		;
	call	sLCD_RE			;
	mov	mLCD_44,mSEN_Bo		;キャラクター登録№
	call	sLCD_RE			;
	mov	mLCD_44,#' '		;
	call	sLCD_RE			;
	mov	mLCD_44,#' '		;
	call	sLCD_RE			;
	mov	mLCD_44,#'V'		;
	call	sLCD_RE			;
	mov	mLCD_44,#'O'		;
	call	sLCD_RE			;
	mov	mLCD_44,#'L'		;
	call	sLCD_RE			;

;==============================================;

	mov	mLCD_44,#0C0h		;2行目1桁目
	call	sLCD_E_			;

	mov	mLCD_44,#'C'		;
	call	sLCD_RE			;
	mov	mLCD_44,mSEN_C3		;
	call	sLCD_RE			;
	mov	mLCD_44,mSEN_C2		;
	call	sLCD_RE			;
	mov	mLCD_44,mSEN_C1		;
	call	sLCD_RE			;
	mov	mLCD_44,mSEN_Co		;キャラクター登録№
	call	sLCD_RE			;
	mov	mLCD_44,#' '		;
	call	sLCD_RE			;
	mov	mLCD_44,#'D'		;
	call	sLCD_RE			;
	mov	mLCD_44,mSEN_D3		;
	call	sLCD_RE			;
	mov	mLCD_44,mSEN_D2		;
	call	sLCD_RE			;
	mov	mLCD_44,mSEN_D1		;
	call	sLCD_RE			;
	mov	mLCD_44,mSEN_Do		;キャラクター登録№
	call	sLCD_RE			;
	mov	mLCD_44,#' '		;
	call	sLCD_RE			;
	mov	mLCD_44,#' '		;
	call	sLCD_RE			;
	mov	mLCD_44,mVOL_3		;
	call	sLCD_RE			;
	mov	mLCD_44,mVOL_2		;
	call	sLCD_RE			;
	mov	mLCD_44,mVOL_1		;
	call	sLCD_RE			;


;---------------------------------------;
;LCD表示後のWAIT

	jnb	tmr1if,$		;約0.25秒待つ
	clrb	tmr1if			;

	jmp	rREPEAT			;


;***[ メインループここまで ]************;
;↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ ;
;↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ ;





;sssssss LCD E 送信関係 ssssssssssssssss;
sLCD_E_
	call	sBUSY7			;LCD受付OKになるまで待つ

	setb	LCD_E			;

	and	rb,#00001111b		;RB4～7クリア

	snb	mLCD_44.7		;
	setb	rb.7			;
	snb	mLCD_44.6		;
	setb	rb.6			;
	snb	mLCD_44.5		;
	setb	rb.5			;
	snb	mLCD_44.4		;
	setb	rb.4			;

	clrb	LCD_E			;


	setb	LCD_E			;

	and	rb,#00001111b		;RB4～7クリア

	snb	mLCD_44.3		;
	setb	rb.7			;
	snb	mLCD_44.2		;
	setb	rb.6			;
	snb	mLCD_44.1		;
	setb	rb.5			;
	snb	mLCD_44.0		;
	setb	rb.4			;

	clrb	LCD_E			;

	ret				;リターン(サブルーチン終わり)

;sssssss LCDキャラクター表示 sssssssssss;

sLCD_RE
	call	sBUSY7			;LCD受付OKになるまで待つ

	setb	LCD_RS			;
	setb	LCD_E			;

	and	rb,#00001111b		;RB4～7クリア

	snb	mLCD_44.7		;
	setb	rb.7			;
	snb	mLCD_44.6		;
	setb	rb.6			;
	snb	mLCD_44.5		;
	setb	rb.5			;
	snb	mLCD_44.4		;
	setb	rb.4			;

	clrb	LCD_E			;
	clrb	LCD_RS			;


	setb	LCD_RS			;
	setb	LCD_E			;

	and	rb,#00001111b		;RB4～7クリア

	snb	mLCD_44.3		;
	setb	rb.7			;
	snb	mLCD_44.2		;
	setb	rb.6			;
	snb	mLCD_44.1		;
	setb	rb.5			;
	snb	mLCD_44.0		;
	setb	rb.4			;

	clrb	LCD_E			;
	clrb	LCD_RS			;

	ret				;リターン(サブルーチン終わり)

;sssssss LCDビジーチェック sssssssssssss;

sBUSY7
	setb	rp0			;ページ変更(Bank 1へ)
;Bank 1
	setb	trisb.7			;RB7を入力に変更
	clrb	rp0			;ページ変更(Bank 0へ戻す)

	setb	LCD_RW			;
	setb	LCD_E			;
	jb	rb.7,$			;ビジー信号が消えるまでここで待つ
	clrb	LCD_E			;
	clrb	LCD_RW			;

	setb	rp0			;ページ変更(Bank 1へ)
;Bank 1
	clrb	trisb.7			;RB7を出力に変更
	clrb	rp0			;ページ変更(Bank 0へ戻す)

	ret				;リターン(サブルーチン終わり)


;sssssss BCD割り算(8bit÷10) ssssssssss;

sBCDCAL
	call	sBCDZAN			;1桁目
	mov	mBCD_1,mBINAXX		;余りを入れる

	mov	mBINA08,mSHOW08		;商を入れる
	call	sBCDZAN			;2桁目
	mov	mBCD_2,mBINAXX		;余りを入れる
	mov	mBCD_3,mSHOW08		;商を入れる

;結果は1桁目→mBCD_1､2桁目→mBCD_2､3桁目→mBCD_3

	ret				;リターン(サブルーチン終わり)


;サブルーチンのサブルーチン
;---桁移動比較---
sBCDZAN
	mov	mFREE_A,#8		;ループ数設定
	clr	mBINAXX			;
rBCD_0	rl	mBINA08			;
	rl	mBINAXX			;

	jc	rBCD_2			;比較8ビット超判定
	cjae	mBINAXX,#10,rBCD_1	;勝ち負け判定
	clrb	c			;キャリー0
	jmp	rWARI_4			;
rBCD_1	sub	mBINAXX,#10		;引き算(余りはここに残る)
	jmp	rBCD_3			;
rBCD_2	clr	mFREE_B			;0にする
	sub	mFREE_B,#10		;
	add	mBINAXX,mFREE_B		;
rBCD_3	setb	c			;キャリー1

;---計算結果入れ---
rWARI_4	rl	mSHOW08			;計算結果を入れる
	djnz	mFREE_A,rBCD_0		;ループ継続判定
	ret





;-------PIC初期状態確認-----------------;(△:変更必要)
;Bank 0
;	tmr0		xxxxxxxx	;　タイマー0の状態
;	status		00011xxx	;　Bankセレクト設定､各旗の状態
;	porta		xxx00000	;△RAピン出力状態(xは不定)
;	portb		00xxxxxx	;△RBピン出力状態(xは不定)
;	intcon		0000000x	;　割り込み他､設定
;	pir1		-0000000	;　旗状態(A/D､タイマー､
;	pir2		00-0----	;　EEメモリー､他)
;	tmr1l		xxxxxxxx	;　タイマー1下位8bitの状態
;	tmr1h		xxxxxxxx	;　タイマー1上位8bitの状態
;	t1con		--000000	;　タイマー1コントロール関係設定
;	tmr2		00000000	;　タイマー2の状態
;	t2con		-0000000	;　タイマー2コントロール関係設定
;	sspbuf		xxxxxxxx	;　装置内通信SPI通信機能
;	sspcon		00000000	;　
;	ccpr1l		xxxxxxxx	;　
;	ccpr1h		xxxxxxxx	;　
;	ccp1con		--000000	;　キャプチャ/コンペア/PWM
;	adresh		xxxxxxxx	;　A/D変換値9､10bit？
;	adcon0		000000-0	;　A/Dコントロール関係設定
;Bank 1
;	option_reg	11111111	;　プルアップ､プリスケーラー比率他､設定
;	trisa		11111111	;△RAピンI/O制御設定(1は入力)
;	trisb		11111111	;△RBピンI/O制御設定(1は入力)
;	pie1		-0--0000	;　A/D､CCP､タイマー､EEメモリーの
;	pie2		---0----	;　割り込み使用するしない設定
;	pcon		------qq	;　パワーオン､低電圧リセットの？
;	osccon		-000-0--	;　内部RCオシレーター周波数設定
;	osctune		--000000	;　内蔵RCオシレーター微調整
;	pr2		11111111	;　
;	sspadd		00000000	;　
;	sspstat		00000000	;　
;	txsta		0000-010	;　
;	spbrg		00000000	;　
;	ansel		-1111111	;△アナログorデジタルI/O設定
;	cmcon		00000111	;　
;	cvrcon		000-0000	;　
;	adresl		xxxxxxxx	;　A/D変換値0～8bit
;	adcon1		00--0000	;　A/Dピン設定
;Bank 2
;	wdtcon		---01000	;　ウォッチドックタイマー分周
;	eedata		xxxxxxxx	;　EEメモリーの状態 Lo？
;	eeadr		xxxxxxxx	;　EEメモリーのアドレス位置 Lo
;	eedath		--xxxxxx	;　EEメモリーの状態 Hi？
;	eeadrh		-----xxx	;　EEメモリーのアドレス位置  Hi
;Bank 3
;	eecon1		x--xx000	;　EEメモリー関係設定
;	eecon2		--------	;　EEメモリー関係設定？

