;距離記録計テスト			bitメカ工房		2010-08-25(水)
;
;検討事項メモ
;・距離カウンター桁値が異常値になった場合のエラー回復をどうやるか？
;　→ゼロだと毎回切り捨てとなるので｢5｣にしてはどうか！？
;　→エラーが発覚するまでは何もしないで様子をみることにする｡
;
;[プログラム概要]
;・LCDを4ビットモードで表示させる｡
;・走行距離表示させる｡数値はEEPROMに記憶する｡
;※距離データーは1桁ごとに管理し､LCD表示用の｢48｣を加算した値で扱う｡
;×A/Dにより､ガソリン残量を表示する｡		【後日】
;×A/Dにより､油温を表示する｡			【後日】
;・割込は使用しない｡(LCD誤表示防止)
;
;---------------------------------------;
;　ガソリン残量[L]　油温[℃]　総走行距離[km]
;	  1234567890123456
;	┌────────┐
;	│10.5 100 25000.0│
;	│000.0 123.4 99.9│
;	└────────┘
;　距離 A[km]　距離 B[km]　距離 C[km]
;---------------------------------------;
;
;(参考)
;・タイマー1のプリスケーラを最長【 8 】にした場合のオーバーフロータイム
;　4Hz動作として､1/4000000x4x256x256x8=0.524288秒 (8はプリスケーラ値)
;　それを利用してLCDの再表示タイミングを計る｡
;
;・100m専用PICからの100m信号間隔は､最短でも2秒以上ある｡(180km/hの速度として)
;
;・EEPROMへの書込は1桁10ms程度かかるので､たとえば29999.9kmから30000.0kmになる
;　場合､6桁を書き換えるので60msかかる｡最大17桁連続書込の場合､0.17秒かかると
;　考えておく｡
;
;[PIC選定仕様他]
; ･PIC16F88-I/P使用｡(秋月電子通商で200円/個)
; ･オシレーターは内蔵の4MHzを使用する｡
;　(1命令は1/4000000*4=0.000001秒)
; ･MCLRは外配線を簡略するため内部接続モードとする｡
;
;			     ┌─┰─┐
;	(A/D)		 RA2 ┥	     ┝ RA1	100m通信 総
;	(A/D)		 RA3 ┥	     ┝ RA0	100m通信 A
;	リセットA	 RA4 ┥	     ┝ RA7	100m通信 B
;	リセットB	 RA5 ┥PIC   ┝ RA6	100m通信 C
;	GND		 Vss ┥ 16F88┝ Vdd	5.0V
;	リセットC	 RB0 ┥	     ┝ RB7	LCD_DB7
;	LCD_E		 RB1 ┥	     ┝ RB6	LCD_DB6
;	LCD_R/W		 RB2 ┥	     ┝ RB5	LCD_DB5
;	LCD_RS		 RB3 ┥	     ┝ RB4	LCD_DB4
;			     └───┘
;
;[プログラムの流れ概要]
;
;　電源ON
;	↓
;　EEPROMを読み出して通常メモリーへコピーする x4個
;	↓
;	↓←←←←←←←←←←←←←←←┬←←←┐
;	↓				↑	↑
;　総100mチップからの信号ONか？→YES	↑	↑
;	↓NO				↑	↑
;　A100mチップからの信号ONか？→YES	↑	↑
;	↓NO				↑	↑
;　B100mチップからの信号ONか？→YES	↑	↑
;	↓NO				↑	↑
;　C100mチップからの信号ONか？→YES	↑	↑
;	↓NO				↑	↑
;　リセット信号ONか？ x4個 →YES	↑	↑
;	↓NO				↑	↑
;　0.5秒間隔タイマーONか？→NO→→→→→┘	↑
;	↓YES					↑
;	↓					↑
;　A/D変換					↑
;	↓					│
;　LCD表示→→→→→→→→→→→→→→→→→→→┘
;
;・リセットボタンが押しっぱなし状態になるとEEPROM寿命が早まるかも?!
;　　→離す監視をする｡
;
;[凡例] (自分で分かりやすいように目印を付ける)
; 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_off		;MCLR端子(リセット)→設定しない
	fuses	_pwrte_on		;電源投入72ms間リセット→有効
	fuses	_wdt_off		;ウォッチドックタイマー→無効
	fuses	_intrc_io		;オシレーター設定→内蔵RC

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

;　★★★↑cvasm16+PICkit2では手動設定修正必要あり！★★★

	id	'0102'			;Ver1.02

LCD_E		=	rb.1		;LCD表示信号用
LCD_RW		=	rb.2		;LCD表示信号用
LCD_RS		=	rb.3		;LCD表示信号用

;-------プログラムメモリー割当----------;(メモリーは20hから)

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

mTOTAL0		=	23h		;100m
mTOTAL1		=	24h		;1km
mTOTAL2		=	25h		;10km
mTOTAL3		=	26h		;100km
mTOTAL4		=	27h		;1,000km
mTOTAL5		=	28h		;10,000km

mTRIP_A0	=	29h		;100m
mTRIP_A1	=	2Ah		;1km
mTRIP_A2	=	2Bh		;10km
mTRIP_A3	=	2Ch		;100km

mTRIP_B0	=	2Dh		;100m
mTRIP_B1	=	2Eh		;1km
mTRIP_B2	=	2Fh		;10km
mTRIP_B3	=	30h		;100km

mTRIP_C0	=	31h		;100m
mTRIP_C1	=	32h		;1km
mTRIP_C2	=	33h		;10km

mAD_GAS1	=	34h		;ガソリン残量
mAD_GAS2	=	35h		;ガソリン残量

mGAS_1		=	36h		;ガソリン残量0.5L単位
mGAS_2		=	37h		;ガソリン残量1L単位
mGAS_3		=	38h		;ガソリン残量10L単位
mOIL_1		=	39h		;油温1℃の位
mOIL_2		=	3Ah		;油温10℃の位
mOIL_3		=	3Bh		;油温100℃の位

mRESET		=	3Ch		;リセットボタン押しっぱなし判定用

;---EEPROM値強制設定--------------------;(PIC書込時のみ)

;加算無	 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
;+48	48,49,50,51,52,53,54,55,56,57

	eeorg	0			;
;	eedata	1,5,1,5,7,2		;27515.1km(+48無)
	eedata	49,53,49,53,55,50	;★27515.1km(+48 LCD)

	eeorg	10			;
	eedata	51,48,55,50		;★270.3km(+48 LCD)

	eeorg	20			;
	eedata	57,57,57,57		;★999.9km(+48 LCD)


;=======プログラム初期設定==============;
;Bank 0
	clr	ra			;
	clr	rb			;
	mov	intcon,#00000000b	;割り込み設定
	mov	t1con,#01110001b	;◆
					;bit7…設定項目無し
					;bit6…システムクロック
					;bit5～4…プリスケールレート【8】
					;bit3…0 タイマー1専用オシレーター
					;bit2…0 外部クロック同期
					;bit1…0 タイマー1クロックソース選択
					;bit0…1 タイマー1オン

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

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

	mov	trisa,#11111111b	;RAの入出力ピン設定
	mov	trisb,#00000001b	;RBの入出力ピン設定
	mov	osccon,#01100010b	;内蔵オシレーター周波数を4MHzに設定
;	mov	osccon,#01010010b	;内蔵オシレーター周波数を2MHzに設定
	mov	ansel,# 0001100b	;RA2,RA3をアナログピンに設定
	mov	adcon1,#10000000b	;A/D設定 10bit右詰読み出し

	setb	rp1			;ページ変更(Bank 3へ)
	mov	eecon1,#00000000b	;EEPROM設定

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

;---------------------------------------;
;LCD初期設定
	clr	mFREE_A			;
	mov	mFREE_B,#64		;8MHzﾃｽﾄ#128から算出(#128/8MHzx4MHz)
rWAIT00
	djnz	mFREE_A,$		;LCD受付OKになる頃まで待つ
	djnz	mFREE_B,rWAIT00		;(8MHzの場合で計算すると0.05秒くらい)

	mov	rb,#00100010b		;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_			;


;---------------------------------------;
;電源ON時のEEPROM読み出し距離表示
;EEPROMを読み出して通常メモリーへコピーする｡
;走行距離Cについてはゼロリセットする｡

;総走行距離
;--------------
;100m
	setb	rp1			;ページ変更(Bank 2へ)
;Bank 2
	mov	eeadr,#0		;アドレスセット
	call	sEE_LOAD		;
;Bank 0
	mov	mTOTAL0,w		;
;--------------
;1km
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#1		;アドレスセット
	call	sEE_LOAD		;
	mov	mTOTAL1,w		;
;--------------
;10km
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#2		;アドレスセット
	call	sEE_LOAD		;
	mov	mTOTAL2,w		;
;--------------
;100km
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#3		;アドレスセット
	call	sEE_LOAD		;
	mov	mTOTAL3,w		;
;--------------
;1,000km
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#4		;アドレスセット
	call	sEE_LOAD		;
	mov	mTOTAL4,w		;
;--------------
;10,000km
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#5		;アドレスセット
	call	sEE_LOAD		;
	mov	mTOTAL5,w		;
;---------------------------------------;

;走行距離A
;--------------
;100m
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#10		;アドレスセット
	call	sEE_LOAD		;
	mov	mTRIP_A0,w		;
;--------------
;1km
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#11		;アドレスセット
	call	sEE_LOAD		;
	mov	mTRIP_A1,w		;
;--------------
;10km
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#12		;アドレスセット
	call	sEE_LOAD		;
	mov	mTRIP_A2,w		;
;--------------
;100km
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#13		;アドレスセット
	call	sEE_LOAD		;
	mov	mTRIP_A3,w		;

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

;走行距離B
;--------------
;100m
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#20		;アドレスセット
	call	sEE_LOAD		;
	mov	mTRIP_B0,w		;
;--------------
;1km
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#21		;アドレスセット
	call	sEE_LOAD		;
	mov	mTRIP_B1,w		;
;--------------
;10km
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#22		;アドレスセット
	call	sEE_LOAD		;
	mov	mTRIP_B2,w		;
;--------------
;100km
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#23		;アドレスセット
	call	sEE_LOAD		;
	mov	mTRIP_B3,w		;
;---------------------------------------;

;走行距離C
;--------------
;100m
	mov	mTRIP_C0,#48		;
;--------------
;1km
	mov	mTRIP_C1,#48		;
;--------------
;10km
	mov	mTRIP_C2,#48		;
;---------------------------------------;

	clr	mAD_GAS1		;
	clr	mAD_GAS2		;

	mov	mGAS_3,#'-'		;
	mov	mGAS_2,#'-'		;
	mov	mGAS_1,#'-'		;
	mov	mOIL_3,#'-'		;仮
	mov	mOIL_2,#'-'		;仮
	mov	mOIL_1,#'-'		;仮

	clr	mRESET			;

	clr	tmr1l			;タイマー1 下位8bit
	clr	tmr1h			;タイマー1 上位8bit

	jnb	tmr1if,$		;100mPIC準備待ち
	clrb	tmr1if			;約0.5秒


;↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ;
;***[ メインループ ]********************;

rREPEAT

;100mPIC信号チェック
rT_CHK
	jb	ra.1,rT_COUNT		;総距離100m信号チェック
rA_CHK
	jb	ra.0,rA_COUNT		;Aトリップ100m信号チェック
rB_CHK
	jb	ra.7,rB_COUNT		;Bトリップ100m信号チェック
rC_CHK
	jb	ra.6,rC_COUNT		;Cトリップ100m信号チェック

;リセット信号チェック
rAR_CHK
	jnb	ra.4,rA_RES		;Aリセットボタンチェック
	clrb	mRESET.0		;押しっぱなし監視用
rBR_CHK
	jnb	ra.5,rB_RES		;Bリセットボタンチェック
	clrb	mRESET.1		;押しっぱなし監視用
rCR_CHK
	jnb	rb.0,rC_RES		;Cリセットボタンチェック

;LCD表示更新
rTMR_CHK
	jb	tmr1if,rLCD_GO		;約0.5秒かチェック


	jmp	rREPEAT			;


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



;---------------------------------------
;*** 総距離カウントアップ ***
;---------------------------------------
rT_COUNT
	clrb	ra.1			;100mPIC通信切替
	setb	rp0			;ページ変更(Bank 1へ)
	clrb	trisa.1			;出力に切替
	clrb	rp0			;ページ変更(Bank 0へ戻す)

;100mの位
	cje	mTOTAL0,#57,rTO_Z	;現在｢9｣か？(9+48=57)
	inc	mTOTAL0			;+1
	jmp	rEE_00			;
rTO_Z
	mov	mTOTAL0,#48		;｢0｣に戻す(0+48=48)

;　値をEEPROMに書き込む｡
rEE_00
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#0		;アドレスセット
	clrb	rp1			;ページ変更(Bank 0へ)
	mov	w,mTOTAL0		;
	call	mEE_SAVE		;

	cjne	mTOTAL0,#48,rT_END	;現在｢0｣か？(0+48=48)
;--------------
;1kmの位
	cje	mTOTAL1,#57,rT1_Z	;現在｢9｣か？(9+48=57)
	inc	mTOTAL1			;+1
	jmp	rEE_01			;
rT1_Z
	mov	mTOTAL1,#48		;｢0｣に戻す(0+48=48)

;　値をEEPROMに書き込む｡
rEE_01
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#1		;アドレスセット
	clrb	rp1			;ページ変更(Bank 0へ)
	mov	w,mTOTAL1		;
	call	mEE_SAVE		;

	cjne	mTOTAL1,#48,rT_END	;現在｢0｣か？(0+48=48)
;--------------
;10kmの位
	cje	mTOTAL2,#57,rT2_Z	;現在｢9｣か？(9+48=57)
	inc	mTOTAL2			;+1
	jmp	rEE_02			;
rT2_Z
	mov	mTOTAL2,#48		;｢0｣に戻す(0+48=48)

;　値をEEPROMに書き込む｡
rEE_02
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#2		;アドレスセット
	clrb	rp1			;ページ変更(Bank 0へ)
	mov	w,mTOTAL2		;
	call	mEE_SAVE		;

	cjne	mTOTAL2,#48,rT_END	;現在｢0｣か？(0+48=48)
;--------------
;100kmの位
	cje	mTOTAL3,#57,rT3_Z	;現在｢9｣か？(9+48=57)
	inc	mTOTAL3			;+1
	jmp	rEE_03			;
rT3_Z
	mov	mTOTAL3,#48		;｢0｣に戻す(0+48=48)

;　値をEEPROMに書き込む｡
rEE_03
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#3		;アドレスセット
	clrb	rp1			;ページ変更(Bank 0へ)
	mov	w,mTOTAL3		;
	call	mEE_SAVE		;

	cjne	mTOTAL3,#48,rT_END	;現在｢0｣か？(0+48=48)
;--------------
;1,000kmの位
	cje	mTOTAL4,#57,rT4_Z	;現在｢9｣か？(9+48=57)
	inc	mTOTAL4			;+1
	jmp	rEE_04			;
rT4_Z
	mov	mTOTAL4,#48		;｢0｣に戻す(0+48=48)

;　値をEEPROMに書き込む｡
rEE_04
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#4		;アドレスセット
	clrb	rp1			;ページ変更(Bank 0へ)
	mov	w,mTOTAL4		;
	call	mEE_SAVE		;

	cjne	mTOTAL4,#48,rT_END	;現在｢0｣か？(0+48=48)
;--------------
;10,000kmの位
	cje	mTOTAL5,#57,rT5_Z	;現在｢9｣か？(9+48=57)
	inc	mTOTAL5			;+1
	jmp	rEE_05			;
rT5_Z
	mov	mTOTAL5,#48		;｢0｣に戻す(0+48=48)

;　値をEEPROMに書き込む｡
rEE_05
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#5		;アドレスセット
	clrb	rp1			;ページ変更(Bank 0へ)
	mov	w,mTOTAL5		;
	call	mEE_SAVE		;

rT_END
	setb	rp0			;ページ変更(Bank 1へ)
	setb	trisa.1			;入力に切替
	clrb	rp0			;ページ変更(Bank 0へ戻す)

	jmp	rA_CHK			;

;---------------------------------------
;*** A トリップカウントアップ ***
;---------------------------------------
rA_COUNT
	clrb	ra.0			;100mPIC通信切替
	setb	rp0			;ページ変更(Bank 1へ)
	clrb	trisa.0			;出力に切替
	clrb	rp0			;ページ変更(Bank 0へ戻す)

;100mの位
	cje	mTRIP_A0,#57,rTRA0_Z	;現在｢9｣か？(9+48=57)
	inc	mTRIP_A0		;+1
	jmp	rEE_10			;
rTRA0_Z
	mov	mTRIP_A0,#48		;｢0｣に戻す(0+48=48)

;　値をEEPROMに書き込む｡
rEE_10
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#10		;アドレスセット
	clrb	rp1			;ページ変更(Bank 0へ)
	mov	w,mTRIP_A0		;
	call	mEE_SAVE		;

	cjne	mTRIP_A0,#48,rA_END	;現在｢0｣か？(0+48=48)
;--------------
;1kmの位
	cje	mTRIP_A1,#57,rTRA1_Z	;現在｢9｣か？(9+48=57)
	inc	mTRIP_A1		;+1
	jmp	rEE_11			;
rTRA1_Z
	mov	mTRIP_A1,#48		;｢0｣に戻す(0+48=48)

;　値をEEPROMに書き込む｡
rEE_11
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#11		;アドレスセット
	clrb	rp1			;ページ変更(Bank 0へ)
	mov	w,mTRIP_A1		;
	call	mEE_SAVE		;

	cjne	mTRIP_A1,#48,rA_END	;現在｢0｣か？(0+48=48)
;--------------
;10kmの位
	cje	mTRIP_A2,#57,rTRA2_Z	;現在｢9｣か？(9+48=57)
	inc	mTRIP_A2		;+1
	jmp	rEE_12			;
rTRA2_Z
	mov	mTRIP_A2,#48		;｢0｣に戻す(0+48=48)

;　値をEEPROMに書き込む｡
rEE_12
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#12		;アドレスセット
	clrb	rp1			;ページ変更(Bank 0へ)
	mov	w,mTRIP_A2		;
	call	mEE_SAVE		;

	cjne	mTRIP_A2,#48,rA_END	;現在｢0｣か？(0+48=48)
;--------------
;100kmの位
	cje	mTRIP_A3,#57,rTRA3_Z	;現在｢9｣か？(9+48=57)
	inc	mTRIP_A3		;+1
	jmp	rEE_13			;
rTRA3_Z
	mov	mTRIP_A3,#48		;｢0｣に戻す(0+48=48)

;　値をEEPROMに書き込む｡
rEE_13
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#13		;アドレスセット
	clrb	rp1			;ページ変更(Bank 0へ)
	mov	w,mTRIP_A3		;
	call	mEE_SAVE		;

rA_END
	setb	rp0			;ページ変更(Bank 1へ)
	setb	trisa.0			;入力に切替
	clrb	rp0			;ページ変更(Bank 0へ戻す)

	jmp	rB_CHK			;

;---------------------------------------
;*** B トリップカウントアップ ***
;---------------------------------------
rB_COUNT
	clrb	ra.7			;100mPIC通信切替
	setb	rp0			;ページ変更(Bank 1へ)
	clrb	trisa.7			;出力に切替
	clrb	rp0			;ページ変更(Bank 0へ戻す)
;100mの位
	cje	mTRIP_B0,#57,rTRB0_Z	;現在｢9｣か？(9+48=57)
	inc	mTRIP_B0		;+1
	jmp	rEE_20			;
rTRB0_Z
	mov	mTRIP_B0,#48		;｢0｣に戻す(0+48=48)

;　値をEEPROMに書き込む｡
rEE_20
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#20		;アドレスセット
	clrb	rp1			;ページ変更(Bank 0へ)
	mov	w,mTRIP_B0		;
	call	mEE_SAVE		;

	cjne	mTRIP_B0,#48,rB_END	;現在｢0｣か？(0+48=48)
;--------------
;1kmの位
	cje	mTRIP_B1,#57,rTRB1_Z	;現在｢9｣か？(9+48=57)
	inc	mTRIP_B1		;+1
	jmp	rEE_21			;
rTRB1_Z
	mov	mTRIP_B1,#48		;｢0｣に戻す(0+48=48)

;　値をEEPROMに書き込む｡
rEE_21
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#21		;アドレスセット
	clrb	rp1			;ページ変更(Bank 0へ)
	mov	w,mTRIP_B1		;
	call	mEE_SAVE		;

	cjne	mTRIP_B1,#48,rB_END	;現在｢0｣か？(0+48=48)
;--------------
;10kmの位
	cje	mTRIP_B2,#57,rTRB2_Z	;現在｢9｣か？(9+48=57)
	inc	mTRIP_B2		;+1
	jmp	rEE_22			;
rTRB2_Z
	mov	mTRIP_B2,#48		;｢0｣に戻す(0+48=48)

;　値をEEPROMに書き込む｡
rEE_22
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#22		;アドレスセット
	clrb	rp1			;ページ変更(Bank 0へ)
	mov	w,mTRIP_B2		;
	call	mEE_SAVE		;

	cjne	mTRIP_B2,#48,rB_END	;現在｢0｣か？(0+48=48)
;--------------
;100kmの位
	cje	mTRIP_B3,#57,rTRB3_Z	;現在｢9｣か？(9+48=57)
	inc	mTRIP_B3		;+1
	jmp	rEE_23			;
rTRB3_Z
	mov	mTRIP_B3,#48		;｢0｣に戻す(0+48=48)

;　値をEEPROMに書き込む｡
rEE_23
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#23		;アドレスセット
	clrb	rp1			;ページ変更(Bank 0へ)
	mov	w,mTRIP_B3		;
	call	mEE_SAVE		;

rB_END
	setb	rp0			;ページ変更(Bank 1へ)
	setb	trisa.7			;入力に切替
	clrb	rp0			;ページ変更(Bank 0へ戻す)

	jmp	rC_CHK			;

;---------------------------------------
;*** C トリップカウントアップ ***
;---------------------------------------
rC_COUNT
	clrb	ra.6			;100mPIC通信切替
	setb	rp0			;ページ変更(Bank 1へ)
	clrb	trisa.6			;出力に切替
	clrb	rp0			;ページ変更(Bank 0へ戻す)
;100mの位
	cje	mTRIP_C0,#57,rTRC0_Z	;現在｢9｣か？(9+48=57)
	inc	mTRIP_C0		;+1
	jmp	rC_END			;
rTRC0_Z
	mov	mTRIP_C0,#48		;｢0｣に戻す(0+48=48)
;--------------
;1kmの位
	cje	mTRIP_C1,#57,rTRC1_Z	;現在｢9｣か？(9+48=57)
	inc	mTRIP_C1		;+1
	jmp	rC_END			;
rTRC1_Z
	mov	mTRIP_C1,#48		;｢0｣に戻す(0+48=48)
;--------------
;10kmの位
	cje	mTRIP_C2,#57,rTRC2_Z	;現在｢9｣か？(9+48=57)
	inc	mTRIP_C2		;+1
	jmp	rC_END			;
rTRC2_Z
	mov	mTRIP_C2,#48		;｢0｣に戻す(0+48=48)
;--------------

rC_END

	djnz	mFREE_A,$		;WEIT(100mPIC通信として少し待つ)

	setb	rp0			;ページ変更(Bank 1へ)
	setb	trisa.6			;入力に切替
	clrb	rp0			;ページ変更(Bank 0へ戻す)

	jmp	rAR_CHK			;

;---------------------------------------
;*** A リセット ***
;---------------------------------------
rA_RES
;-------
	jb	mRESET.0,rBR_CHK	;押しっぱなし判定

	mov	mTRIP_A0,#48		;｢0｣設定(0+48=48)
;　値をEEPROMに書き込む｡
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#10		;アドレスセット
	clrb	rp1			;ページ変更(Bank 0へ)
	mov	w,mTRIP_A0		;
	call	mEE_SAVE		;
;-------
	mov	mTRIP_A1,#48		;｢0｣設定(0+48=48)
;　値をEEPROMに書き込む｡
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#11		;アドレスセット
	clrb	rp1			;ページ変更(Bank 0へ)
	mov	w,mTRIP_A1		;
	call	mEE_SAVE		;
;-------
	mov	mTRIP_A2,#48		;｢0｣設定(0+48=48)
;　値をEEPROMに書き込む｡
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#12		;アドレスセット
	clrb	rp1			;ページ変更(Bank 0へ)
	mov	w,mTRIP_A2		;
	call	mEE_SAVE		;
;-------
	mov	mTRIP_A3,#48		;｢0｣設定(0+48=48)
;　値をEEPROMに書き込む｡
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#13		;アドレスセット
	clrb	rp1			;ページ変更(Bank 0へ)
	mov	w,mTRIP_A3		;
	call	mEE_SAVE		;

	setb	mRESET.0		;押しっぱなし判定

	jmp	rBR_CHK			;Bリセットチェックへ

;---------------------------------------
;*** B リセット ***
;---------------------------------------
rB_RES
;-------
	jb	mRESET.0,rCR_CHK	;押しっぱなし判定

	mov	mTRIP_B0,#48		;｢0｣設定(0+48=48)
;　値をEEPROMに書き込む｡
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#20		;アドレスセット
	clrb	rp1			;ページ変更(Bank 0へ)
	mov	w,mTRIP_B0		;
	call	mEE_SAVE		;
;-------
	mov	mTRIP_B1,#48		;｢0｣設定(0+48=48)
;　値をEEPROMに書き込む｡
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#21		;アドレスセット
	clrb	rp1			;ページ変更(Bank 0へ)
	mov	w,mTRIP_B1		;
	call	mEE_SAVE		;
;-------
	mov	mTRIP_B2,#48		;｢0｣設定(0+48=48)
;　値をEEPROMに書き込む｡
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#22		;アドレスセット
	clrb	rp1			;ページ変更(Bank 0へ)
	mov	w,mTRIP_B2		;
	call	mEE_SAVE		;
;-------
	mov	mTRIP_B3,#48		;｢0｣設定(0+48=48)
;　値をEEPROMに書き込む｡
	setb	rp1			;ページ変更(Bank 2へ)
	mov	eeadr,#23		;アドレスセット
	clrb	rp1			;ページ変更(Bank 0へ)
	mov	w,mTRIP_B3		;
	call	mEE_SAVE		;

	setb	mRESET.1		;押しっぱなし判定

	jmp	rCR_CHK			;Cリセットチェックへ

;---------------------------------------
;*** C リセット ***
;---------------------------------------
rC_RES
	mov	mTRIP_C0,#48		;｢0｣設定(0+48=48)
	mov	mTRIP_C1,#48		;｢0｣設定(0+48=48)
	mov	mTRIP_C2,#48		;｢0｣設定(0+48=48)

	jmp	rTMR_CHK		;0.5秒間隔時間チェックへ戻る


;---------------------------------------
;*** LCD表示 ***
;---------------------------------------
;(LCD自作キャラクター登録…無し)
;[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|
;　---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
;LCDキャラクターコード送信(表示)
rLCD_GO
	clrb	tmr1if			;タイマー1旗クリア

;---------------------------------------;
;A/D【ガソリン容量】チェック
	setb	go_done			;A/D変換開始
	jb	go_done,$		;A/D変換終了(bit0)まで待つ

	setb	rp0			;ページ変更(Bank 1へ)
;Bank 1
	mov	w,adresl		;10bit分解能の下位8bit
	clrb	rp0			;ページ変更(Bank 0へ戻す)
;Bank 0
	mov	mAD_GAS1,w		;


	cjne	mAD_GAS1,mAD_GAS2,rNO_AD	;安定表示用


	jmp	rGAS_TAB		;ガソリン残量変換テーブルへ
rRETURN

	add	mGAS_3,#48		;
	add	mGAS_2,#48		;
	add	mGAS_1,#48		;


rNO_AD
	mov	mAD_GAS2,mAD_GAS1	;1を2にコピー


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


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

	mov	mLCD_44,mGAS_3		;1
	call	sLCD_RE			;
	mov	mLCD_44,mGAS_2		;2
	call	sLCD_RE			;
	mov	mLCD_44,#'.'		;3
	call	sLCD_RE			;
	mov	mLCD_44,mGAS_1		;4
	call	sLCD_RE			;
	mov	mLCD_44,#' '		;5
	call	sLCD_RE			;
	mov	mLCD_44,mOIL_3		;6
	call	sLCD_RE			;
	mov	mLCD_44,mOIL_2		;7
	call	sLCD_RE			;
	mov	mLCD_44,mOIL_1		;8
	call	sLCD_RE			;
	mov	mLCD_44,#' '		;9
	call	sLCD_RE			;
	mov	mLCD_44,mTOTAL5		;10
	call	sLCD_RE			;
	mov	mLCD_44,mTOTAL4		;11
	call	sLCD_RE			;
	mov	mLCD_44,mTOTAL3		;12
	call	sLCD_RE			;
	mov	mLCD_44,mTOTAL2		;13
	call	sLCD_RE			;
	mov	mLCD_44,mTOTAL1		;14
	call	sLCD_RE			;
	mov	mLCD_44,#'.'		;15
	call	sLCD_RE			;
	mov	mLCD_44,mTOTAL0		;16
	call	sLCD_RE			;

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

	mov	mLCD_44,mTRIP_A3	;1
	call	sLCD_RE			;
	mov	mLCD_44,mTRIP_A2	;2
	call	sLCD_RE			;
	mov	mLCD_44,mTRIP_A1	;3
	call	sLCD_RE			;
	mov	mLCD_44,#'.'		;4
	call	sLCD_RE			;
	mov	mLCD_44,mTRIP_A0	;5
	call	sLCD_RE			;
	mov	mLCD_44,#' '		;6
	call	sLCD_RE			;
	mov	mLCD_44,mTRIP_B3	;7
	call	sLCD_RE			;
	mov	mLCD_44,mTRIP_B2	;8
	call	sLCD_RE			;
	mov	mLCD_44,mTRIP_B1	;9
	call	sLCD_RE			;
	mov	mLCD_44,#'.'		;10
	call	sLCD_RE			;
	mov	mLCD_44,mTRIP_B0	;11
	call	sLCD_RE			;
	mov	mLCD_44,#' '		;12
	call	sLCD_RE			;
	mov	mLCD_44,mTRIP_C2	;13
	call	sLCD_RE			;
	mov	mLCD_44,mTRIP_C1	;14
	call	sLCD_RE			;
	mov	mLCD_44,#'.'		;15
	call	sLCD_RE			;
	mov	mLCD_44,mTRIP_C0	;16
	call	sLCD_RE			;

	jmp	rREPEAT			;

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


rGAS_TAB
;---------------------------------------;
;*** A/D電圧→ガソリン容量変換 ***
;---------------------------------------;

	cjb	mAD_GAS1,#141,rNEXT150	;15.5L
	mov	mGAS_3,#1		;
	mov	mGAS_2,#5		;
	mov	mGAS_1,#5		;
	jmp	rRETURN			;
rNEXT150
	cjb	mAD_GAS1,#137,rNEXT145	;15.0L
	mov	mGAS_3,#1		;
	mov	mGAS_2,#5		;
	mov	mGAS_1,#0		;
	jmp	rRETURN			;
rNEXT145
	cjb	mAD_GAS1,#132,rNEXT140	;14.5L
	mov	mGAS_3,#1		;
	mov	mGAS_2,#4		;
	mov	mGAS_1,#5		;
	jmp	rRETURN			;
rNEXT140
	cjb	mAD_GAS1,#128,rNEXT135	;14.0L
	mov	mGAS_3,#1		;
	mov	mGAS_2,#4		;
	mov	mGAS_1,#0		;
	jmp	rRETURN			;
rNEXT135
	cjb	mAD_GAS1,#124,rNEXT130	;13.5L
	mov	mGAS_3,#1		;
	mov	mGAS_2,#3		;
	mov	mGAS_1,#5		;
	jmp	rRETURN			;
rNEXT130
	cjb	mAD_GAS1,#120,rNEXT125	;13.0L
	mov	mGAS_3,#1		;
	mov	mGAS_2,#3		;
	mov	mGAS_1,#0		;
	jmp	rRETURN			;
rNEXT125
	cjb	mAD_GAS1,#117,rNEXT120	;12.5L
	mov	mGAS_3,#1		;
	mov	mGAS_2,#2		;
	mov	mGAS_1,#5		;
	jmp	rRETURN			;
rNEXT120
	cjb	mAD_GAS1,#113,rNEXT115	;12.0L
	mov	mGAS_3,#1		;
	mov	mGAS_2,#2		;
	mov	mGAS_1,#0		;
	jmp	rRETURN			;
rNEXT115
	cjb	mAD_GAS1,#110,rNEXT110	;11.5L
	mov	mGAS_3,#1		;
	mov	mGAS_2,#1		;
	mov	mGAS_1,#5		;
	jmp	rRETURN			;
rNEXT110
	cjb	mAD_GAS1,#107,rNEXT105	;11.0L
	mov	mGAS_3,#1		;
	mov	mGAS_2,#1		;
	mov	mGAS_1,#05		;
	jmp	rRETURN			;
rNEXT105
	cjb	mAD_GAS1,#103,rNEXT100	;10.5L
	mov	mGAS_3,#1		;
	mov	mGAS_2,#0		;
	mov	mGAS_1,#5		;
	jmp	rRETURN			;
rNEXT100
	cjb	mAD_GAS1,#100,rNEXT095	;10.0L
	mov	mGAS_3,#1		;
	mov	mGAS_2,#0		;
	mov	mGAS_1,#0		;
	jmp	rRETURN			;
rNEXT095
	cjb	mAD_GAS1,#97,rNEXT090	;9.5L
	mov	mGAS_3,#0		;
	mov	mGAS_2,#9		;
	mov	mGAS_1,#5		;
	jmp	rRETURN			;
rNEXT090
	cjb	mAD_GAS1,#94,rNEXT085	;9.0L
	mov	mGAS_3,#0		;
	mov	mGAS_2,#9		;
	mov	mGAS_1,#0		;
	jmp	rRETURN			;
rNEXT085
	cjb	mAD_GAS1,#91,rNEXT080	;8.5L
	mov	mGAS_3,#0		;
	mov	mGAS_2,#8		;
	mov	mGAS_1,#5		;
	jmp	rRETURN			;
rNEXT080
	cjb	mAD_GAS1,#88,rNEXT075	;8.0L
	mov	mGAS_3,#0		;
	mov	mGAS_2,#8		;
	mov	mGAS_1,#0		;
	jmp	rRETURN			;
rNEXT075
	cjb	mAD_GAS1,#85,rNEXT070	;7.5L
	mov	mGAS_3,#0		;
	mov	mGAS_2,#7		;
	mov	mGAS_1,#5		;
	jmp	rRETURN			;
rNEXT070
	cjb	mAD_GAS1,#82,rNEXT065	;7.0L
	mov	mGAS_3,#0		;
	mov	mGAS_2,#7		;
	mov	mGAS_1,#0		;
	jmp	rRETURN			;
rNEXT065
	cjb	mAD_GAS1,#79,rNEXT060	;6.5L
	mov	mGAS_3,#0		;
	mov	mGAS_2,#6		;
	mov	mGAS_1,#5		;
	jmp	rRETURN			;
rNEXT060
	cjb	mAD_GAS1,#77,rNEXT055	;6.0L
	mov	mGAS_3,#0		;
	mov	mGAS_2,#6		;
	mov	mGAS_1,#0		;
	jmp	rRETURN			;
rNEXT055
	cjb	mAD_GAS1,#75,rNEXT050	;5.5L
	mov	mGAS_3,#0		;
	mov	mGAS_2,#5		;
	mov	mGAS_1,#5		;
	jmp	rRETURN			;
rNEXT050
	cjb	mAD_GAS1,#71,rNEXT045	;5.0L
	mov	mGAS_3,#0		;
	mov	mGAS_2,#5		;
	mov	mGAS_1,#0		;
	jmp	rRETURN			;
rNEXT045
	cjb	mAD_GAS1,#68,rNEXT040	;4.5L
	mov	mGAS_3,#0		;
	mov	mGAS_2,#4		;
	mov	mGAS_1,#5		;
	jmp	rRETURN			;
rNEXT040
	cjb	mAD_GAS1,#66,rNEXT035	;4.0L
	mov	mGAS_3,#0		;
	mov	mGAS_2,#4		;
	mov	mGAS_1,#0		;
	jmp	rRETURN			;
rNEXT035
	cjb	mAD_GAS1,#63,rNEXT030	;3.5L
	mov	mGAS_3,#0		;
	mov	mGAS_2,#3		;
	mov	mGAS_1,#5		;
	jmp	rRETURN			;
rNEXT030
	cjb	mAD_GAS1,#60,rNEXT025	;3.0L
	mov	mGAS_3,#0		;
	mov	mGAS_2,#3		;
	mov	mGAS_1,#0		;
	jmp	rRETURN			;
rNEXT025
	cjb	mAD_GAS1,#58,rNEXT020	;2.5L
	mov	mGAS_3,#0		;
	mov	mGAS_2,#2		;
	mov	mGAS_1,#5		;
	jmp	rRETURN			;
rNEXT020
	cjb	mAD_GAS1,#54,rNEXT015	;2.0L
	mov	mGAS_3,#0		;
	mov	mGAS_2,#2		;
	mov	mGAS_1,#0		;
	jmp	rRETURN			;
rNEXT015
	cjb	mAD_GAS1,#50,rNEXT010	;1.5L
	mov	mGAS_3,#0		;
	mov	mGAS_2,#1		;
	mov	mGAS_1,#5		;
	jmp	rRETURN			;
rNEXT010
	cjb	mAD_GAS1,#49,rNEXT005	;1.0L
	mov	mGAS_3,#0		;
	mov	mGAS_2,#1		;
	mov	mGAS_1,#0		;
	jmp	rRETURN			;
rNEXT005
	cjb	mAD_GAS1,#21,rNEXT000	;0.5L
	mov	mGAS_3,#0		;
	mov	mGAS_2,#0		;
	mov	mGAS_1,#5		;
	jmp	rRETURN			;
rNEXT000
	mov	mGAS_3,#0		;
	mov	mGAS_2,#0		;
	mov	mGAS_1,#0		;
	jmp	rRETURN			;





;---------------------------------------
;sss サブルーチン sss
;---------------------------------------
;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 EEPROM読み出し ssssssssssssssss;
sEE_LOAD
	setb	rp0			;ページ変更(Bank 3へ)
;Bank 3
	setb	rd			;Read Control bit
	clrb	rp0			;ページ変更(Bank 2へ)
;Bank 2
	mov	w,eedata		;
	clrb	rp1			;ページ変更(Bank 0へ)
;Bank 0
	ret				;


;sssssss EEPROM書き込み ssssssssssssssss;
mEE_SAVE
	setb	rp1			;ページ変更(Bank 2へ)
;Bank 2
	mov	eedata,w		;
	setb	rp0			;ページ変更(Bank 3へ)
;Bank 3
	clrb	eepgd			;★Program/Data EEPROM Select bit
	setb	wren			;EEPROM Write Enable bit
	mov	eecon2,#55h		;
	mov	eecon2,#0AAh		;
	setb	wr			;Write Control bit
	jb	wr,$			;書き込み終了をここで待つ
	clrb	wren			;EEPROM Write Enable bit
	clrb	rp0			;ページ変更(Bank 2へ)
;Bank 2
	clrb	rp1			;ページ変更(Bank 0へ)
;Bank 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メモリー関係設定？
