;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;		内蔵ＤＡＣによる低周波信号発生プログラム
;       16F1705_AFGEN Ver1.0
;
;		PIC16F1705 内蔵DAC1出力用
;		生成周波数をロータリーエンコーダで可変
;       MAX27018桁7セグLEDモジュールで周波数表示
;		タイマ0割込み使用
;
;		PIC16F1705 32MHZ（8MHZ X'TAL発振子）
;
;		ＪＡ０ＱＯＮ　０７／２０１５
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

		LIST	P=PIC16F1705
		INCLUDE	P16F1705.INC

;
;CONFIGURATION WORD 1(ADDRESS:8007H)
;					設定
;bit13		FCMEN	0	Fail-Safe Clock Monitor
;						1=有効,0=無効
;bit12		IESO	0	内部･外部切替スイッチモード
;						1=有効,0=無効
;bit11		CLKOUTEN 1	クロックアウトイネーブルビット
;						1=無効　RA4I/O使用可
;						0=有効　FoscがCLKPUTピンに出力される
;bit10-9	BOREN	00	ブラウンアウト設定
;						11=有効
;						10=スリープ時以外有効
;			___			00=無効
;bit8		CPD		1	データメモリプロテクション
;			__			1=無効,0=有効
;bit7		CP		1	プログラムメモリプロテクション　
;						1=無効,0=有効
;bit6		MCLRE	0	RA3/MCLRピン選択ビット
;			_____		1=MCLR有効,0=RA3有効(Digital input)
;bit5		PWRTE	0	power_up timer　使います。
;						1=無効,0=有効
;bit4-3		WDTE	00	Watchdog Timer
;						11=有効
;						10=ランニング中に有効、スリープ中は無効
;						01=レジスタによるコントロール
;						00=無効
;bit2-0		FOSC	010	発振器選択ビット
;						111=ECH:外部クロック入力（4-32MHZ)、RA4I/O可
;						110=ECM:外部クロック入力（0.5-4MHZ)、RA4I/O可
;						101=ECL:外部クロック入力（0-0.5MHZ)、RA4I/O可
;						100=INTOSC:内部発振、RA4-RA5I/O可
;						011=EXTRC:外部RC発振、RA4I/O可、RA5不可
;						010=HS：外部発振子、I/O不可
;						001=XT：　〃
;						000=LP：　〃
;
;bit	15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
;data    0  0  0  0  1  0  0  1  1  0  0  0  0  0  1  0
;
;
	__CONFIG _CONFIG1,	B'0000100110000010'
;
;CONFIGURATION WORD 2(ADDRESS:8008H)マニュアル52ページ
;					設定
;bit13		LVP		0	低電圧プログラミング設定
;						1=有効
;			_____		0=無効、高電圧必要
;bit12		DEBUG	1	インサーキット･デバッガ モード設定
;						1=無効
;						0=有効、RA0-1をデバッガに使用
;bit11				0	Unimplemented
;bit10		BORV	0	ブラウンアウト･リセット電圧選択ビット（Vbor参照)
;						1=低電圧で動作
;						0=高電圧で動作
;bit9		STVREN	0	スタック･オーバーフロー･リセット設定
;						1=有効
;						0=無効
;bit8		PLLEN	0	PLL設定
;						1=4xPLL有効
;						0=4xPLL無効
;bit7       ZCDDIS  1   ZCDディセーブルビット
;                       1=ZCDを無効にする、ZCDCONで有効可
;                       0=ZCDを常に有効にする
;bit6-3					Unimplemented
;bit2		PPS1WAY 0   PPSLOCKビット単方向セット･イネーブルビット
;                       1=ロック解除シーケンスを実行後に1度だけ解除できる
;                       0=ロック解除シーケンスを実行すると何度でも解除できる
;bit1-0		WRT		11	フラッシュメモリ プロテクション設定
;						11=無効
;						10=0h-1FFh有効、200H?1FFFHはPMCONで制御可
;						01=0h-FFFh有効、1000H?1FFFHはPMCONで制御可
;						00=0h-1FFFh有効、PMCON制御不可
;
;bit	15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
;data    0  0  0  1  0  0  0  0  1  0  0  0  0  0  1  1
;
;
	__CONFIG _CONFIG2,	B'0001000010000011'



;		ワークエリア定義
;
;		BANK0	20h-7Fh
;
;		使用していないのもあります
;

hex0		equ		020h		;32ビット取得HEXデータ
hex1		equ		021h		;
hex2		equ		022h
hex3		equ		023h
hexw0		equ		024h		;32ビットバイナリ演算用
hexw1		equ		025h
hexw2		equ		026h
hexw3		equ		027h
cnt0		equ		028h		;時間待ちルーチン用
cnt1		equ		029h
cnt2		equ		02ah
cnt3		equ		02bh
tmp0		equ		02ch		;汎用ワーク
tmp1		equ		02dh
flg			equ		02eh		;エラー＆設定フラグ
MODE		equ		02fh		;実行モード設定
TMC			equ		030h		;タイマオーバーフローカウンタ
CYC0		equ		031h		;呼び出し周期カウンタ
CYC1		equ		032h		;呼び出し周期カウンタ
;DCX		equ		033h		;DAC X軸進行カウンタ
;DCM		equ		034h		;DAC X軸分解能設定
;DCR        equ     035h        ;TMR0リスタート情報
FRQ0		equ		036h		;周波数表示データ
FRQ1		equ		037h
TBAL        equ     038h        ;参照テーブル先頭アドレス下位8ビット
TBAH        equ     039h        ;同上位8ビット
;
digit12     equ     03ah        ;BCD変換出力1，2桁
digit34     equ     03bh        ;BCD変換出力3，4桁
digit56     equ     03ch        ;BCD変換出力5，6桁
digit78     equ     03dh        ;BCD変換出力7，8桁
digit9A     equ     03eh        ;BCD変換出力9，10桁
bcdw0		equ		03fh		;BCD補正処理ワーク
bcdw1		equ		040h
wrk0		equ		041h        ;演算用汎用ワーク
wrk1		equ		042h
shift       equ     043h        ;ビットシフト用ワーク
blk			equ		044h		;ゼロブランキング制御フラグ
colum		equ		045h		;現在の桁位置
colw0		equ		046h		;桁位置処理ワーク
colw1		equ		047h		;
;
CMD0		equ		048h		;コマンドパケット下位8ビット
CMD1		equ		049h		;コマンドパケット上位8ビット
DBUF0		equ		04ah		;SPI送信データ編集用バッファ
DBUF1		equ		04bh
DBUF2		equ		04ch
DBUF3		equ		04dh
DBUF4		equ		04eh
DBUF5		equ		04fh
DBUF6		equ		050h
DBUF7		equ		051h
;
REDAT       equ     052h        ;ロータリーエンコーダ・データ
RESTP       equ     053h        ;変化ステップ量
rew0        equ     054h        ;専用ワーク
rew1        equ     055h        ;専用ワーク
;
FDA0        equ     056h        ;周波数データアドレス下位8ビット
FDA1        equ     057h        ;周波数データアドレス上位8ビット
TBNO0       equ     058h        ;DACデータテーブルNO過去データ
TBNO1       equ     059h        ;DACデータテーブルNO現在データ
PSDT0       equ     05ah        ;プリスケーラ過去データ
PSDT1       equ     05bh        ;プリスケーラ現在データ
FLNO        equ     05ch        ;LPF選択
fdw0        equ     05dh        ;専用ワーク
fdw1        equ     05eh        ;専用ワーク
;           共通ＲＡＭ領域
DCX			equ		070h		;DAC X軸進行カウンタ
DCM			equ		071h		;DAC X軸分解能設定
DCR         equ     072h        ;TMR0リスタート情報
;
			ORG		0h          ;リセットベクタ
			goto	init
			ORG		04h         ;割り込みベクタ

;
;		ＰＩＣ１６Ｆ１７０５　３２ＭＨＺ
;       ＤＡＣ割込み処理ルーチン　Ｖｅｒ１．０
;
;       生成周波数については、上記対応Ｖｅｒに合った、
;       当局ＨＰ内、別項実測周波数表を参照して下さい。
;       計算方法については当局ＨＰ該当ページ解説を参照して下さい
;       使用ワーク
;		DCR     TMR0リスタートデータ
;       DCX     X軸カウンタ
;       DCM     X軸分解能設定値
;       FSR1    DAC書込みデータテーブルアドレス
;
;		割込み発生から割込みベクタまで3サイクル程度（同期割込み）
;       FSRxはコアレジスタなので、自動で PUSH-POPされる
;       よって、割り込み終了後、元の設定値に戻る

INT
			movlb	02h         ;DACレジスタ存在バンク
			incf	DCX,F       ;X軸カウンタ
            movf    DCX,W
            addwf   FSR1L,F     ;データアドレス設定
            movf    INDF1,W     ;データテーブルから読み込み
			movwf	DAC1CON1    ;DAC1へ書込み
			movf	DCM,W       ;X軸分解能設定値
			xorwf	DCX,W
			btfsc	STATUS,Z
			clrf	DCX         ;X軸カウンタリセット
;			TMR0リスタート処理
INTOUT		movlb   0h
            movf	DCR,W       ;TMR0リスタート情報
			movwf	TMR0        ;TMR0書込み、2cycの不感時間有
			bcf		INTCON,TMR0IF
			retfie				;


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;			PIC16F1705　イニシャライズ
;
;		OSCCON(BANK1　099H) 
;			bit7	SPLLEN	ソフトウエアPLL設定ビット
;							1 = 4xPLL有効
;							0 = 4xPLL無効(リセット後)
;			＊コンフィグレーションワードPLLEN=1の時、この設定は無視される。
;			bit6-3	IRCF	内部発振器クロック選択ビット
;							000x = 31KHZ LF
;							0010 = 31.25KHZ MF
;							0011 = 31.25KHZ HF
;							0100 = 62.5KHZ MF
;							0101 = 125KHZ MF
;							0110 = 250KHZ MF
;							0111 = 500KHZ MF（デフォルト）
;							1000 = 125kHZ HF
;							1001 = 250kHZ HF
;							1010 = 500kHZ HF
;							1011 = 1MHZ HF
;							1100 = 2MHZ HF
;							1101 = 4MHZ HF
;							1110 = 8MHZ or 32MHZ HF
;							1111 = 16MHZ HF
;			bit2			Unimplemented
;			bit1-0	SCS		システムクロック選択ビット
;							1x = 内部発振器
;							01 = タイマ1発振器
;							00 = FOSCで指定された発振器(リセット後)
;			(注)詳細はマニュアルあるいは当局HP内解説を参照
;							HF=HFINTOSC（16MHZ)
;							MF=MFINTOSC(500KHZ)
;							LF=LFINTOSC(32KHZ)
;
;
;			32MHZ内部発振設定
;		コンフィグレーションワード1		FOSC=100
;		OSCCON				SCS=00
;		OSCCON				IRCF=1110
;		OSCCON				SPLLEN=1(#1)
;		コンフィグレーションワード2		PLLEN=1(#1)
;						(#1)設定はどちらかでOKだが、PLLEN=1とすると、
;							OSCCONのSPLLEN=0の設定は無効となる。
;							また、8MHZのHFINTOSCは選択の余地が無い。
;
;		PORTA(BANK0　00CH）
;			bit7-6	Unimplemented(read=0)
;			bit5-4	RA5-4	デジタルI/O、アナログ入力
;			bit3	RA3		デジタルInputのみ
;			bit2	RA2-1	デジタルI/O、アナログ入力
;			bit0	RA0		デジタル･アナログI/O,DAコンバータ出力
;
;		PORTC(BANK0　00EH）
;			bit7-6	Unimplemented(read=0)
;			bit5-0	RC5-0	デジタルI/O、アナログ入力
;
;		TRISA(BANK1　08CH)
;			bit7-6	Unimplemented(read=0)
;			bit5-4	RA5-4	1=入力、0=出力
;			bit3	RA3		常に1
;			bit2	RA2-0	1=入力、0=出力
;
;		TRISC(BANK1　08EH)
;			bit7-6	Unimplemented(read=0)
;			bit5-4	RA5-0	1=入力、0=出力
;
;		LATA(BANK2　10CH)　データラッチレジスタ
;			bit7-6	Unimplemented(read=0)
;			bit5-4	RA5-4	出力データ保持
;			bit3	Unimplemented(read=0)
;			bit2	RA2-0	出力データ保持
;		（このラッチデータはTRISAレジスタ設定で各ピンに反映される）
;
;		LATC(BANK2　10EH)　データラッチレジスタ
;			bit7-6	Unimplemented(read=0)
;			bit5-4	RC5-0	出力データ保持
;		（このラッチデータはTRISCレジスタ設定で各ピンに反映される）
;
;
;		ANSELA(BANK3　18CH)
;			bit7-5	Unimplemented(read=0)
;			bit4	ANSA3/RA4	アナログ/デジタル選択ビット
;								1=アナログ入力
;								0=デジタルI/O
;			bit3	Unimplemented(read=0)
;			bit2-0	ANSA2-0/RA2-0アナログ/デジタル選択ビット
;								1=アナログ入力
;								0=デジタルI/O
;			＊デフォルトでは、すべて1(アナログ入力)となっている
;
;		ANSELC(BANK3　18EH)
;			bit7-6	Unimplemented(read=0)
;			bit5-0	ANSC5-0/RC5-0アナログ/デジタル選択ビット
;								1=アナログ入力
;								0=デジタルI/O
;			＊デフォルトでは、すべて1(アナログ入力)となっている
;
;
;		WPUA(BANK4　20CH)　ポートAプルアップ設定ビット
;			bit7-6	Unimplemented(read=0)
;			bit5-0			1=PORTA各ビットプルアップ有効
;					 _____	0=PORTA各ビットプルアップ無効
;					*WPUENビットが有効の時のみ、設定有効となる。
;
;		WPUC(BANK4　20EH)　ポートCプルアップ設定ビット
;			bit7-6	Unimplemented(read=0)
;			bit5-0			1=PORTA各ビットプルアップ有効
;					 _____	0=PORTA各ビットプルアップ無効
;					*WPUENビットが有効の時のみ、設定有効となる。
;
;		FVRCONレジスタ(BANK2　117H)
;			bit7	FVREN	FVRイネーブルビット
;							1=有効
;                           0=無効
;			bit6	FVRRDY	FVR準備フラグビット(#1)書込み不可
;							1=使用可能
;                           0=使用不可能あるいは禁止されている
;			bit5	TSEN	温度表示器イネーブルビット
;							1=有効
;                           0=無効
;			bit4	TSRNG	温度表示器測定レンジ選択ビット
;							1=High Range:Vout=VDD-4VT
;							0=Low Range:Vout=VDD-2VT
;			bit3-2	CDAFVR	コンパレータとDACへのFVR電圧選択ビット
;							11 = FVR出力　4x(4.096V)#2
;							10 = FVR出力　2x(2.048V)#2
;							01 = FVR出力 1x(1.024V)
;							00 = FVR出力OFF
;			bit1-0	ADFVR	ADCへのFVR電圧選択ビット
;							11 = FVR出力　4x(4.096V)#2
;							10 = FVR出力　2x(2.048V)#2
;							01 = FVR出力 1x(1.024V)
;							00 = FVR出力OFF
;
;							#1)16F1705/16F1709では常に"1"
;							#2)FVR電圧出力はVDDを超える事は出来ない
;
;		DAC1CON0レジスタ(BANK2　118H)
;		bit7	DACEN	DAC1イネーブルビット　P156 Fig17-1参照
;						1=許可
;						0=禁止
;		bit6	Unimplemented(read=0)
;		bit5	DAC1OE1	DAC1電圧出力1イネーブルビット
;						1=DAC1出力電圧をDACOUT1ピンにも出力される
;						0=DAC1出力電圧をDACOUT1ピンから切り離す
;		bit4	DAC1OE2	DAC1電圧出力2イネーブルビット
;						1=DAC1出力電圧をDACOUT2ピンにも出力される
;						0=DAC1出力電圧をDACOUT2ピンから切り離す
;		bit3-2	DAC1PSS	DAC1 正入力接続選択ビット
;						00 = VDD
;						01 = VREF+ピン(RA1)
;						10 = FVRバッファ2出力
;						11 = 使用不可
;		bit1	Un		Read as '0'
;       bit0    DAC1NSS DAC1 負入力選択ビット
;                       1=VREF-ピン(RA0)
;                       0=GND
;
;		ADCON0レジスタ(BANK1　09EH)
;		bit7	Unimplemented(read=0)
;		bit6-2	CHSx	アナログチャンネル入力選択ビット
;						11111 = FVRバッファ1出力
;						11110 = DAC_OUTPUT
;						11101 = 温度インジケータ
;						11100 = FVRバッファ2出力
;						11011 = 予約 未接続
;                              ?
;                       01100 = 予約 未接続
;						01011 = AN11
;						01010 = AN10
;						01001 = AN9
;						01000 = AN8
;						00111 = AN7
;						00110 = AN6
;						00101 = AN5
;						00100 = AN4
;						00011 = AN3
;						00010 = AN2
;						00001 = AN1
;						00000 = AN0
;		bit1	GO/DONE	A/D変換ステータスビット
;						1=変換開始指令（1にすると変換動作開始）
;						0=変換完了(変換完了すると0になる）
;		bit0	ADON	A/D変換ステータスビット
;						1=A/Dコンバータ動作
;						0=A/Dコンバータ停止
;
;		ADCON1レジスタ(BANK1　09EH)
;		bit7	ADFM	変換結果格納指定
;						1=右詰
;						0=左詰め
;		bit6-4	ADCS	A/D変換クロック選択ビット
;						111 = Frc
;						110 = Fosc/64
;						101 = Fosc/16
;						100 = Fosc/4
;						011 = Frc
;						010 = Fosc/32
;						001 = Fosc/8
;						000	= Fosc/2
;		bit3-2	Unimplemented(read=0)
;		bit1-0	ADPREF	参照正電圧指定
;						11 = 内部FVRモジュール
;						10 = 外部VREF+ピン (RA1)
;						01 = Reserved
;						00 = VDD
;
;
;       オペアンプ制御レジスタ(OPA1,OPA2)
;       OPAxCON(BANK10 0511H,0515H)
;		bit7	OPAxEN	OPAxイネーブルビット
;						1=有効
;						0=無効
;		bit6	OPAxSP  オペアンプ速度/消費電力選択ビット
;                       1=高GBWPモードで動作
;                       0=低GBWPモードで動作
;		bit5	Unimplemented(read=0)
;		bit4	OPAxUG	オペアンプ ユニティゲイン選択ビット
;						1=OPA出力を反転入力に接続。
;                         OPAxIN-ピンは汎用I/Oとして使用できる
;						0=反転入力をOPAxIN-ピンに接続する
;		bit3-2	Unimplemented(read=0)
;		bit1-0	OPAxCH	非反転チャンネル選択ビット
;						11 = 非反転入力にFVRバッファ2出力を接続
;						10 = 非反転入力にDAC_outputを接続
;						11 = 非反転入力にOPAxIN+を接続
;
;		OPTION_REG(BANK1　095H)
;					_____
;			bit7=1	WPUEN	プルアップ グローバル設定ビット
;							0=有効,1=無効
;			bit6=0	INTEDG	INTピン割り込み信号エッジ
;							1=↑
;							0=↓
;			bit5=0	TMR0CS	TMR0クロックソース選択ビット
;							1=外部入力RA2/T0CKI
;							0=内部システムクロック(Fosc/4)
;			bit4=1	TMR0SE	TMR0ソースエッジ選択ビット
;							1=RA4/T0CKIピンが↑の時インクリメント
;							0=RA4/T0CKIピンが↓の時インクリメント
;			bit3=0	PSA		プリスケーラ割当ビット
;							1=WDT
;							0=TMR0
;			bit2-0	PS		プリスケーラ分周比
;                                   	000 1/2
;										001	1/4
;										010	1/8
;										011	1/16
;										100	1/32
;										101	1/64
;										110	1/128
;										111	1/256
;
;		INTCONレジスタ(#2)　コア　00BH
;			bit7	GIE		全割込制御
;							1許可、0禁止
;			bit6	PEIE	周辺装置割込制御
;							1許可、0禁止
;			bit5	TMR0IE	タイマ0割込許可制御
;							1許可、0禁止
;			bit4	INTE	RA2外部割込許可制御
;							1許可、0禁止
;			bit3	IOCIE	I/Oポート状態変化割込許可制御
;							1許可、0禁止
;			bit2	TMR0IF	タイマ0割込みフラグ(#1)
;							1オーバーフロー
;							0オーバーフローなし
;			bit1	INTF	RA2外部割込みフラグ(#1)
;							1割込み発生
;							0割込み発生なし
;			bit0	IOCIF	I/Oポート状態変化割込フラグ(#1)
;							1割込発生
;							0割込無
;
;							#1)ソフトウエアでリセット必要
;							#2)初期値=0なので、初期設定で0設定する必要は無い
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

init
;			各レジスタ初期設定(PIC16F1705)
            movlb   0h          ;BANK0
			movlw	020h		;00100000B
			movwf	INTCON		;全割込みOFF、TMR0割込み許可
			movlb	0h			;BANK0
			clrf	PORTA		;Init PORT
            clrf    PORTC
            movlb   02h         ;BANK2
            clrf    LATA
            clrf    LATC
			;クロック
			movlb	01h			;BANK１
			movlw	0f0h		;1111000B
			movwf	OSCCON		;内部発振器は8MHZに設定
                                ;4xPLL=ON
			;TMR0およびプルアップ
			movlw	083H		;10000011b
			movwf	OPTION_REG	;プルアップOFF
								;割込みエッジ↓
								;クロックソース内部（Fosc/4）
								;TMR0カウントエッジ↓
								;プリスケーラ割当→TMR0
								;プリスケーラ分周1/16にセット
			;10ビットADC
			movlw	020h		;0010000B
			movwf	ADCON1		;左詰め、基準電圧VDD
								;ADCクロック　Fosc/32=1us(32MHZ)
			;I/Oポート(TRIS→BANK1、ANSEL→BANK3)
			movlw	038h        ;00111000B
			movwf	TRISA		;RA0-2出力、RA3-5入力
            movlw   07h         ;00000111B
            movwf   TRISC       ;RC0-2入力、RC3-5出力
			movlb	03h			;BANK3
			movlw	00h			;00000000B
			movwf	ANSELA		;RA0-5=デジタル
            movlw   04h         ;00000100B
            movwf   ANSELC      ;RC2アナログ、RC0,1,3-5デジタル

			;FVR(BANK2)
			movlb	02h			;BANK2
			movlw	088h		;10001000B
			movwf	FVRCON		;FVRイネーブル
								;DACとCPSに2.048V
								;ADCにはOFF

			;8ビットDAC(BANK2)
			movlw	088h		;10001000B
			movwf	DAC1CON0	;DAC1イネーブル
			movlb	0h			;基準電圧はFVR
                                 ;DACOUTピン切り離し

            ;オペアンプ1(BANK10)
            movlb   0ah         ;BANK10
            movlw   0d2h        ;11010010B
            movwf   OPA1CON     ;OPA1イネーブル
            movlb   0h          ;高GBWPモード、ユニティゲイン
                                ;IN+=DAC1_OUTPUT
;           注意    オペアンプ出力ピンもアナログ入力に設定する事

;
;			MAX2719コマンド一覧
;
;	Bモード（デコード有）アドレッシング
;		上位	下位（D15-D0の16ビット)
;		x0H	xxH		NOP
;		x1H	00H-07H	0桁0-9表示（ドット無）
;		x1H	80H-87H	0桁0-9表示（ドット有）
;		x1H	*0H-*7H	*bit7=1でドット有、bit4-6は何でもいい
;		x1H	F0H-F7H	0桁0-9表示（ドット有）
;
;		x2H	**H-**H	1桁、下位7ビットは上記と同じ
;		x3H	**H-**H	2桁、下位7ビットは上記と同じ
;		x4H	**H-**H	4桁、下位7ビットは上記と同じ
;		x5H	**H-**H	5桁、下位7ビットは上記と同じ
;		x6H	**H-**H	6桁、下位7ビットは上記と同じ
;		x7H	**H-**H	7桁、下位7ビットは上記と同じ
;		x8H	**H-**H	8桁、下位7ビットは上記と同じ
;
;	機能設定
;		x9H	**H		デコードモードレジスタ設定
;			00H		7-0桁デコード無(初期設定値)
;			01H		0桁デコード有、7-1桁デコード無
;		xAH	**H		輝度レジスタ設定
;			x0H		1/32(初期設定値)
;			x1H		3/32
;			x2H		5/32
;			x3H		7/32
;			x4H		9/32
;			x5H		11/32
;			x6H		13/32
;			x7H		15/32
;			x8H		17/32
;			x9H		19/32
;			xAH		21/32
;			xBH		23/32
;			xCH		25/32
;			xDH		27/32
;			xEH		29/32
;			xFH		31/32
;
;		xBH	**H		スキャンリミットレジスタ設定（注1）
;			x0H		0桁目のみ(初期設定値)
;			x1H		0&1桁
;			x2H		012桁
;			x3H		0123桁
;			x4H		01234桁
;			x5H		012345桁
;			x6H		0123456桁
;			x7H		01234567桁
;
;		xCH	**H		シャットダウンレジスタ設定
;			x0H		シャットダウンモード(初期設定値)
;			x1H		ノーマルオペレーションモード
;
;		xFH	**H		ディスプレイテストレジスタ設定
;			x0H		ノーマルオペレーションモード(初期設定値)
;			x1H		ディスプレイテストモード
;
;   コードBフォントの使用方法
;		DBUFx　	各桁バッファ データフォーマット（Bモードに適用）
;		bit0-3	表示する十進数値データ	0H-9H→0-9(注2)
;				0AH→-、0BH→E、OCH→H、0DH→L、0EH→P
;				0FH=Blank(注3)
;		bit4	不使用
;		bit5	不使用
;		bit6	不使用
;		bit7    ドット表示	0=OFF、1=ON
;
;		注1）基本的に8桁表示設定で使用するのが良いと思われる
;		注2）表示数値データはMAX2719内部でLED表示ビットデータに変換されます
;		注3）ブランク命令はa-gセグメントのみ有効、DPセグメントには適応されない
;

;			MAX2719イニシャライズ

			call	wait1s      ;MAX2719電源投入安定化待ち
			movlw	0fh			;ディスプレイテストレジスタアドレス
			movwf	CMD1
			movlw	01h
			movwf	CMD0		;テストモード
			call	SEND_CMD
			call	wait100m

			movlw	0fh			;ディスプレイテストレジスタアドレス
			movwf	CMD1
			clrf	CMD0		;ノーマルオペレーション
			call	SEND_CMD

			movlw	0bh			;スキャンレジスタアドレス
			movwf	CMD1
			movlw	07h			;8桁表示セット
			movwf	CMD0
			call	SEND_CMD

			movlw	0ah			;輝度レジスタアドレス
			movwf	CMD1
			movlw	03h			;輝度設定　7/32
			movwf	CMD0
			call	SEND_CMD

			movlw	09h			;デコードモードレジスタアドレス
			movwf	CMD1
			movlw	0ffh		;8桁Bモード
			movwf	CMD0
			call	SEND_CMD
			call	BRKL		;全表示ブランク

			movlw	0ch			;シャットダウンモードレジスタアドレス
			movwf	CMD1
			movlw	01h			;ノーマルモードへ移行
			movwf	CMD0
			call	SEND_CMD
			call	wait100m	;モード安定化待ち

;			初期値セット
            clrf    hex0
            clrf    hex1
            clrf    hex2
            clrf    hex3
			clrf	DCX         ;X軸進行カウンタ
            movlw   080h
            movwf   DCM         ;X軸分解能
            clrf    TBNO0
            clrf    TBNO1
            clrf    PSDT0
            clrf    PSDT1
            clrf    FDA0
            clrf    FDA1
;        	clrf	DCP
			movlw	04fh		;01001111b
        	movwf	flg			;8桁表示、4,7桁ドット表示指定
								;ゼロブランキングする


;
;		メインループ
;
;		タイマ0インタバルタイマで割込み、DAC駆動
;       ロータリーエンコーダで周波数可変
;

coldst
			movlw	0c0h  		;暫定値設定
			movwf	FDA0
            clrf    FDA1        ;1KHZに設定
            movlw   01h
            movwf   RESTP       ;ステップ１で変化
            call    GET_FRD     ;配列行の各種桁データ取得
            call    SET_TBPS    ;生成周波数設定
            movf    FRQ0,W
            movwf   hex0
            movf    FRQ1,W
            movwf   hex1
            clrf    hex2
            clrf    hex3
            call    BCD
			call	SETBUF		;データ整理
            call    addmod
			call	PUTL		;モジュールに送信
            movf    DCR,W
			movwf	TMR0		;TMR0スタート
			bsf		INTCON,GIE	;GIE=1(割込みイネーブル)

mloop		;メインループ
            call    RE_DATA     ;配列行番号FDAxを出力
            iorlw   0h          ;W=0以外ならカウント有
			btfsc	STATUS,Z	;
			goto	mloop		;カウント無、何もしない
;			周波数設定値（配列行番号）の変更
            call    GET_FRD     ;配列行の各種桁データ取得
            call    SET_TBPS    ;生成周波数設定
;           周波数表示の変更
            movf    FRQ0,W
            movwf   hex0
            movf    FRQ1,W
            movwf   hex1
            clrf    hex2
            clrf    hex3
            call    BCD
			call	SETBUF		;データ整理
            call    addmod      ;モード表示付加
			call	PUTL		;モジュールに送信
			goto	mloop

;配列データアクセスのデバッグ用
;エミュレータで使用するのを想定
DEBUG01     movlw	096h  		;暫定値設定
			movwf	FDA0
            clrf    FDA1
            movlw   01h
            movwf   RESTP       ;ステップ１で変化
db012		;ループ
            call    GET_FRD
            call    SET_TBPS
            incf    FDA0
            goto    db012
;動作速度を計算する（今となっては必要ない）
;DACを無限ループで動作させ、その生成周波数でトリマを調整する
;ループ内は15サイクル、よって0.125us×15=1.875us
;分解能は128なので1.875us×128=240us=4166.67HZ
;FOSC=32MIHZ、0.125us/cycle
DEBUG02

            movlw   0h          ;TBL128=8900H
            movwf   FSR1L       ;TBL64=8850H
            movlw   089h        ;TBL32=8820H
            movwf   FSR1H       ;TBL16=8800H
            movlw   080h        ;X軸分解能設定
            movwf   DCM         ;TBL128=80H、64=40H、32=20H、16=10H


dbg22       incf	DCX,F       ;X軸カウンタ
            incf    FSR1L,F     ;データアドレス設定
            movf    INDF1,W     ;データテーブルから読み込み
            movlb   02h
			movwf	DAC1CON1    ;DAC1へ書込み
            movlb   0h
			movf	DCM,W       ;X軸分解能設定値
			xorwf	DCX,W
			btfss	STATUS,Z
            goto    dbg23
			clrf	DCX
            clrf    FSR1L
            goto    dbg22
dbg23       nop
            goto    dbg22


;７セグＬＥＤモジュール送信デバッグ用
DEBUG03
            clrf    hex0
            clrf    hex1
            clrf    hex2
            clrf    hex3
db031       call    DBG_DAT
            call    BCD
            call    SETBUF
            call    PUTL
            goto    db031

DBG_DAT		;デバッグ用バイナリデータ生成
			movlw	04fh		;flg=01001111B
			movwf	flg			;8桁、ゼロブランキングON
								;4,7桁ドット有
			incf	hex0,F
			btfss	STATUS,Z	;桁上がりか？
			goto	ckerr

			incf	hex1,F
			btfss	STATUS,Z
			return

			incf	hex2,F
			btfss	STATUS,Z
			return

			incf	hex3,F
			btfss	STATUS,Z
			return
			clrf	hex0
			clrf	hex1
			clrf	hex2
			clrf	hex3
			return
ckerr
			movf	hex0,W		;16の倍数時に警告フラグON
			andlw	0fh
			btfsc	STATUS,Z
			bsf		flg,7		;疑似エラー発生
			return

;ロータリーエンコーダ　デバッグ用
;ダイヤルを回すと16ビットの範囲で1ステップづつ増減する
DEBUG04     movlw   080h
            movwf   FDA0        ;スタート値
            clrf    FDA1
            movlw   01h         ;増減ステップ
            movwf   RESTP
dbg41       call    RE_DATA     ;出力はFDAx16ビット
            iorlw   0h          ;W=0以外ならカウント有
			btfsc	STATUS,Z	;W=0は変化無なので何もしない
			goto	dbg41		;何もしないでループ先頭へ
;			設定値が変更された
            movf    FDA0,W
            movwf   hex0
            movf    FDA1,W
            movwf   hex1
            clrf    hex2
            clrf    hex3
            call    BCD
			call	SETBUF		;データ整理
			call	PUTL		;モジュールに送信
			goto	dbg41

;生成周波数データ取得用
;ダイヤルを回すと0-255の範疇で1ステップで増減する
;それをTMR0に設定、
;       出力    OPTION_REG 下位4ビット プリスケーラ再設定
;                   1000:PS=0
;                   0000:PS=1/2
;                   0001:PS=1/4
;                   0010:PS=1/8
;                   0011:PS=1/16
;               DAC入力データテーブル再設定
;                   TBNO1=0:TBL128
;                   TBNO1=1:TBL64
;                   TBNO1=2:TBL32
;                   TBNO1=3:TBL16
;
DEBUG05
            movlw   080h
            movwf   FDA0        ;スタート値
            movwf   DCR         ;TMR0値
            clrf    FDA1
            movlw   01h         ;増減ステップ
            movwf   RESTP
;           DACテーブル変更
            movlw   0h          ;TBL128=8900H
            movwf   FSR1L       ;TBL64=8850H
            movlw   089h        ;TBL32=8820H
            movwf   FSR1H       ;TBL16=8800H
            movlw   080h        ;X軸分解能設定
            movwf   DCM         ;TBL128=80H、64=40H、32=20H、16=10H
            movlw   08h         ;PS=0
            movwf   PSDT1       ;プリスケーラ設定
;           プリスケーラ変更
            movlb   01h         ;BANK1
            movf    OPTION_REG,W
            movlb   0h
            andlw   0f0h
            iorwf   PSDT1,W
            movlb   01h
            movwf   OPTION_REG
            clrf    BSR         ;BANK0

            movf    DCR,W
			movwf	TMR0		;TMR0スタート
			bsf		INTCON,GIE	;GIE=1(割込みイネーブル)

dbg51       call    RE_DATA     ;出力はFDAx16ビット
            iorlw   0h          ;W=0以外ならカウント有
			btfsc	STATUS,Z	;W=0は変化無なので何もしない
			goto	dbg51		;何もしないでループ先頭へ
;			設定値が変更された
            movf    FDA1,W
            iorlw   0h
            btfsc   STATUS,Z
            goto    dbg52
            clrf    FDA1
            movlw   0ffh
            movwf   FDA0
dbg52       movf    FDA0,W
            movwf   DCR
            movwf   TMR0
            movwf   hex0
            movf    FDA1,W
            movwf   hex1
            clrf    hex2
            clrf    hex3
            call    BCD
			call	SETBUF		;データ整理
			call	PUTL		;モジュールに送信
			goto	dbg51


;
;           周波数配列データアクセス
;
;           配列    1行4桁構成
;                   FDAxに配列行番号を入力して呼び出す事
;
;           入力    FDA0    周波数配列行番号下位8ビット
;                   FDA1    周波数配列行番号上位8ビット
;
;           出力    DCR     取得TMR0値
;                   FRQ0    取得周波数データ下位8ビット
;                   FRQ1    取得周波数データ上位8ビット
;                   TBNO1   取得DACデータテーブル
;                   PSDT1   取得プリスケーラ設定データ
;
;           使用ワーク  fdw0、fdw1
;
GET_FRD
;           配列先頭オフセット設定
            movlw   0h
            movwf   FSR0L
            movlw   08ah
            movwf   FSR0H       ;間接アドレス8A00H
;           配列メモリアドレス演算
            movf    FDA0,W
            movwf   hex0
            movf    FDA1,W
            movwf   hex1
            call    MLT16_X4    ;16ビットバイナリ4倍
            movf    hex0,W
            addwf   FSR0L,F
            movf    hex1,W
            addwf   FSR0H,F     ;配列行アドレス設定
;           配列行へアクセス実行
            moviw   FSR0++
            movwf   DCR         ;TMR0値
            moviw   FSR0++
            movwf   FRQ0        ;周波数下位8ビット
            moviw   FSR0++
            movwf   FRQ1        ;周波数上位8ビット
            moviw   FSR0++
            movwf   fdw0        ;PS設定、TBL設定
;
;           プリスケーラ値およびテーブル番号展開
;
;               TBNO0   DACデータテーブル過去値
;               TBNO1   DACデータテーブル現在値
;               PSDT0   プリスケーラ過去値
;               PSDT1   プリスケーラ現在値
            andlw   0fh
            movwf   PSDT1       ;取得プリスケーラ値
            swapf   fdw0,W
            andlw   0fh
            movwf   TBNO1       ;取得DACテーブル番号
;
;           ローパスフィルタ選択
;
;               低域フィルタ    FLNO=0  RA0=1   -700HZ
;               中域フィルタ    FLNO=1  RA1=1   -5KHZ
;               高域フィルタ    FLNO=2  RA2=1   -10KHZ
            movlw   0ah
            movwf   hex0
            movlw   014h
            movwf   hex1        ;hex(0-1)=5130HZ
            movf    FRQ0,W
            movwf   hexw0
            movf    FRQ1,W
            movwf   hexw1
            call    sub16b      ;5130HZ-FRQ
            iorlw   0h          ;W=0以外は減算エラー
            btfss   STATUS,Z    ;
            goto    FLTH        ;FRQは5130HZ以上
            movlw   0d0h        ;FRQは5130HZ以下
            movwf   hex0
            movlw   02h
            movwf   hex1        ;hex(0-1)=720HZ
            movf    FRQ0,W
            movwf   hexw0
            movf    FRQ1,W
            movwf   hexw1
            call    sub16b      ;720HZ-FRQ
            iorlw   0h          ;W=0以外は減算エラー
            btfss   STATUS,Z    ;
            goto    FLTM        ;FRQは720HZ以上
FLTL        ;低域フィルタ設定
            movlw   0h
            movwf   FLNO
            call    SLPL
            return
FLTM        ;中域フィルタ設定
            movlw   01h
            movwf   FLNO
            call    SLPM
            return
FLTH        ;高域フィルタ設定
            movlw   02h
            movwf   FLNO
            call    SLPH
            return


;
;       生成周波数設定
;
;       入力    TBNO0   DACデータテーブル過去値
;               TBNO1   DACデータテーブル現在値
;               PSDT0   プリスケーラ過去値
;               PSDT1   プリスケーラ現在値
;       出力    OPTION_REG 下位4ビット プリスケーラ再設定
;                   1000:PS=0
;                   0000:PS=1/2
;                   0001:PS=1/4
;                   0010:PS=1/8
;                   0011:PS=1/16
;               DAC入力データテーブル再設定
;                   TBNO1=0:TBL128
;                   TBNO1=1:TBL64
;                   TBNO1=2:TBL32
;                   TBNO1=3:TBL16
;
SET_TBPS
            movf    TBNO0,W
            xorwf   TBNO1,W
            btfss   STATUS,Z    ;TBNO0=TBNO1ならばZ=1
            call    CHGTBL      ;TBL変更処理

            movf    PSDT0,W
            xorwf   PSDT1,W
            btfsc   STATUS,Z
            return              ;TBL/PS変更なく終了

;           プリスケーラ変更
            movlb   01h         ;BANK1
            movf    OPTION_REG,W
            movlb   0h
            andlw   0f0h
            iorwf   PSDT1,W
            movlb   01h
            movwf   OPTION_REG
            clrf    BSR         ;BANK0
            movf    PSDT1,W
            movwf   PSDT0
            return
;           DAC入力テーブルアドレス変更
CHGTBL
            movf    TBNO1,W
            movwf   TBNO0       ;旧データ更新
            movlw   01h
            subwf   TBNO1,F
            btfss   STATUS,C    ;ボローチェック
            goto    setb128     ;ボロー発生ならTBL128
            subwf   TBNO1,F
            btfss   STATUS,C    ;
            goto    setb64
            subwf   TBNO1,F
            btfss   STATUS,C    ;
            goto    setb32
            subwf   TBNO1,F
            btfss   STATUS,C    ;
            goto    setb16
            retlw   01h         ;エラー

setb128     movlw   0h
            movwf   FSR1L
            movlw   089h
            movwf   FSR1H
            movlw   080h        ;X軸分解能設定
            movwf   DCM
            return
setb64      movlw   050h
            movwf   FSR1L
            movlw   088h
            movwf   FSR1H
            movlw   040h        ;X軸分解能設定
            movwf   DCM
            return
setb32      movlw   020h
            movwf   FSR1L
            movlw   088h
            movwf   FSR1H
            movlw   020h        ;X軸分解能設定
            movwf   DCM
            return
setb16      movlw   00h
            movwf   FSR1L
            movlw   088h
            movwf   FSR1H
            movlw   010h        ;X軸分解能設定
            movwf   DCM
            return


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;
;		ロータリーエンコーダ入力パルス　カウントサブルーチン
;
;		想定部品	ALPS	EC12E2420801(クリックタイプ）
;                           EC12E2420803(ノンクリックタイプ)
;                           チャタリング	3ms(max),R=10KΩ
;                           バウンズ	2ms(max),R=10KΩ
;		エンコーダA端子     RC0
;		エンコーダB端子     RC1
;		カウント出力データ  FDA0
;                           FDA1
;
;		エンコーダ右回り	アップカウント
;		エンコーダ左回り	ダウンカウント
;       カウントステップ    RESTPに事前設定
;
;
;		状態変化無ならWreg=0でリターン
;		状態変化有ならWreg=1、REDAT下位2ビットに記録
;       REDAT   エンコーダ用ビットデータ
;		旧ビットデータは左シフトされ、オーバーフロービットは破棄される
;		t(0)	→bit1,0(REA,REB)
;		t(-1)	→bit3,2(REA,REB)
;		t(-3)	→bit5,4(REA,REB)
;		t(-4)	→bit7,6(REA,REB)
;
;		使用専用ワーク	rew0,rew1,REDAT,RESTP
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

RE_DATA
;			ポートデータチェック
;			rew0	取得データ（下位2ビット有効）
			movf	PORTC,W     ;RC0,RC1ポート読込(1'st)
			movwf	rew0        ;bit0=REA,bit1=REB
			movlw	03h         ;
			andwf	rew0,F      ;不要ビットをクリア
			call	w1m			;チャタリング終了待ち3ms
			call	w1m
			call	w1m
			movf	PORTC,W		;RC0,RC1ポート読込(2'st)
			movwf	rew1		;
			movlw	03h			;不要ビットをクリア
			andwf	rew1,W
			xorwf	rew0,W		;1'stと2'stを比較
			btfss	STATUS,Z	;Z=1ならば取得データ有効
			goto	RE_DATA     ;データ読込エラー リトライ

;			ポートデータ新旧比較
			movf	REDAT,W
			movwf	rew1		;過去データをコピー
			movlw	03h
			andwf	rew1,W		;不要ビットをクリア
			xorwf	rew0,W		;新旧データ比較
			btfsc	STATUS,Z	;Z=0ならば状態変化有
			retlw	0h			;状態変化無で終了

;			保存データ更新
;			過去データ      REDAT
;			一時保存ワーク  rew1
			movf	REDAT,W		;過去ビット保存データ
			movwf	rew1		;過去データ一時保存
			lslf	REDAT,F		;新データ挿入のため2ビット左シフト
			lslf	REDAT,F		;bit0-1はクリアされます
			movf	rew0,W
			iorwf	REDAT,F		;保存データ更新
                                ;bit0→REA新取得データ
                                ;bit1→REB新取得データ
                                ;bit2→REA旧データ
                                ;bit3→REB旧データ

;			回転方向判別
;           rew1=過去データ
;           rew0=現在データ
;           判別式D=rew1*2 XOR rew0
;           D(bit1)=0ならCW（時計回り）
;           D(bit1)=1ならCCW（反時計回り）
			movlw	03h			;
			andwf	rew1,F		;rew1=F(-1)の2ビットのみとする
			lslf	rew1,W		;F(-1)ビットを左シフト
			xorwf	rew0,F		;(取得ビット)XOR(旧ビット)
			btfsc	rew0,1		;Lなら時計回転
			goto	ccw			;Hなら反時計回転

;			右回転処理
;   		FDA(0-1)を指定ステップでインクリメント
;			RESTP=アップダウンステップ
cw			movf	RESTP,W     ;1カウントの加算ステップ数
			movwf	hexw0
			clrf	hexw1
            movf    FDA0,W
			movwf	hex0
			movf    FDA1,W
            movwf   hex1
			call	add16b		;ステップ周波数分を加算
            movf    hex0,W
            movwf   FDA0
            movf    hex1,W
            movwf   FDA1
;           最大行番号越えをチェック
            movf    hex0,W
            movwf   hexw0
            movf    hex1,W
            movwf   hexw1
            movlw   086h
            movwf   hex0
            movlw   01h
            movwf   hex1        ;hexw=186H=390（最大行番号）
            call    sub16b
            iorlw   0h          ;ボローチェック
            btfsc    STATUS,Z
			retlw	01h         ;状態変化有、正常終了
;           最大行番号保護
            movlw   086h
            movwf   FDA0
            movlw   01h
            movwf   FDA1        ;FDAx=186H=390（最大行番号）
            retlw   0h          ;状態変化無、カウンタ最大値

;			左回転処理		FDA(0-1)を指定ステップでデクリメント
ccw			movf	RESTP,W     ;1カウントの減算ステップ数
			movwf	hexw0
			clrf	hexw1
            movf    FDA0,W
			movwf	hex0
			movf    FDA1,W
            movwf   hex1
			call	sub16b		;ステップ周波数分を減算
            iorlw   0h          ;ボローチェック
            btfss   STATUS,Z
            goto    ccwer
            movf    hex0,W
            movwf   FDA0
            movf    hex1,W
            movwf   FDA1
			retlw	01h         ;状態変化有、終了
ccwer       clrf    FDA0        ;
            clrf    FDA1
            retlw   0h          ;状態変化無、カウンタリセット


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;			ローパスフィルタ選択サブルーチン
;
;		RA0		低カット
;		RA1		中カット
;		RA2		高カット
;
;		アナログスイッチ制御
;		低カット選択	RA0=1、RA1=0、RA2=0
;		中カット選択	RA0=0、RA1=1、RA2=0
;		高カット選択	RA0=0、RA1=0、RA2=1
;					注意：上記以外の組合せでの使用不可
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

SLPL		;LPF低域選択
			movlb	02h
			bcf		LATA,1
			bcf		LATA,2
			bsf		LATA,0
			movlb	0h
			return

SLPM		;LPF中域選択
			movlb	02h
			bcf		LATA,0
			bcf		LATA,2
			bsf		LATA,1
			movlb	0h
			return

SLPH		;LPF高域選択
			movlb	02h
			bcf		LATA,0
			bcf		LATA,1
			bsf		LATA,2
			movlb	0h
			return


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;			Ｄ／Ａ変換サブルーチン（使用していない）
;
;		アナログ出力ポート		AN0/RA0
;
;		DAC1CON0レジスタ(BANK2　118H)
;		bit7	DAC1EN	DAC1イネーブルビット
;						1=許可
;						0=禁止
;		bit6	Unimplemented(read=0)
;		bit5	DAC1OE1	DAC1電圧出力1イネーブルビット
;						1=DAC1出力電圧をDACOUT1ピンにも出力される
;						0=DAC1出力電圧をDACOUT1ピンから切り離す
;		bit4	DAC1OE2	DAC1電圧出力2イネーブルビット
;						1=DAC1出力電圧をDACOUT2ピンにも出力される
;						0=DAC1出力電圧をDACOUT2ピンから切り離す
;		bit4	Un		Read as '0'
;		bit3-2	DAC1PSS	DAC1 正入力接続選択ビット
;						00 = VDD
;						01 = VREF+ピン(RA1)
;						10 = FVRバッファ2出力
;						11 = 使用不可
;		bit1	Un		Read as '0'
;       bit0    DAC1NSS DAC1 負入力選択ビット
;                       1=VREF-ピン(RA0)
;                       0=GND
;
;
;		DAC1CON1レジスタ(BANK2　119H)
;		bit7-0	DACR	DAC出力電圧設定ビット
;
;
;
;		使用方法
;		このルーチンを呼び出す度に、DAC出力電圧を順次変化させていく。
;		このルーチンでは時間管理はしない。
;		呼び出す側で時間を管理する必要がある。
;		最大電圧はFVRの2.048V使用する。
;		最小電圧はGNDとなる。
;		アナログ入力、プルアップONにすると、出力波形がおかしくなります。
;
;		使用変数およびレジスタ
;		DCX             X軸進行カウンタ
;       DCM             X軸分解能設定値
;       TBAL            FSR1L設定値
;       TBAH            FSR1H設定値
;		DAC出力データ   00H-FFH（データテーブルより取得）
;       FSR1レジスタ    DACデータテーブル アドレス
;       INDF1レジスタ   DACデータテーブル アクセス
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;		消費サイクル　15cycles(1.875us)
;		call,returnを含む
put_dac
			incf	DCX,F       ;X軸カウンタ
            incf    FSR1L,F     ;データアドレス設定
            movf    INDF1,W     ;データテーブルから読み込み
            movlb   02h
			movwf	DAC1CON1    ;DAC1へ書込み
            movlb   0h
			movf	DCM,W       ;X軸分解能設定値
			xorwf	DCX,W
			btfss	STATUS,Z
            return
			clrf	DCX
            movf    TBAL,W
            movwf   FSR1L
			return

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;
;			Ａ／Ｄ変換サブルーチン（使用していない）
;
;		アナログ入力ポート		RA1/AN1/CH1
;		結果格納方法		ADFM=0/左詰め/ADRESHのみ取得
;		出力データ			hex0
;
;		ADCON0レジスタ（BANK1　09DH)
;		bit7	Unimplemented(read=0)
;		bit6-2	CHSx	アナログチャンネル指定
;						00000 = AN0/RA0
;						00001 = AN1/RA1
;						00010 = AN2/RA2
;						00011 = AN3/RA3
;						00100 = AN4/RC0(#1)
;						00101 = AN5/RC1(#1)
;						00110 = AN6/RC2(#1)
;						00111 = AN7/RC3(#1)
;						01000 = Reserved.No channel connected
;						    ・
;						11100 = Reserved.No channel connected
;						11101 = 温度表示器(#4)
;						11110 = DAC出力(#2)
;						11111 = FVRバッファ1出力(#3)
;		bit1	GO/DONE	A/D変換ステータスビット
;						1=変換開始指令（１にすると変換動作開始）
;						0=変換完了(変換完了すると０になる）
;		bit0	ADON	A/D変換ステータスビット
;						1=A/Dコンバータ動作
;						0=A/Dコンバータ停止
;
;		(#1)PIC16F1823のみ
;		(#2)ADC入力はDAC出力に接続される。
;		(#3)ADC入力はFVRバッファ1に接続される。
;		(#4)ADC入力は温度表示モジュール出力に接続される。
;
;		ADCON1レジスタ(BANK1　09EH)
;		bit7	ADFM	変換結果格納指定
;						1=右詰
;						0=左詰め
;		bit6-4	ADCS	A/D変換クロック選択ビット
;						000	= Fosc/2
;						001 = Fosc/8
;						010 = Fosc/32
;						011 = Frc
;						100 = Fosc/4
;						101 = Fosc/16
;						110 = Fosc/64
;						111 = Frc
;		bit3-2	Unimplemented(read=0)
;		bit1-0	ADPREF	参照正電圧指定
;						00 = VDD
;						01 = Reserved
;						10 = 外部VREF+ (RA1)
;						11 = 内部FVRモジュール
;
;		使用ワーク		;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;			VRによる分電圧取得
GET_ADC
			movlb	01h
			movlw	05h			;00000101b
								;左詰め、基準電圧VDD、
								;AN1(RA1)選択、ADON_ON
			movwf	ADCON0		;電圧サンプリング開始
			call	w10u		;サンプリング電圧安定化待ち
			call	w10u
			movlb	01h
			bsf		ADCON0,GO	;A/D変換開始指令
aloop
			btfsc	ADCON0,GO	;A/D変換完了待ち
			goto	aloop		;GO=0ならば次へ
			movf	ADRESH,W	;データ上位８ビット
			bcf		ADCON0,ADON	;A/DコンバータOFF
			movlb	0h
			movwf	hex0		;上位８ビットをhex0に保存
			return				;


;
;		表示データバッファのセッティング
;
;	入力データ		5バイト(10桁分)BCD　この内容は保存される
;				digit12
;				digit34
;				digit56
;				digit78
;				digit9A（表示されない）
;
;	表示桁		colum　この内容は保存される
;
;	入力制御フラグ	flg　この内容は保存される
;	　2桁表示指令	flg=xxxxx001
;	　4桁表示指令	flg=xxxxx011
;	　6桁表示指令	flg=xxxxx101
;	　8桁表示指令	flg=xxxxx111
;	　ゼロブランキング	flg=xxxx0xxx　
;					bit3=0	しない
;				flg=xxxx1xxx
;					bit3=1	　する
;	　ドット表示指令	flg=x000xxxx　表示なし
;					bit4=1	2,5桁点燈
;					bit5=1	3,6桁点燈
;					bit6=1	4,7桁点燈
;	　警告LED		flg=1xxxxxxx　LED点灯する
;				flg=0xxxxxxx　LED点灯しない
;
;			上位桁から書き込みます
;
;		コードBフォントの使用方法
;		DBUFx　	各桁バッファ データフォーマット（Bモードに適用）
;		bit0-3	表示する十進数値データ	0H-9H→0-9(注1)
;				0AH→-、0BH→E、OCH→H、0DH→L、0EH→P
;				0FH=Blank(注2)
;		bit4	不使用
;		bit5	不使用
;		bit6	不使用
;		bit7　　	ドット表示	0=OFF、1=ON
;		注1)表示数値データはMAX2719内部でLED表示ビットデータに変換されます
;		注2)ブランク命令はa-gセグメントのみ有効、DPセグメントには適応されない
;
;	使用ワーク	bufw0
;

SETBUF
;			表示する十進数値データを全バッファに書込み
			swapf	digit78,W
			andlw	0fh			;8桁目のみのデータを抽出
			movwf	DBUF7		;8桁目バッファに抽出データ書込み
								;以下同じ
			movf	digit78,W
			andlw	0fh
			movwf	DBUF6		;7桁目に数値データ書込み

			swapf	digit56,W
			andlw	0fh
			movwf	DBUF5		;6桁目に数値データ書込み

			movf	digit56,W
			andlw	0fh
			movwf	DBUF4		;5桁目に数値データ書込み

			swapf	digit34,W
			andlw	0fh
			movwf	DBUF3		;4桁目に数値データ書込み

			movf	digit34,W
			andlw	0fh
			movwf	DBUF2		;3桁目に数値データ書込み

			swapf	digit12,W
			andlw	0fh
			movwf	DBUF1		;2桁目に数値データ書込み

			movf	digit12,W
			andlw	0fh
			movwf	DBUF0		;1桁目に数値データ書込み

;			その他指定処理を全バッファに行う
;			呼び出し順番によっては上手く機能しなくなるので注意
			call	ZBK			;ゼロブランキング処理
			call	SPOS		;指定表示桁数処理
			call	ADDOT		;ドット表示処理

;			オーバーフローチェック
;			警告LEDを発光させる、7セグ表示は残り8桁分を表示
			movf	digit9A,W	;ここにデータがある場合O.Fとなる
			iorlw	0h
			btfss	STATUS,Z
			goto	sbfer
			bcf		PORTA,5
			return
sbfer		bsf		PORTA,5		;オーバーフロー発生
			retlw	01h

;
;			ゼロブランキング処理
;
;		入力		DBUFx　（数値データ設定済であること)
;				flg	ビット3　ZBKフラグ
;		使用ワーク	無
;
;		方法		数値データ=0FHとする(CMD0)（注1）
;				その場合、DPセグメントは処理されない
;
;
;		注1）	表示桁数とゼロブランキングについて
;			ゼロブランキング処理にスキャンレジスタ使用はNG
;
;
ZBK
			btfss	flg,3		;ZBK命令フラグチェック
			return				;命令無いので終了
			movf	DBUF7,W		;
			andlw	0fh			;数値データゼロチェック
			btfss	STATUS,Z
			return				;データはゼロで無いので終了
			movlw	0fh
			movwf	DBUF7		;ブランキングセット

			movf	DBUF6,W		;
			andlw	0fh			;数値データゼロチェック
			btfss	STATUS,Z
			return				;データはゼロで無いので終了
			movlw	0fh
			movwf	DBUF6		;ブランキングセット

			movf	DBUF5,W		;
			andlw	0fh			;数値データゼロチェック
			btfss	STATUS,Z
			return				;データはゼロで無いので終了
			movlw	0fh
			movwf	DBUF5		;ブランキングセット

			movf	DBUF4,W		;
			andlw	0fh			;数値データゼロチェック
			btfss	STATUS,Z
			return				;データはゼロで無いので終了
			movlw	0fh
			movwf	DBUF4		;ブランキングセット

			movf	DBUF3,W		;
			andlw	0fh			;数値データゼロチェック
			btfss	STATUS,Z
			return				;データはゼロで無いので終了
			movlw	0fh
			movwf	DBUF3		;ブランキングセット

			movf	DBUF2,W		;
			andlw	0fh			;数値データゼロチェック
			btfss	STATUS,Z
			return				;データはゼロで無いので終了
			movlw	0fh
			movwf	DBUF2		;ブランキングセット

			movf	DBUF1,W		;
			andlw	0fh			;数値データゼロチェック
			btfss	STATUS,Z
			return				;データはゼロで無いので終了
			movlw	0fh
			movwf	DBUF1		;ブランキングセット

			return				;DBUF0はゼロブランキングしない



;
;			表示桁位置調整サブルーチン
;			データバッファへの準備ルーチンから呼ばれる事を想定
;
;			指定表示桁数になるまでバッファのデータを右シフトする
;			余った左側桁は「0」に書換える
;			はみ出た下位桁は破棄される
;
;		入力          DBUFx   調整処理するデータバッファ
;                   colum   設定表示桁数（ここでflgから設定される）
;		出力        DBUFx   調整処理されたデータバッファ
;		使用ワーク	
;                   colw0   桁位置ワーク
;

SPOS
			movf	flg,W
			andlw	0fh			;設定桁数
			movwf	colum
			movlw	07h
			subwf	colum,W		;バイトシフト回数設定
			btfsc	STATUS,C	;ボローなら処理開始
			return				;表示桁変更無で終了
			movf	colum,W		;バイトシフト回数設定
			sublw	07h			;W=07-W
			movwf	colw0
spos01		;1バイト右シフト
			movf	DBUF1,W		;DB1→DB0
			movwf	DBUF0

			movf	DBUF2,W		;DB2→DB1
			movwf	DBUF1

			movf	DBUF3,W		;DB3→DB2
			movwf	DBUF2

			movf	DBUF4,W		;DB4→DB3
			movwf	DBUF3

			movf	DBUF5,W		;DB5→DB4
			movwf	DBUF4

			movf	DBUF6,W		;DB6→DB5
			movwf	DBUF5

			movf	DBUF7,W		;DB7→DB6
			movwf	DBUF6

			movlw	0fh			;
			movwf	DBUF7		;ブランクセット

			decf	colw0,F
			btfss	STATUS,Z
			goto	spos01
			retlw	0h


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;			ドットを表示するか否かの処理ルーチン
;
;		入力	flg
;
;		出力	DBUFx,7=0		ドット点燈無
;		出力	DBUFx,7=1		ドット点燈有
;
;		flg
;			ドット表示位置		flg=x111xxxx
;							bit4=1	2,5桁点燈
;							bit5=1	3,6桁点燈
;							bit6=1	4,7桁点燈
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

ADDOT
			bcf		DBUF0,7		;ドット点灯ビットリセット
			bcf		DBUF1,7		;
			bcf		DBUF2,7		;
			bcf		DBUF3,7		;
			bcf		DBUF4,7		;
			bcf		DBUF5,7		;
			bcf		DBUF6,7		;
			bcf		DBUF7,7		;

			;2,5桁点燈指令チェック
			btfss	flg,4		;2,5点燈指令か？
			goto	adt2		;違うので次ビットチェック
			;2桁目点燈処理
			movf	DBUF1,W
			call	ckbrk
			iorlw	0h
			btfsc	STATUS,Z
			bsf		DBUF1,7		;2桁目ドット点燈
			;5桁目点燈処理
			movf	DBUF4,W
			call	ckbrk
			iorlw	0h
			btfsc	STATUS,Z
			bsf		DBUF4,7		;5桁目ドット点燈
			return

adt2		;3,6桁点燈指令チェック
			btfss	flg,5		;3,6点燈指令か？
			goto	adt4		;違うので次ビットチェック
			;3桁目点燈処理
			movf	DBUF2,W
			call	ckbrk
			iorlw	0h
			btfsc	STATUS,Z
			bsf		DBUF2,7		;3桁目ドット点燈
			;6桁目点燈処理
			movf	DBUF5,W
			call	ckbrk
			iorlw	0h
			btfsc	STATUS,Z
			bsf		DBUF5,7		;6桁目ドット点燈
			return

adt4		;4,7桁点燈指令チェック
			btfss	flg,6		;4,7点燈指令か？
			return				;点灯無終了
			;4桁点燈処理
			movf	DBUF3,W
			call	ckbrk
			iorlw	0h
			btfsc	STATUS,Z
			bsf		DBUF3,7		;4桁目ドット点燈
			;7桁目点燈処理
			movf	DBUF6,W
			call	ckbrk
			iorlw	0h
			btfsc	STATUS,Z
			bsf		DBUF6,7		;7桁目ドット点燈
			return


;
;		ブランキング処理済みかどうかチェック
;
;		入力	WregにDBUFxのデータ
;		出力	W=0、表示有効データあり
;			W=1、ブランク処理済み桁
;

ckbrk		;
			andlw	0fh
			movwf	tmp0
			incf	tmp0,F
			btfss	tmp0,4
			retlw	0h
			retlw	01h

;
;			Ｘ軸解像度＆ＬＰＦ表示付加サブルーチン
;
;		８桁目にＸ軸解像度表示を付加させる
;       16分割      "3"
;		32分割      "2"
;		64分割      "1"
;		128分割     "0"
;       ７桁目にＬＰＦの選択
;       高域用      "3"
;       中域用      "1"
;       低域用      "0"
;
;		注意		通常のバッファリングが終了してから呼び出す事
;				TBL現在表示		TBNO0
;                   TBNO0=0:TBL128
;                   TBNO0=1:TBL64
;                   TBNO0=2:TBL32
;                   TBNO0=3:TBL16
;				LPF現在表示		FLNO
;                   FLNO=0:低域フィルタ
;                   FLNO=1:中域フィルタ
;                   FLNO=2:高域フィルタ

addmod
            movf    TBNO0,W
            andlw   0fh
            movwf   DBUF7
            movf    FLNO,W
            andlw   0fh
            movwf   DBUF6
            return





;
;		8桁すべて表示させる
;		表示位置指定はできない
;		表示データは、バッファレジスタDBUFxに事前に準備必要
;
;		入力		DBUF0-DBUF7
;
;		番号は桁番号と一致、例)DBUF7=8桁目（最上位桁）
;
;	Bモード（デコード有）アドレッシング
;		上位	下位（D15-D0の16ビット)
;		x0H	xxH		NOP
;		x1H	00H-07H	0桁0-9表示（ドット無）
;		x1H	80H-87H	0桁0-9表示（ドット有）
;		x1H	*0H-*7H	*bit7=1でドット有、bit4-6は何でもいい
;		x1H	F0H-F7H	0桁0-9表示（ドット有）
;
;		x2H	**H-**H	1桁、下位7ビットは上記と同じ
;		x3H	**H-**H	2桁、下位7ビットは上記と同じ
;		x4H	**H-**H	4桁、下位7ビットは上記と同じ
;		x5H	**H-**H	5桁、下位7ビットは上記と同じ
;		x6H	**H-**H	6桁、下位7ビットは上記と同じ
;		x7H	**H-**H	7桁、下位7ビットは上記と同じ
;		x8H	**H-**H	8桁、下位7ビットは上記と同じ
;


PUTL
			movf	DBUF0,W		;桁データをレジスタに転送
			movwf	CMD0
			movlw	01h
			movwf	CMD1
			call	SEND_CMD

			movf	DBUF1,W
			movwf	CMD0
			incf	CMD1,F
			call	SEND_CMD

			movf	DBUF2,W
			movwf	CMD0
			incf	CMD1,F
			call	SEND_CMD

			movf	DBUF3,W
			movwf	CMD0
			incf	CMD1,F
			call	SEND_CMD

			movf	DBUF4,W
			movwf	CMD0
			incf	CMD1,F
			call	SEND_CMD

			movf	DBUF5,W
			movwf	CMD0
			incf	CMD1,F
			call	SEND_CMD

			movf	DBUF6,W
			movwf	CMD0
			incf	CMD1,F
			call	SEND_CMD

			movf	DBUF7,W
			movwf	CMD0
			incf	CMD1,F
			call	SEND_CMD

			return



;
;		8桁すべてブランク表示とする
;
BRKL
			movlw	0fh			;ブランクコマンド
			movwf	CMD0
			movlw	01h
			movwf	CMD1
			call	SEND_CMD
			incf	CMD1,F
			call	SEND_CMD
			incf	CMD1,F
			call	SEND_CMD
			incf	CMD1,F
			call	SEND_CMD
			incf	CMD1,F
			call	SEND_CMD
			incf	CMD1,F
			call	SEND_CMD
			incf	CMD1,F
			call	SEND_CMD
			incf	CMD1,F
			call	SEND_CMD
			return


;
;		MAX2719　コマンドパケット送出サブルーチン
;
;		事前にCMD0、CMD1に命令コードを入れておくこと
;		CMDxのデータは保存される
;
;		RC3=DATA(DIN)
;		RC4=LATCH(LOAD)
;		RC5=CLOCK(CLK)
;
;		パケット送出シークェンス（１コマンドパケットは１６ビット幅)
;		(1)CLK=0、LOAD=0
;		(2)DINにデータビットをセット（bit15からbit0へ順番にセット)
;		(3)CLK=L→HでDINのデータビットはシフトレジスタにロードされる
;		(4)CLK=H→Lにして、(2)に行く、これを16回繰り返す
;		(5)LOAD=L→Hで16bitのシフトレジスタ内容がラッチされる
;		(6)CLK=0、LOAD=0にして終了
;
;		使用ワーク
;			CMD0	命令コード下位8ビット
;			CMD1	命令コード上位8ビット
;			tmp0	カウントワーク
;			tmp1	コマンドワーク

SEND_CMD
			bcf		PORTC,5		;CLK=0
			nop
			bcf		PORTC,4		;LOAD=0
			movf	CMD1,W
			movwf	tmp1		;上位8ビット送出データ
			call	sendbt
			movf	CMD0,W
			movwf	tmp1		;下位8ビット送出データ
			call	sendbt

;			ラッチパルス送出して終了
			bsf		PORTC,4		;LOAD=1
			call	w01u
			bcf		PORTC,4		;LOAD=0
			call	w01u
			return

sendbt		;シフトレジスタに8ビット分送出、ラッチはしない
			movlw	08h			;8ビット分
			movwf	tmp0		;カウンタ
sbtlp		lslf	tmp1,F		;C=MSB
			btfsc	STATUS,C
			goto	sbt01

sbt00		;DATA=0送出
			bcf		PORTC,3		;DIN=0
			call	w01u		;ウエイト1us
			bsf		PORTC,5		;CLK=1
			call	w01u		;ウエイト1us
			bcf		PORTC,5		;CLK=0
			goto	sbten

sbt01		;DATA=1送出
			bsf		PORTC,3		;DIN=1
			call	w01u		;ウエイト1us
			bsf		PORTC,5		;CLK=1
			call	w01u		;ウエイト1us
			bcf		PORTC,5		;CLK=0

sbten		;
			decfsz	tmp0,F
			goto	sbtlp		;残ビットチェック
			call	w01u		;ウエイト1us
			return


;
;		Wregの8ビットデータを送信し、ラッチはしない
;
;		これによりMAX2719シフトレジスタの上位8ビットに転送される
;		それまでの上位8ビットデータは下位8ビットにシフトする。
;		旧下位8ビットデータはDOUTから破棄されます。
;		MAX2719は何の反応もしない
;
;		RC3=DATA(DIN)
;		RC4=LATCH(LOAD)
;		RC5=CLOCK(CLK)
;
;		使用変数	wrk0、wrk1
;

PUTW
			movwf	wrk0		;送信8ビットデータ
			movlw	08h			;8ビット分送出カウンタ
			movwf	wrk1		;カウンタ
			bcf		PORTC,5		;CLK=0
			nop
			bcf		PORTC,4		;LOAD=0
ptwlp
			lslf	wrk0,F		;C=LSB
			btfsc	STATUS,C
			goto	ptw01

ptw00		;DATA=0送出
			bcf		PORTC,3		;DIN=0
			call	w01u		;ウエイト1usec
			bsf		PORTC,5		;CLK=1
			call	w01u		;ウエイト1usec
			bcf		PORTC,5		;CLK=0
			goto	ptwen

ptw01		;DATA=1送出
			bsf		PORTC,3		;DIN=1
			call	w01u		;ウエイト1usec
			bsf		PORTC,5		;CLK=1
			call	w01u		;ウエイト1usec
			bcf		PORTC,5		;CLK=0

ptwen		;
			decfsz	wrk1,F
			goto	ptwlp		;残ビット有
			return


;			ラッチパルス送出
;
;			コールするだけでOK
;
PTLAT		bsf		PORTC,4		;LOAD=1
			call	w01u
			bcf		PORTC,4		;LOAD=0
			call	w01u
			return


;
;			32ビットバイナリ10倍演算(符号無整数)
;
;		入力	hex(0-3)	32ビット
;		出力　hex(0-3)
;
;		使用ワーク	hexw0-3	4バイト
;

MLT32_X10
;			データ保存
			movf	hex0,W
			movwf	hexw0
			movf	hex1,W
			movwf	hexw1
			movf	hex2,W
			movwf	hexw2
			movf	hex3,W
			movwf	hexw3

;			32ビットデータを8倍
			bcf		STATUS,C	;
			rlf		hex0,F		;2倍を3回実行する
			rlf		hex1,F
			rlf		hex2,F
			rlf		hex3,F
			bcf		STATUS,C	;
			rlf		hex0,F
			rlf		hex1,F
			rlf		hex2,F
			rlf		hex3,F
			bcf		STATUS,C
			rlf		hex0,F
			rlf		hex1,F
			rlf		hex2,F
			rlf		hex3,F

			call	add32b		;元データを加算
			call	add32b


			btfss	STATUS,C	;オーバーフローか？
			retlw   0h
            retlw   01h

;
;       16ビットバイナリ　4倍演算（符号無整数)
;
;       hex0,hex1=(hex0,hex1)*2
;	W=0の時、正常終了
;	W=1の時、エラー発生、演算結果は保障されない
;
MLT16_X4
            bcf     STATUS,C    ;Cフラグクリア
            rlf     hex0,F      ;左ローテート（下位8ビット×２）
            rlf     hex1,F      ;左ローテート（上位8ビット×２）
            btfsc   STATUS,C
            retlw   01h         ;演算オーバーフロー発生
            rlf     hex0,F      ;左ローテート（下位8ビット×２）
            rlf     hex1,F      ;左ローテート（上位8ビット×２）
            btfss   STATUS,C
            retlw   0h          ;演算正常終了
            retlw   01h         ;演算オーバーフロー発生


;			32ビットバイナリ加算(整数符号無）
;
;		事前に(hex0-3)、(hexw0-3)に数値を入れておく事
;		演算結果でエラー(桁上がり）が発生しても対処はしない
;
;		演算
;		hex(0-3) = hex(0-3) + hexw(0-3)
;

add32b
			movf	hexw0,W		;hex0=hex0+hexw0
			addwf	hex0,F		;桁上がりでC=1
			movlw	01h			;この命令はフラグ変化しない
			btfss	STATUS,C	;if c=1 then hex1=hex1+1
			goto	ad31		;桁上がり無
;			(hex0+W)に桁上がり発生、処理
			addwf	hex1,F		;hex1=hex1+1
			btfsc	STATUS,C	;桁上がり無なら、goto ad31
			addwf	hex2,F		;桁上がり発生、hex2=hex2+1
			btfsc	STATUS,C	;桁上がり無なら、goto ad31
			addwf	hex3,F		;桁上がり発生、hex3=hex3+1
								;ここで桁上がり発生しても対処しない
ad31		movf	hexw1,W
			addwf	hex1,F
			movlw	01h
			btfsc	STATUS,C
			addwf	hex2,F
			btfsc	STATUS,C
			addwf	hex3,F

ad32		movf	hexw2,W
			addwf	hex2,F
			movlw	01h
			btfsc	STATUS,C
			addwf	hex3,F
			movf	hexw3,W
			addwf	hex3,F
			retlw	0h


;
;
;			32ビットバイナリ減算(整数符号無)
;
;		事前にhex(0-3)、hexw(0-3)に数値を入れておく事
;		演算結果でエラー(マイナス）の場合W=1、OKの時はW=0でリターン
;		W=1の場合、演算結果は保障されない
;
;		演算
;		hex(0-3) = hex(0-3) - hexw(0-3)
;

sub32b
;			hex0-hexw0の減算
			movf	hexw0,W		;hex0=hex0-W(hexw0)
			subwf	hex0,F		;W>HEX0の時、ボロー(C=0)
								;W<=HEX0の時、無(C=1)
			movlw	01h			;この命令はフラグ変化しない
			btfss	STATUS,C	;C=1なら、hex1-hexw1へ
;			(hex0-W)にボロー発生、hex1に桁借り処理
			subwf	hex1,F		;hex1=hex1-1
			btfss	STATUS,C	;C=1なら、goto sb31
			subwf	hex2,F		;(hex1-1)にボロー発生、hex2に桁借り
			btfss	STATUS,C	;C=1なら、goto sb31
			subwf	hex3,F		;(hex2-1）ボロー発生、hex3に桁借り
			btfss	STATUS,C
			retlw	01h			;hex3にボロー発生、エラー終了

;			hex1-hexw1の減算
sb31		movf	hexw1,W		;
			subwf	hex1,F
			movlw	01h
			btfss	STATUS,C
			subwf	hex2,F
			btfss	STATUS,C
			subwf	hex3,F
			btfss	STATUS,C
			retlw	01h
;			hex2-hexw2の減算
			movf	hexw2,W
			subwf	hex2,F
			movlw	01h
			btfss	STATUS,C
			subwf	hex3,F
			btfss	STATUS,C
			retlw	01h
;			hex3-hexw3の減算
			movf	hexw3,W
			subwf	hex3,F
			btfss	STATUS,C
			retlw	01h
			retlw	0h

;		16ビットバイナリ加算
;	hex(0-1)=hex(0-1)+hexw(0-1)
;	W=0の時、正常終了
;	W=1の時、エラー発生（キャリー）、演算結果は保障されない
add16b
			movf	hexw0,W		;W=hexw0
			addwf	hex0,F		;hex0=hex0+hexw0
			btfss	STATUS,C
			goto	ad11		;キャリー無で次の加算
			incf	hex1,F		;キャリー発生、hex1=hex1+1
			btfsc	STATUS,C
			retlw	01h			;キャリー発生、加算エラー終了
ad11		movf	hexw1,W		;W=hexw1
			addwf	hex1,F		;hex1=hex1+hexw1
			btfsc	STATUS,C
			retlw	01h			;キャリー発生、加算エラー終了
			retlw	0h			;加算正常終了


;		16ビットバイナリ減算
;	hex(0-1)=hex(0-1)-hexw(0-1)
;	W=0の時、正常終了
;	W=1の時、エラー発生（ボロー）、演算結果は保障されない
sub16b
			movf	hexw0,W		;W=hexw0
			subwf	hex0,F		;hex0=hex0-hexw0
			movlw	01h			;フラグ変化しない
			btfsc	STATUS,C
			goto	sb11		;ボロー無で次の減算
			subwf	hex1,F		;ボロー発生、hex1=hex1-1
			btfss	STATUS,C
			retlw	01h			;ボロー発生、減算エラー終了

sb11		movf	hexw1,W		;W=hexw1
			subwf	hex1,F		;hex1=hex1-hexw1
			btfss	STATUS,C
			retlw	01h			;ボロー発生、減算エラー終了
			retlw	0h			;減算正常終了


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;		４バイトバイナリの10桁BCDへの変換
;		MicroChip社のアプリケーションノートより
;
;		入力		4バイト(32ビット)16進バイナリ
;				hex0
;				hex1
;				hex2
;				hex3
;
;		出力		5バイト(10桁)ＢＣＤ
;				digit12
;				digit34
;				digit56
;				gidit78
;				gidit9A
;
;		使用ワーク
;				hexw0	入力データ保存用
;				hexw1
;				hexw2
;				hexw3
;				shift	シフトカウンタ
;				bcdw0	補正処理ワーク
;				bcdw1
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BCD
			BCF		STATUS,C	;キャリーリセット
			MOVLW	020H		;シフトカウンタ初期化
			MOVWF	shift		;4バイト分32回の指定
			CLRF	digit12		;BCDデータエリア初期化
			CLRF	digit34
			CLRF	digit56
			CLRF	digit78
			CLRF	digit9A
			movf	hex0,W
			movwf	hexw0
			movf	hex1,W
			movwf	hexw1
			movf	hex2,W
			movwf	hexw2
			movf	hex3,W
			movwf	hexw3

			;変換ループ処理
loop
			RLF		hexw0,F		;16進データ左シフト
			RLF		hexw1,F
			RLF		hexw2,F
			RLF		hexw3,F
			RLF		digit12,F	;BCDデータ左シフト
			RLF		digit34,F
			RLF		digit56,F
			RLF		digit78,F
			RLF		digit9A,F
			DECFSZ	shift,F		;
			GOTO	adjst		;BCD調整処理へ
			RETURN

			;BCDデータ全桁補正処理
adjst
			MOVF	digit12,W	;digit12
			CALL	adjbcd
			MOVWF	digit12
			MOVF	digit34,W	;digit34
			CALL	adjbcd
			MOVWF	digit34
			MOVF	digit56,W	;digit56
			CALL	adjbcd
			MOVWF	digit56
			MOVF	digit78,W	;digit78
			CALL	adjbcd
			MOVWF	digit78
			MOVF	digit9A,W	;digit9A
			CALL	adjbcd
			MOVWF	digit9A
			GOTO	loop

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;			1バイト2桁分必要に応じて+3補正処理
;
;			入力		W_reg
;			出力		W_reg
;
;			使用ワーク	bcdw0
;					bcdw1
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
adjbcd
			MOVWF	bcdw0		;元データをbcdw0に保存
			MOVLW	3			;W=3
			ADDWF	bcdw0,W		;W=3+bcdw0
			MOVWF	bcdw1		;下桁を+3した上下桁をbcdw1に保存
			BTFSC	bcdw1,3		;if 下桁<7 then next_skip
			MOVWF	bcdw0		;下桁を+3した上下桁をbcdw0に保存

			MOVLW	030H		;W+30
			ADDWF	bcdw0,W		;W=上桁+3
			MOVWF	bcdw1		;それをいったんbcdw1に保存
			BTFSC	bcdw1,7		;if 上桁<7 then next_skip
			MOVWF	bcdw0		;上桁を+3した上下桁をbcdw0に保存
			MOVF	bcdw0,W		;W_regに入れてリターン
			RETURN






;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;			遅延時間サブルーチン	32MHZ用
;
;		1cycle	= 0.125us
;		使用レジスタ	= cnt2,cnt3
;		BSR		=0(BANK0)
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

wait100u						;呼び出しも含めて、100us
								;call is 2cycles
			movlw	09h			;1
			movwf	cnt2		;1
			movlb	0h
			nop
			nop					;3
w100u		nop					;
			call	w10u		;10*9=90us(ここだけ命令ステップを数えない）
			decfsz	cnt2,F		;4*8+3=31cycles
			goto	w100u
			return				;2+5+31+2=40cycles=20us

wait50u							;呼び出しも含めて、50us
			call	wait25u
wait25u							;呼び出しも含めて、25us
			call	w10u
			call	w10u
			movlw	0bh			;5us=0.125us*40cycles
			movwf	cnt2		;
w25u		decfsz	cnt2,F		;ループ 2+10*3+2=34cycles
			goto	w25u
			nop
			nop
			return				;2+34+2+2=40cycles=5us

wait5m							; 5ms
			movlb	0h
			movlw	05h
			movwf	cnt2
w5m			call	w1m
			decfsz	cnt2,F
			goto	w5m
			return

wait10m							; 10ms
			movlb	0h
			movlw	d'10'
			movwf	cnt2
w10m		call	w1m
			decfsz	cnt2,F
			goto	w10m
			return

wait20m							; 20ms
			movlb	0h
			movlw	d'20'
			movwf	cnt2
w20m		call	w1m
			decfsz	cnt2,F
			goto	w20m
			return
wait50m							; 50ms
			movlb	0h
			movlw	d'50'
			movwf	cnt2
w50m		call	w1m
			decfsz	cnt2,F
			goto	w50m
			return

wait100m						; 100ms
			movlb	0h
			movlw	d'100'
			movwf	cnt2
w100m		call	w1m
			decfsz	cnt2,F
			goto	w100m
			return

wait500m						; 500ms
			movlb	0h
			movlw	05h
			movwf	cnt3
w500m		call	wait100m
			decfsz	cnt3,F
			goto	w500m
			return

wait1s							; 1s
			movlb	0h
			movlw	d'10'
			movwf	cnt3
w1s			call	wait100m
			decfsz	cnt3,F
			goto	w1s
			return

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;			1ms 基本ウェイト
;			呼び出しを含めて1msとなる。
;
;		clock	= 32MHz(0.03125usec)
;		1cycle	= 0.125usec
;		1ms		= 0.125usec * 8000cycles
;
;			使用変数　cnt0,cnt1
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
w1m
			movlb	0h
			movlw	08h
			movwf	cnt0		;
;			外周ループ
w1m0		movlw	0c7h		;199d
			movwf	cnt1		;
;			内周ループ
w1m1		nop					;
			nop					;5cycles*cnt1
			decfsz	cnt1,F		;2+5*198+4=996c/s
			goto	w1m1		;
;
			decfsz	cnt0,F		;
			goto	w1m0		;2+7*999+998=7993cycles
			nop
			return					;other=(3+4)cycles
									;Total 8000*0.125us=1ms


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;			10us 基本ウェイト
;			呼び出し（call　w10u)も含めて、10usとなる。
;
;		clock	= 32MHZ(0.03125us)
;		1cycle	= 0.125us
;		10us	= 0.125us * 80cycles
;		使用変数　cnt0,cnt1
;		'goto','call','return'は2サイクル消費する
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

w10u
			movlb	0h
			movlw	018h		;18H=24
			movwf	cnt0		;
w10u0		decfsz	cnt0,F		;3*23+2=71
			goto	w10u0		;
			nop
			nop
			return				;2+3+71+2+2=80cycles

w05u
			movlw	0bh			;5us=0.125us*40cycles
			movwf	cnt0		;
w05u0		decfsz	cnt0,F		;ループ 2+3*10+2=34cycles
			goto	w05u0
			nop
			nop
			return				;2+34+2+2=40cycles=5us

w02u
			movlw	04h			;2us=0.125us*16cycles
			movwf	cnt0		;
w02u0		decfsz	cnt0,F		;2+3*3+2+1+2=16cycles
			goto	w02u0
			nop
			return				;
w01u
			nop					;1us=0.125us*8cycles
			nop					;2+4+2=8cycles
			nop
			nop
			return

;



;以下データエリア　0800HからのPAGE02を使用


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;			DAC1用疑似サイン波データテーブル
;                           Ver1.0 JUL/2015 JA0QON
;
;	注意		FSR1にアクセスするアドレスを設定
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;       X軸=16用　FSR1=8800H
TBL16       ORG     0800h
			DW      00h		;0
			DW      0ah		;1
			DW      025h	;2
			DW      04eh	;3
			DW      07fh	;4
			DW      0b0h	;5
			DW      0d9h	;6
			DW      0f4h	;7

			DW      0feh	;8
			DW      0f4h	;9
			DW      0d9h	;A
			DW      0b0h	;B
			DW      07fh	;C
			DW      04eh	;D
			DW      025h	;E
			DW      0ah		;F
			DW      00h		;10



;       X軸=32用　FSR1=8820H
TBL32       ORG		0820h
			DW      00h		;0
			DW      02h		;1
			DW      0ah		;2
			DW      015h	;3
			DW      025h	;4
			DW      038h	;5
			DW      04eh	;6
			DW      066h	;7
			DW      07fh	;8
			DW      098h	;9
			DW      0b0h	;A
			DW      0c6h	;B
			DW      0d9h	;C
			DW      0e9h	;D
			DW      0f4h	;E
			DW      0fch	;F

			DW      0feh	;10
			DW      0fch	;11
			DW      0f4h	;12
			DW      0e9h	;13
			DW      0d9h	;14
			DW      0c6h	;15
			DW      0b0h	;16
			DW      098h	;17
			DW      07fh	;18
			DW      066h	;19
			DW      04eh	;1A
			DW      038h	;1B
			DW      025h	;1C
			DW      015h	;1D
			DW      0ah		;1E
			DW      02h		;1F
			DW      00h		;20

;       X軸=64用　FSR1=8850H
TBL64       ORG     0850h
			DW      00h		;00
			DW      01h     ;01
			DW      02h		;02
			DW      05h		;03
			DW      0ah     ;04
			DW      0fh     ;05
			DW      015h    ;06
			DW      01dh	;07
			DW      025h	;08
			DW      02eh	;09
			DW      038h	;0A
			DW      043h	;0B
			DW      04eh	;0C
			DW      05ah	;0D
			DW      066h	;0E
			DW      073h	;0F

			DW      07fh	;10
			DW      08bh	;11
			DW      098h	;12
			DW      0a4h	;13
			DW      0b0h	;14
			DW      0bbh	;15
			DW      0c6h	;16
			DW      0d0h	;17
			DW      0d9h	;18
			DW      0e1h	;19
			DW      0e9h	;1A
			DW      0efh	;1B
			DW      0f4h	;1C
			DW      0f9h	;1D
			DW      0fch    ;1E
			DW      0fdh	;1F

			DW      0feh	;20
			DW      0fdh	;21
			DW      0fch	;22
			DW      0f9h	;23
			DW      0f4h	;24
			DW      0efh	;25
			DW      0e9h	;26
			DW      0e1h	;27
			DW      0d9h	;28
			DW      0d0h	;29
			DW      0c6h	;2A
			DW      0bbh	;2B
			DW      0b0h	;2C
			DW      0a4h	;2D
			DW      098h	;2E
			DW      08bh	;2F

			DW      07fh	;30
			DW      073h	;31
			DW      066h	;32
			DW      05ah	;33
			DW      04eh	;34
			DW      043h	;35
			DW      038h	;36
			DW      02eh	;37
			DW      025h	;38
			DW      01dh	;39
			DW      015h	;3A
			DW      0fh 	;3B
			DW      0ah     ;3C
			DW      05h     ;3D
			DW      02h		;3E
			DW      01h     ;3F
			DW      0h		;40


;       X軸=128用　FSR1=8900H
TBL128      ORG     0900h
			DW      00h		;00
			DW      00h     ;01
			DW      01h		;02
			DW      01h		;03
			DW      02h     ;04
			DW      04h     ;05
			DW      05h     ;06
			DW      07h 	;07
			DW      0ah 	;08
			DW      0ch 	;09
			DW      0fh 	;0A
			DW      012h	;0B
			DW      015h	;0C
			DW      019h	;0D
			DW      01dh	;0E
			DW      021h	;0F

			DW      025h	;10
			DW      02ah    ;11
			DW      02eh	;12
			DW      033h	;13
			DW      038h    ;14
			DW      03eh    ;15
			DW      043h    ;16
			DW      049h	;17
			DW      04eh	;18
			DW      054h	;19
			DW      05ah	;1A
			DW      060h	;1B
			DW      066h	;1C
			DW      06ch	;1D
			DW      073h	;1E
			DW      078h	;1F

			DW      07fh	;20
			DW      085h	;21
			DW      08bh	;22
			DW      092h	;23
			DW      098h	;24
			DW      09eh	;25
			DW      0a4h	;26
			DW      0aah	;27
			DW      0b0h	;28
			DW      0b5h	;29
			DW      0bbh	;2A
			DW      0c0h	;2B
			DW      0c6h	;2C
			DW      0cbh	;2D
			DW      0d0h    ;2E
			DW      0d4h	;2F

			DW      0d9h	;30
			DW      0ddh	;31
			DW      0e1h	;32
			DW      0e5h	;33
			DW      0e9h	;34
			DW      0ech	;35
			DW      0efh	;36
			DW      0f2h	;37
			DW      0f4h	;38
			DW      0f7h	;39
			DW      0f9h	;3A
			DW      0fah	;3B
			DW      0fch	;3C
			DW      0fdh	;3D
			DW      0fdh    ;3E
			DW      0feh	;3F

			DW      0feh	;40
			DW      0feh	;41
			DW      0feh	;42
			DW      0fdh	;43
			DW      0fch	;44
			DW      0fah	;45
			DW      0f9h	;46
			DW      0f7h	;47
			DW      0f4h	;48
			DW      0f2h	;49
			DW      0efh	;4A
			DW      0ech	;4B
			DW      0e9h	;4C
			DW      0e5h	;4D
			DW      0e1h	;4E
			DW      0ddh	;4F

			DW      0d9h	;50
			DW      0d4h	;51
			DW      0d0h	;52
			DW      0cbh	;53
			DW      0c6h	;54
			DW      0c0h	;55
			DW      0bbh	;56
			DW      0b5h	;57
			DW      0b0h	;58
			DW      0aah	;59
			DW      0a4h	;5A
			DW      09eh	;5B
			DW      098h	;5C
			DW      092h	;5D
			DW      08bh	;5E
			DW      085h	;5F

			DW      07fh	;60
			DW      078h	;61
			DW      073h	;62
			DW      06ch	;63
			DW      066h	;64
			DW      060h	;65
			DW      05ah	;66
			DW      054h	;67
			DW      04eh	;68
			DW      049h	;69
			DW      043h	;6A
			DW      03eh 	;6B
			DW      038h    ;6C
			DW      033h    ;6D
			DW      02eh	;6E
			DW      02ah    ;6F

			DW      025h	;70
			DW      021h	;71
			DW      01dh	;72
			DW      019h	;73
			DW      015h	;74
			DW      012h	;75
			DW      0fh 	;76
			DW      0ch 	;77
			DW      0ah 	;78
			DW      07h 	;79
			DW      05h 	;7A
			DW      04h 	;7B
			DW      02h     ;7C
			DW      01h     ;7D
			DW      01h		;7E
			DW      0h      ;7F
			DW      0h		;80

;
;           周波数データ配列テーブル　Ｖｅｒ１．０
;                                   JUL/2015 JA0QON
;
;       データ配列フォーマット
;       WORD 0  DCR     TMR0値
;       WORD 1  FRQ0    表示周波数データ下位8ビット
;       WORD 2  FRQ1    表示周波数データ上位8ビット
;       WORD 3  TB/PS   下位4ビット　PS値
;                       1000:PS=0
;                       0000:PS=1/2
;                       0001:PS=1/4
;                       0010:PS=1/8
;                       0011:PS=1/16
;                       0100:PS=1/32
;                       上位4ビット　DACデータテーブル
;                       0000:TBL128
;                       0001:TBL64
;                       0010:TBL32
;                       0011:TBL16

           ORG     0A00h

F0000       ;FRQ=10HZ
            DW      .61         ;TMR0=61
            DW      0ah         ;FRQ0
            DW      0h          ;FRQ1,FRQ=10
            DW      04h         ;TBL=128/PS=32
F0001       ;FRQ=11HZ
            DW      .79         ;TMR0=79
            DW      0bh         ;FRQ0
            DW      0h          ;FRQ1,FRQ=11
            DW      04h         ;TBL=128/PS=32
F0002       ;FRQ=12HZ
            DW      .94         ;TMR0=94
            DW      0ch         ;FRQ0
            DW      0h          ;FRQ1,FRQ=12
            DW      04h         ;TBL=128/PS=32
F0003       ;FRQ=13HZ
            DW      .106        ;TMR0=106
            DW      0dh         ;FRQ0
            DW      0h          ;FRQ1,FRQ=13
            DW      04h         ;TBL=128/PS=32
F0004       ;FRQ=14HZ
            DW      .117        ;TMR0
            DW      0eh         ;FRQ0
            DW      0h          ;FRQ1,FRQ=14
            DW      04h         ;TBL=128/PS=32
F0005       ;FRQ=15HZ
            DW      .126        ;TMR0
            DW      0fh         ;FRQ0
            DW      0h          ;FRQ1,FRQ=15
            DW      04h         ;TBL=128/PS=32
F0006       ;FRQ=16HZ
            DW      .13         ;TMR0
            DW      010h        ;FRQ0
            DW      0h          ;FRQ1,FRQ=16
            DW      03h         ;TBL=128/PS=16
F0007       ;FRQ=17HZ
            DW      .27         ;TMR0
            DW      011h        ;FRQ0
            DW      0h          ;FRQ1,FRQ=17
            DW      03h         ;TBL=128/PS=16
F0008       ;FRQ=18HZ
            DW      .40         ;TMR0
            DW      012h        ;FRQ0
            DW      0h          ;FRQ1
            DW      03h         ;TBL=128/PS=16
F0009       ;FRQ=19HZ
            DW      .52         ;TMR0
            DW      013h        ;FRQ0
            DW      0h          ;FRQ1
            DW      03h         ;TBL=128/PS=16
F0010       ;FRQ=20HZ
            DW      .62         ;TMR0
            DW      014h        ;FRQ0
            DW      0h          ;FRQ1
            DW      03h         ;TBL=128/PS=16
F0011       ;FRQ=21HZ
            DW      .72         ;TMR0
            DW      015h        ;FRQ0
            DW      0h          ;FRQ1
            DW      03h         ;TBL=128/PS=16
F0012       ;FRQ=22HZ
            DW      .80         ;TMR0
            DW      016h        ;FRQ0
            DW      0h          ;FRQ1
            DW      03h         ;TBL=128/PS=16
F0013       ;FRQ=23HZ
            DW      .87         ;TMR0
            DW      017h        ;FRQ0
            DW      0h          ;FRQ1
            DW      03h         ;TBL=128/PS=16
F0014       ;FRQ=24HZ
            DW      .94         ;TMR0
            DW      018h        ;FRQ0
            DW      0h          ;FRQ1
            DW      03h         ;TBL=128/PS=16
F0015       ;FRQ=25HZ
            DW      .101        ;TMR0
            DW      019h        ;FRQ0
            DW      0h          ;FRQ1
            DW      03h         ;TBL=128/PS=16
F0016       ;FRQ=26HZ
            DW      .107        ;TMR0
            DW      01ah        ;FRQ0
            DW      0h          ;FRQ1
            DW      03h         ;TBL=128/PS=16
F0017       ;FRQ=27HZ
            DW      .112        ;TMR0
            DW      01bh        ;FRQ0
            DW      0h          ;FRQ1
            DW      03h         ;TBL=128/PS=16
F0018       ;FRQ=28HZ
            DW      .118        ;TMR0
            DW      01ch        ;FRQ0
            DW      0h          ;FRQ1
            DW      03h         ;TBL=128/PS=16
F0019       ;FRQ=29HZ
            DW      .122        ;TMR0
            DW      01dh        ;FRQ0
            DW      0h          ;FRQ1
            DW      03h         ;TBL=128/PS=16
F0020       ;FRQ=30HZ
            DW      .127        ;TMR0
            DW      01eh        ;FRQ0
            DW      0h          ;FRQ1
            DW      03h         ;TBL=128/PS=16
F0021       ;FRQ=31HZ
            DW      .6          ;TMR0
            DW      01fh        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0022       ;FRQ=32HZ
            DW      .14         ;TMR0
            DW      020h        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0023       ;FRQ=33HZ
            DW      .22         ;TMR0
            DW      021h        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0024       ;FRQ=34HZ
            DW      .28         ;TMR0
            DW      022h        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0025       ;FRQ=35HZ
            DW      .35         ;TMR0
            DW      023h        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0026       ;FRQ=36HZ
            DW      .41         ;TMR0
            DW      024h        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0027       ;FRQ=37HZ
            DW      .47         ;TMR0
            DW      025h        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0028       ;FRQ=38HZ
            DW      .53         ;TMR0
            DW      026h        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0029       ;FRQ=39HZ
            DW      .58         ;TMR0
            DW      027h        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0030       ;FRQ=40HZ
            DW      .63         ;TMR0
            DW      028h        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0031       ;FRQ=41HZ
            DW      .68         ;TMR0
            DW      029h        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0032       ;FRQ=42HZ
            DW      .72         ;TMR0
            DW      02ah        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0033       ;FRQ=43HZ
            DW      .77         ;TMR0
            DW      02bh        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0034       ;FRQ=44HZ
            DW      .80         ;TMR0
            DW      02ch        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0035       ;FRQ=45HZ
            DW      .85         ;TMR0
            DW      02dh        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0036       ;FRQ=46HZ
            DW      .88         ;TMR0
            DW      02eh        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0037       ;FRQ=47HZ
            DW      .92         ;TMR0
            DW      02fh        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0038       ;FRQ=48HZ
            DW      .95          ;TMR0
            DW      030h        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0039       ;FRQ=49HZ
            DW      .99         ;TMR0
            DW      031h        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0040       ;FRQ=50HZ
            DW      .102        ;TMR0
            DW      032h        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0041       ;FRQ=51HZ
            DW      .105        ;TMR0
            DW      033h        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0042       ;FRQ=52HZ
            DW      .108        ;TMR0
            DW      034h        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0043       ;FRQ=53HZ
            DW      .111        ;TMR0
            DW      035h        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0044       ;FRQ=54HZ
            DW      .114        ;TMR0
            DW      036h        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0045       ;FRQ=55HZ
            DW      .116        ;TMR0
            DW      037h        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0046       ;FRQ=56HZ
            DW      .119        ;TMR0
            DW      038h        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0047       ;FRQ=57HZ
            DW      .121        ;TMR0
            DW      039h        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0048       ;FRQ=58HZ
            DW      .124        ;TMR0
            DW      03ah        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0049       ;FRQ=59HZ
            DW      .126        ;TMR0
            DW      03bh        ;FRQ0
            DW      0h          ;FRQ1
            DW      02h         ;TBL=128/PS=8
F0050       ;FRQ=60HZ
            DW      .0          ;TMR0
            DW      03ch        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0051       ;FRQ=61HZ
            DW      .4          ;TMR0
            DW      03dh        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0052       ;FRQ=62HZ
            DW      .8          ;TMR0
            DW      03eh        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0053       ;FRQ=63HZ
            DW      .12         ;TMR0
            DW      03fh        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0054       ;FRQ=64HZ
            DW      .16         ;TMR0
            DW      040h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0055       ;FRQ=65HZ
            DW      .20         ;TMR0
            DW      041h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0056       ;FRQ=66HZ
            DW      .24         ;TMR0
            DW      042h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0057       ;FRQ=67HZ
            DW      .27         ;TMR0
            DW      043h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0058       ;FRQ=68HZ
            DW      .31         ;TMR0
            DW      044h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0059       ;FRQ=69HZ
            DW      .34         ;TMR0
            DW      045h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0060       ;FRQ=70HZ
            DW      .37         ;TMR0
            DW      046h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0061       ;FRQ=71HZ
            DW      .40         ;TMR0
            DW      047h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0062       ;FRQ=72HZ
            DW      .43         ;TMR0
            DW      048h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0063       ;FRQ=73HZ
            DW      .46         ;TMR0
            DW      049h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0064       ;FRQ=74HZ
            DW      .49         ;TMR0
            DW      04ah        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0065       ;FRQ=75HZ
            DW      .52         ;TMR0
            DW      04bh        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0066       ;FRQ=76HZ
            DW      .55         ;TMR0
            DW      04ch        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0067       ;FRQ=77HZ
            DW      .58         ;TMR0
            DW      04dh        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0068       ;FRQ=78HZ
            DW      .60         ;TMR0
            DW      04eh        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0069       ;FRQ=79HZ
            DW      .63         ;TMR0
            DW      04fh        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0070       ;FRQ=80HZ
            DW      .65         ;TMR0
            DW      050h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0071       ;FRQ=81HZ
            DW      .68         ;TMR0
            DW      051h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0072       ;FRQ=82HZ
            DW      .70         ;TMR0
            DW      052h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0073       ;FRQ=83HZ
            DW      .72         ;TMR0
            DW      053h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0074       ;FRQ=84HZ
            DW      .74         ;TMR0
            DW      054h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0075       ;FRQ=85HZ
            DW      .77         ;TMR0
            DW      055h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0076       ;FRQ=86HZ
            DW      .79         ;TMR0
            DW      056h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0077       ;FRQ=87HZ
            DW      .81         ;TMR0
            DW      057h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0078       ;FRQ=88HZ
            DW      .83         ;TMR0
            DW      058h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0079       ;FRQ=89HZ
            DW      .85         ;TMR0
            DW      059h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0080       ;FRQ=90HZ
            DW      .87         ;TMR0
            DW      05ah        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0081       ;FRQ=91HZ
            DW      .89         ;TMR0
            DW      05bh        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0082       ;FRQ=92HZ
            DW      .91         ;TMR0
            DW      05ch        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0083       ;FRQ=93HZ
            DW      .92         ;TMR0
            DW      05dh        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0084       ;FRQ=94HZ
            DW      .94         ;TMR0
            DW      05eh        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0085       ;FRQ=95HZ
            DW      .96         ;TMR0
            DW      05fh        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0086       ;FRQ=96HZ
            DW      .98         ;TMR0
            DW      060h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0087       ;FRQ=97HZ
            DW      .99         ;TMR0
            DW      061h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0088       ;FRQ=98HZ
            DW      .101        ;TMR0
            DW      062h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0089       ;FRQ=99HZ
            DW      .103        ;TMR0
            DW      063h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0090       ;FRQ=100HZ
            DW      .104        ;TMR0
            DW      064h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0091       ;FRQ=101HZ
            DW      .106        ;TMR0
            DW      065h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0092       ;FRQ=102HZ
            DW      .107        ;TMR0
            DW      066h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0093       ;FRQ=103HZ
            DW      .109        ;TMR0
            DW      067h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0094       ;FRQ=104HZ
            DW      .110        ;TMR0
            DW      068h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0095       ;FRQ=105HZ
            DW      .112        ;TMR0
            DW      069h        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0096       ;FRQ=106HZ
            DW      .113        ;TMR0
            DW      06ah        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0097       ;FRQ=107HZ
            DW      .114        ;TMR0
            DW      06bh        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0098       ;FRQ=108HZ
            DW      .116        ;TMR0
            DW      06ch        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0099       ;FRQ=109HZ
            DW      .117        ;TMR0
            DW      06dh        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0100       ;FRQ=110HZ
            DW      .118        ;TMR0
            DW      06eh        ;FRQ0
            DW      0h          ;FRQ1
            DW      01h         ;TBL=128/PS=4
F0101       ;FRQ=120HZ
            DW      .5          ;TMR0
            DW      078h        ;FRQ0
            DW      0h          ;FRQ1
            DW      0h          ;TBL=128/PS=2
F0102       ;FRQ=130HZ
            DW      .25         ;TMR0
            DW      082h        ;FRQ0
            DW      0h          ;FRQ1
            DW      0h          ;TBL=128/PS=2
F0103       ;FRQ=140HZ
            DW      .42         ;TMR0
            DW      08ch        ;FRQ0
            DW      0h          ;FRQ1
            DW      0h          ;TBL=128/PS=2
F0104       ;FRQ=150HZ
            DW      .57         ;TMR0
            DW      096h        ;FRQ0
            DW      0h          ;FRQ1
            DW      0h          ;TBL=128/PS=2
F0105       ;FRQ=160HZ
            DW      .70         ;TMR0
            DW      0a0h        ;FRQ0
            DW      0h          ;FRQ1
            DW      0h          ;TBL=128/PS=2
F0106       ;FRQ=170HZ
            DW      .81         ;TMR0
            DW      0aah        ;FRQ0
            DW      0h          ;FRQ1
            DW      0h          ;TBL=128/PS=2
F0107       ;FRQ=180HZ
            DW      .91         ;TMR0
            DW      0b4h        ;FRQ0
            DW      0h          ;FRQ1
            DW      0h          ;TBL=128/PS=2
F0108       ;FRQ=190HZ
            DW      .101        ;TMR0
            DW      0beh        ;FRQ0
            DW      0h          ;FRQ1
            DW      0h          ;TBL=128/PS=2
F0109       ;FRQ=200HZ
            DW      .109        ;TMR0
            DW      0c8h        ;FRQ0
            DW      0h          ;FRQ1
            DW      0h          ;TBL=128/PS=2
F0110       ;FRQ=210HZ
            DW      .116        ;TMR0
            DW      0d2h        ;FRQ0
            DW      0h          ;FRQ1
            DW      0h          ;TBL=128/PS=2
F0111       ;FRQ=220HZ
            DW      .123        ;TMR0
            DW      0dch        ;FRQ0
            DW      0h          ;FRQ1
            DW      0h          ;TBL=128/PS=2
F0112       ;FRQ=230HZ
            DW      .2          ;TMR0
            DW      0e6h        ;FRQ0
            DW      0h          ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0113       ;FRQ=240HZ
            DW      .14         ;TMR0
            DW      0f0h        ;FRQ0
            DW      0h          ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0114       ;FRQ=250HZ
            DW      .24         ;TMR0
            DW      0fah        ;FRQ0
            DW      0h          ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0115       ;FRQ=260HZ
            DW      .34         ;TMR0
            DW      04h         ;FRQ0
            DW      01h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0116       ;FRQ=270HZ
            DW      .43         ;TMR0
            DW      0eh         ;FRQ0
            DW      01h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0117       ;FRQ=280HZ
            DW      .51         ;TMR0
            DW      018h        ;FRQ0
            DW      01h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0118       ;FRQ=290HZ
            DW      .58         ;TMR0
            DW      022h        ;FRQ0
            DW      01h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0119       ;FRQ=300HZ
            DW      .66         ;TMR0
            DW      02ch        ;FRQ0
            DW      01h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0120       ;FRQ=310HZ
            DW      .72         ;TMR0
            DW      036h        ;FRQ0
            DW      01h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0121       ;FRQ=320HZ
            DW      .79         ;TMR0
            DW      040h        ;FRQ0
            DW      01h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0122       ;FRQ=330HZ
            DW      .85         ;TMR0
            DW      04ah        ;FRQ0
            DW      01h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0123       ;FRQ=340HZ
            DW      .90         ;TMR0
            DW      054h        ;FRQ0
            DW      01h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0124       ;FRQ=350HZ
            DW      .95         ;TMR0
            DW      05eh        ;FRQ0
            DW      01h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0125       ;FRQ=360HZ
            DW      .100        ;TMR0
            DW      068h        ;FRQ0
            DW      01h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0126       ;FRQ=370HZ
            DW      .105        ;TMR0
            DW      072h        ;FRQ0
            DW      01h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0127       ;FRQ=380HZ
            DW      .110        ;TMR0
            DW      07ch        ;FRQ0
            DW      01h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0128       ;FRQ=390HZ
            DW      .114        ;TMR0
            DW      086h        ;FRQ0
            DW      01h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0129       ;FRQ=400HZ
            DW      .118        ;TMR0
            DW      090h        ;FRQ0
            DW      01h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0130       ;FRQ=410HZ
            DW      .122        ;TMR0
            DW      09ah        ;FRQ0
            DW      01h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0131       ;FRQ=420HZ
            DW      .125        ;TMR0
            DW      0a4h        ;FRQ0
            DW      01h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0132       ;FRQ=430HZ
            DW      .129        ;TMR0
            DW      0aeh        ;FRQ0
            DW      01h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0133       ;FRQ=440HZ
            DW      .132        ;TMR0
            DW      0b8h        ;FRQ0
            DW      01h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0134       ;FRQ=450HZ
            DW      .135        ;TMR0
            DW      0c2h        ;FRQ0
            DW      01h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0135       ;FRQ=460HZ
            DW      .138        ;TMR0
            DW      0cch        ;FRQ0
            DW      01h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0136       ;FRQ=470HZ
            DW      .141        ;TMR0
            DW      0d6h        ;FRQ0
            DW      01h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0137       ;FRQ=480HZ
            DW      .144        ;TMR0
            DW      0e0h        ;FRQ0
            DW      01h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0138       ;FRQ=490HZ
            DW      .146        ;TMR0
            DW      0eah        ;FRQ0
            DW      01h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0139       ;FRQ=500HZ
            DW      .149        ;TMR0
            DW      0f4h        ;FRQ0
            DW      01h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0140       ;FRQ=510HZ
            DW      .151        ;TMR0
            DW      0feh        ;FRQ0
            DW      01h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0141       ;FRQ=520HZ
            DW      .154        ;TMR0
            DW      08h         ;FRQ0
            DW      02h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0142       ;FRQ=530HZ
            DW      .156        ;TMR0
            DW      012h        ;FRQ0
            DW      02h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0143       ;FRQ=540HZ
            DW      .158        ;TMR0
            DW      01ch        ;FRQ0
            DW      02h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0144       ;FRQ=550HZ
            DW      .160        ;TMR0
            DW      026h        ;FRQ0
            DW      02h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0145       ;FRQ=560HZ
            DW      .162        ;TMR0
            DW      030h        ;FRQ0
            DW      02h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0146       ;FRQ=570HZ
            DW      .164        ;TMR0
            DW      03ah        ;FRQ0
            DW      02h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0147       ;FRQ=580HZ
            DW      .166        ;TMR0
            DW      044h        ;FRQ0
            DW      02h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0148       ;FRQ=590HZ
            DW      .168        ;TMR0
            DW      04eh        ;FRQ0
            DW      02h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0149       ;FRQ=600HZ
            DW      .170        ;TMR0
            DW      058h        ;FRQ0
            DW      02h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0150       ;FRQ=610HZ
            DW      .172        ;TMR0
            DW      062h        ;FRQ0
            DW      02h         ;FRQ1
            DW      08h         ;TBL=128/PS=1
F0151       ;FRQ=620HZ
            DW      .72         ;TMR0
            DW      06ch        ;FRQ0
            DW      02h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0152       ;FRQ=630HZ
            DW      .76         ;TMR0
            DW      076h        ;FRQ0
            DW      02h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0153       ;FRQ=640HZ
            DW      .79         ;TMR0
            DW      080h        ;FRQ0
            DW      02h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0154       ;FRQ=650HZ
            DW      .82         ;TMR0
            DW      012h        ;FRQ0
            DW      02h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0155       ;FRQ=660HZ
            DW      .85         ;TMR0
            DW      094h        ;FRQ0
            DW      02h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0156       ;FRQ=670HZ
            DW      .87         ;TMR0
            DW      09eh        ;FRQ0
            DW      02h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0157       ;FRQ=680HZ
            DW      .90         ;TMR0
            DW      0a8h        ;FRQ0
            DW      02h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0158       ;FRQ=690HZ
            DW      .93         ;TMR0
            DW      0b2h        ;FRQ0
            DW      02h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0159       ;FRQ=700HZ
            DW      .95         ;TMR0
            DW      0bch        ;FRQ0
            DW      02h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0160       ;FRQ=710HZ
            DW      .98         ;TMR0
            DW      0c6h        ;FRQ0
            DW      02h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0161       ;FRQ=720HZ
            DW      .100        ;TMR0
            DW      0d0h        ;FRQ0
            DW      02h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0162       ;FRQ=730HZ
            DW      .103        ;TMR0
            DW      0dah        ;FRQ0
            DW      02h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0163       ;FRQ=740HZ
            DW      .105        ;TMR0
            DW      0e4h        ;FRQ0
            DW      02h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0164       ;FRQ=750HZ
            DW      .107        ;TMR0
            DW      0eeh        ;FRQ0
            DW      02h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0165       ;FRQ=760HZ
            DW      .110        ;TMR0
            DW      0f8h        ;FRQ0
            DW      02h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0166       ;FRQ=770HZ
            DW      .112        ;TMR0
            DW      02h         ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0167       ;FRQ=780HZ
            DW      .114        ;TMR0
            DW      0ch         ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0168       ;FRQ=790HZ
            DW      .116        ;TMR0
            DW      016h        ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0169       ;FRQ=800HZ
            DW      .118        ;TMR0
            DW      020h        ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0170       ;FRQ=810HZ
            DW      .120        ;TMR0
            DW      02ah        ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0171       ;FRQ=820HZ
            DW      .122        ;TMR0
            DW      034h        ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0172       ;FRQ=830HZ
            DW      .123        ;TMR0
            DW      03eh        ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0173       ;FRQ=840HZ
            DW      .125        ;TMR0
            DW      048h        ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0174       ;FRQ=850HZ
            DW      .127        ;TMR0
            DW      052h        ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0175       ;FRQ=860HZ
            DW      .129        ;TMR0
            DW      05ch        ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0176       ;FRQ=870HZ
            DW      .130        ;TMR0
            DW      066h        ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0177       ;FRQ=880HZ
            DW      .132        ;TMR0
            DW      070h        ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0178       ;FRQ=890HZ
            DW      .134        ;TMR0
            DW      07ah        ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0179       ;FRQ=900HZ　ここより10HZ単位は不可
            DW      .135        ;TMR0
            DW      084h        ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0180       ;FRQ=910HZ
            DW      .137        ;TMR0
            DW      08eh        ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0181       ;FRQ=919HZ
            DW      .138        ;TMR0
            DW      097h        ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0182       ;FRQ926HZ
            DW      .139        ;TMR0
            DW      09eh        ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1

F0183       ;FRQ=933HZ
            DW      .140        ;TMR0
            DW      0a5h        ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0184       ;FRQ=940HZ
            DW      .141        ;TMR0
            DW      0ach        ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0185       ;FRQ947HZ
            DW      .142        ;TMR0
            DW      0b3h        ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0186       ;FRQ=954HZ
            DW      .143        ;TMR0
            DW      0bah        ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0187       ;FRQ=962HZ
            DW      .144        ;TMR0
            DW      0c2h        ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0188       ;FRQ=969HZ
            DW      .145        ;TMR0
            DW      0c9h        ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0189       ;FRQ977HZ
            DW      .146        ;TMR0
            DW      0d1h        ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0190       ;FRQ=984HZ
            DW      .147        ;TMR0
            DW      0d8h        ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0191       ;FRQ=992HZ
            DW      .148        ;TMR0
            DW      0e0h        ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0192       ;FRQ=1000HZ
            DW      .149        ;TMR0
            DW      0e8h        ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0193       ;FRQ=1008HZ
            DW      .150        ;TMR0
            DW      0f0h        ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0194       ;FRQ=1016HZ
            DW      .151        ;TMR0
            DW      0f8h        ;FRQ0
            DW      03h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0195       ;FRQ=1025HZ
            DW      .152        ;TMR0
            DW      01h         ;FRQ0
            DW      04h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0196       ;FRQ=1033HZ
            DW      .153        ;TMR0
            DW      09h         ;FRQ0
            DW      04h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0197       ;FRQ1042HZ
            DW      .154        ;TMR0
            DW      012h        ;FRQ0
            DW      04h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0198       ;FRQ1050HZ
            DW      .155        ;TMR0
            DW      01eh        ;FRQ0
            DW      04h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0199       ;FRQ1059HZ
            DW      .156        ;TMR0
            DW      023h        ;FRQ0
            DW      04h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0200       ;FRQ1068HZ
            DW      .157        ;TMR0
            DW      02ch        ;FRQ0
            DW      04h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0201       ;FRQ1078HZ
            DW      .158        ;TMR0
            DW      036h        ;FRQ0
            DW      04h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0202       ;FRQ1087HZ
            DW      .159        ;TMR0
            DW      03fh        ;FRQ0
            DW      04h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0203       ;FRQ1097HZ
            DW      .160        ;TMR0
            DW      049h        ;FRQ0
            DW      04h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0204       ;FRQ1106HZ　これ以降概ね20-30HZ間隔
            DW      .161        ;TMR0
            DW      052h        ;FRQ0
            DW      04h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0205       ;FRQ1116HZ
            DW      .162        ;TMR0
            DW      05ch        ;FRQ0
            DW      04h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0206       ;FRQ1126HZ
            DW      .163        ;TMR0
            DW      066h        ;FRQ0
            DW      04h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0207       ;FRQ1136HZ
            DW      .164        ;TMR0
            DW      052h        ;FRQ0
            DW      04h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0208       ;FRQ1147HZ
            DW      .165        ;TMR0
            DW      07bh        ;FRQ0
            DW      04h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0209       ;FRQ1157HZ
            DW      .166        ;TMR0
            DW      085h        ;FRQ0
            DW      04h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0210       ;FRQ1168HZ
            DW      .167        ;TMR0
            DW      090h        ;FRQ0
            DW      04h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0211       ;FRQ1179HZ
            DW      .168        ;TMR0
            DW      09bh        ;FRQ0
            DW      04h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0212       ;FRQ1190HZ
            DW      .169        ;TMR0
            DW      0a6h        ;FRQ0
            DW      04h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0213       ;FRQ1202HZ
            DW      .170        ;TMR0
            DW      0b2h        ;FRQ0
            DW      04h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0214       ;FRQ1214HZ
            DW      .171        ;TMR0
            DW      0beh        ;FRQ0
            DW      04h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0215       ;FRQ1226HZ
            DW      .172        ;TMR0
            DW      0cah        ;FRQ0
            DW      04h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0216       ;FRQ1238HZ
            DW      .173        ;TMR0
            DW      0d6h        ;FRQ0
            DW      04h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0217       ;FRQ1250HZ
            DW      .174        ;TMR0
            DW      0e2h        ;FRQ0
            DW      04h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0218       ;FRQ1263HZ
            DW      .175        ;TMR0
            DW      0efh        ;FRQ0
            DW      04h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0219       ;FRQ1276HZ
            DW      .176        ;TMR0
            DW      0fch        ;FRQ0
            DW      04h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0220       ;FRQ1289HZ
            DW      .177        ;TMR0
            DW      09h         ;FRQ0
            DW      05h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0221       ;FRQ1302HZ
            DW      .178        ;TMR0
            DW      016h        ;FRQ0
            DW      05h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0222       ;FRQ1316HZ
            DW      .179        ;TMR0
            DW      024h        ;FRQ0
            DW      05h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0223       ;FRQ1330HZ
            DW      .180        ;TMR0
            DW      032h        ;FRQ0
            DW      05h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0224       ;FRQ1344HZ
            DW      .181        ;TMR0
            DW      040h        ;FRQ0
            DW      05h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0225       ;FRQ1359HZ
            DW      .182        ;TMR0
            DW      04fh        ;FRQ0
            DW      05h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0226       ;FRQ1374HZ
            DW      .183        ;TMR0
            DW      05eh        ;FRQ0
            DW      05h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0227       ;FRQ1389HZ
            DW      .184        ;TMR0
            DW      06dh        ;FRQ0
            DW      05h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0228       ;FRQ1405HZ
            DW      .185        ;TMR0
            DW      07dh        ;FRQ0
            DW      05h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0229       ;FRQ1420HZ
            DW      .186        ;TMR0
            DW      08ch        ;FRQ0
            DW      05h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0230       ;FRQ1437HZ
            DW      .187        ;TMR0
            DW      09dh        ;FRQ0
            DW      05h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0231       ;FRQ1454HZ
            DW      .188        ;TMR0
            DW      0aeh        ;FRQ0
            DW      05h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0232       ;FRQ1471HZ
            DW      .189        ;TMR0
            DW      0bfh        ;FRQ0
            DW      05h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0233       ;FRQ1488HZ
            DW      .190        ;TMR0
            DW      0d0h        ;FRQ0
            DW      05h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0234       ;FRQ1506HZ
            DW      .191        ;TMR0
            DW      0e2h        ;FRQ0
            DW      05h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0235       ;FRQ1524HZ
            DW      .192        ;TMR0
            DW      0f4h        ;FRQ0
            DW      05h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0236       ;FRQ1543HZ
            DW      .193        ;TMR0
            DW      07h         ;FRQ0
            DW      06h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0237       ;FRQ1563HZ
            DW      .194        ;TMR0
            DW      01bh        ;FRQ0
            DW      06h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0238       ;FRQ1582HZ
            DW      .195        ;TMR0
            DW      02eh        ;FRQ0
            DW      06h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0239       ;FRQ1603HZ
            DW      .196        ;TMR0
            DW      043h        ;FRQ0
            DW      06h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0240       ;FRQ1623HZ
            DW      .197        ;TMR0
            DW      057h        ;FRQ0
            DW      06h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0241       ;FRQ1645HZ
            DW      .198        ;TMR0
            DW      06dh        ;FRQ0
            DW      06h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0242       ;FRQ1667HZ
            DW      .199        ;TMR0
            DW      083h        ;FRQ0
            DW      06h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0243       ;FRQ1689HZ
            DW      .200        ;TMR0
            DW      099h        ;FRQ0
            DW      06h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0244       ;FRQ1712HZ
            DW      .201        ;TMR0
            DW      0b0h        ;FRQ0
            DW      06h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0245       ;FRQ1736HZ
            DW      .202        ;TMR0
            DW      0c8h        ;FRQ0
            DW      06h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0246       ;FRQ1761HZ
            DW      .203        ;TMR0
            DW      0e1h        ;FRQ0
            DW      06h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0247       ;FRQ1786HZ
            DW      .204        ;TMR0
            DW      0fah        ;FRQ0
            DW      06h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0248       ;FRQ1812HZ
            DW      .205        ;TMR0
            DW      014h        ;FRQ0
            DW      07h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0249       ;FRQ1838HZ
            DW      .206        ;TMR0
            DW      02eh        ;FRQ0
            DW      07h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0250       ;FRQ1866HZ
            DW      .207        ;TMR0
            DW      04ah        ;FRQ0
            DW      07h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0251       ;FRQ1894HZ
            DW      .208        ;TMR0
            DW      066h        ;FRQ0
            DW      07h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0252       ;FRQ1923HZ
            DW      .209        ;TMR0
            DW      083h        ;FRQ0
            DW      07h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0253       ;FRQ1953HZ
            DW      .210        ;TMR0
            DW      0a1h        ;FRQ0
            DW      07h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0254       ;FRQ1984HZ
            DW      .211        ;TMR0
            DW      0c0h        ;FRQ0
            DW      07h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0255       ;FRQ2016HZ
            DW      .212        ;TMR0
            DW      0e0h        ;FRQ0
            DW      07h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0256       ;FRQ2049HZ
            DW      .213        ;TMR0
            DW      01h         ;FRQ0
            DW      08h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0257       ;FRQ2083HZ
            DW      .214        ;TMR0
            DW      023h        ;FRQ0
            DW      08h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0258       ;FRQ2119HZ
            DW      .215        ;TMR0
            DW      047h        ;FRQ0
            DW      08h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0259       ;FRQ2155HZ
            DW      .216        ;TMR0
            DW      06bh        ;FRQ0
            DW      08h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0260       ;FRQ2193HZ
            DW      .217        ;TMR0
            DW      091h        ;FRQ0
            DW      08h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0261       ;FRQ2232HZ
            DW      .218        ;TMR0
            DW      0b8h        ;FRQ0
            DW      08h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0262       ;FRQ2273HZ
            DW      .219        ;TMR0
            DW      0e1h        ;FRQ0
            DW      08h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0263       ;FRQ2315HZ
            DW      .220        ;TMR0
            DW      0bh         ;FRQ0
            DW      09h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0264       ;FRQ2359HZ
            DW      .221        ;TMR0
            DW      037h        ;FRQ0
            DW      09h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0265       ;FRQ2404HZ
            DW      .222        ;TMR0
            DW      064h        ;FRQ0
            DW      09h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0266       ;FRQ2451HZ
            DW      .223        ;TMR0
            DW      093h        ;FRQ0
            DW      09h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0267       ;FRQ2500HZ
            DW      .224        ;TMR0
            DW      0c4h        ;FRQ0
            DW      09h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0268       ;FRQ2551HZ
            DW      .225        ;TMR0
            DW      0f7h        ;FRQ0
            DW      09h         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0269       ;FRQ2604HZ
            DW      .226        ;TMR0
            DW      02ch        ;FRQ0
            DW      0ah         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0270       ;FRQ2660HZ
            DW      .227        ;TMR0
            DW      064h        ;FRQ0
            DW      0ah         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0271       ;FRQ2717HZ
            DW      .228        ;TMR0
            DW      09dh        ;FRQ0
            DW      0ah         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0272       ;FRQ2778HZ
            DW      .229        ;TMR0
            DW      0dah        ;FRQ0
            DW      0ah         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0273       ;FRQ2841HZ
            DW      .230        ;TMR0
            DW      019h        ;FRQ0
            DW      0bh         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0274       ;FRQ2907HZ
            DW      .231        ;TMR0
            DW      05bh        ;FRQ0
            DW      0bh         ;FRQ1
            DW      018h        ;TBL=64/PS=1
F0275       ;FRQ2941HZ
            DW      .189        ;TMR0
            DW      07dh        ;FRQ0
            DW      0bh         ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0276       ;FRQ2976HZ
            DW      .190        ;TMR0
            DW      0a0h        ;FRQ0
            DW      0bh         ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0277       ;FRQ3012HZ
            DW      .191        ;TMR0
            DW      0c4h        ;FRQ0
            DW      0bh         ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0278       ;FRQ3049HZ
            DW      .192        ;TMR0
            DW      0e9h        ;FRQ0
            DW      0bh         ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0279       ;FRQ3086HZ
            DW      .193        ;TMR0
            DW      0eh         ;FRQ0
            DW      0ch         ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0280       ;FRQ3125HZ
            DW      .194        ;TMR0
            DW      035h        ;FRQ0
            DW      0ch         ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0281       ;FRQ3165HZ
            DW      .195        ;TMR0
            DW      05dh        ;FRQ0
            DW      0ch         ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0282       ;FRQ3205HZ
            DW      .196        ;TMR0
            DW      085h        ;FRQ0
            DW      0ch         ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0283       ;FRQ3247HZ
            DW      .197        ;TMR0
            DW      0afh        ;FRQ0
            DW      0ch         ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0284       ;FRQ3290HZ
            DW      .198        ;TMR0
            DW      0dah        ;FRQ0
            DW      0ch         ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0285       ;FRQ3333HZ
            DW      .199        ;TMR0
            DW      05h         ;FRQ0
            DW      0dh         ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0286       ;FRQ3378HZ
            DW      .200        ;TMR0
            DW      032h        ;FRQ0
            DW      0dh         ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0287       ;FRQ3425HZ
            DW      .201        ;TMR0
            DW      061h        ;FRQ0
            DW      0dh         ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0288       ;FRQ3472HZ
            DW      .202        ;TMR0
            DW      090h        ;FRQ0
            DW      0dh         ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0289       ;FRQ3521HZ
            DW      .203        ;TMR0
            DW      0c1h        ;FRQ0
            DW      0dh         ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0290       ;FRQ3571HZ
            DW      .204        ;TMR0
            DW      0f3h        ;FRQ0
            DW      0dh         ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0291       ;FRQ3623HZ
            DW      .205        ;TMR0
            DW      027h        ;FRQ0
            DW      0eh         ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0292       ;FRQ3677HZ
            DW      .206        ;TMR0
            DW      05dh        ;FRQ0
            DW      0eh         ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0293       ;FRQ3731HZ
            DW      .207        ;TMR0
            DW      093h        ;FRQ0
            DW      0eh         ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0294       ;FRQ3788HZ
            DW      .208        ;TMR0
            DW      0cch        ;FRQ0
            DW      0eh         ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0295       ;FRQ3846HZ
            DW      .209        ;TMR0
            DW      06h         ;FRQ0
            DW      0fh         ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0296       ;FRQ3906HZ
            DW      .210        ;TMR0
            DW      042h        ;FRQ0
            DW      0fh         ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0297       ;FRQ3968HZ
            DW      .211        ;TMR0
            DW      080h        ;FRQ0
            DW      0fh         ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0298       ;FRQ4032HZ
            DW      .212        ;TMR0
            DW      0c0h        ;FRQ0
            DW      0fh         ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0299       ;FRQ4098HZ
            DW      .213        ;TMR0
            DW      02h         ;FRQ0
            DW      010h        ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0300       ;FRQ4167HZ
            DW      .214        ;TMR0
            DW      047h        ;FRQ0
            DW      010h        ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0301       ;FRQ4237HZ
            DW      .215        ;TMR0
            DW      08dh        ;FRQ0
            DW      010h        ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0302       ;FRQ4310HZ
            DW      .216        ;TMR0
            DW      0d6h        ;FRQ0
            DW      010h        ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0303       ;FRQ4386HZ
            DW      .217        ;TMR0
            DW      022h        ;FRQ0
            DW      011h        ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0304       ;FRQ4464HZ
            DW      .218        ;TMR0
            DW      070h        ;FRQ0
            DW      011h        ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0305       ;FRQ4546HZ
            DW      .219        ;TMR0
            DW      0c2h        ;FRQ0
            DW      011h        ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0306       ;FRQ4630HZ
            DW      .220        ;TMR0
            DW      016h        ;FRQ0
            DW      012h        ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0307       ;FRQ4717HZ
            DW      .221        ;TMR0
            DW      06dh        ;FRQ0
            DW      012h        ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0308       ;FRQ4808HZ
            DW      .222        ;TMR0
            DW      0c8h        ;FRQ0
            DW      012h        ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0309       ;FRQ4902HZ
            DW      .223        ;TMR0
            DW      026h        ;FRQ0
            DW      013h        ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0310       ;FRQ5000HZ
            DW      .224        ;TMR0
            DW      088h        ;FRQ0
            DW      013h        ;FRQ1
            DW      028h        ;TBL=32/PS=1
F0311       ;FRQ5051HZ
            DW      .175        ;TMR0
            DW      0bbh        ;FRQ0
            DW      013h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0312       ;FRQ5102HZ
            DW      .176        ;TMR0
            DW      0eeh        ;FRQ0
            DW      013h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0313       ;FRQ5155HZ
            DW      .177        ;TMR0
            DW      023h        ;FRQ0
            DW      014h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0314       ;FRQ5208HZ
            DW      .178        ;TMR0
            DW      058h        ;FRQ0
            DW      014h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0315       ;FRQ5263HZ
            DW      .179        ;TMR0
            DW      08fh        ;FRQ0
            DW      014h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0316       ;FRQ5319HZ
            DW      .180        ;TMR0
            DW      0c7h        ;FRQ0
            DW      014h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0317       ;FRQ5376HZ
            DW      .181        ;TMR0
            DW      0h          ;FRQ0
            DW      015h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0318       ;FRQ5435HZ
            DW      .182        ;TMR0
            DW      03bh        ;FRQ0
            DW      015h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0319       ;FRQ5495HZ
            DW      .183        ;TMR0
            DW      077h        ;FRQ0
            DW      015h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0320       ;FRQ5556HZ
            DW      .184        ;TMR0
            DW      0b4h        ;FRQ0
            DW      015h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0321       ;FRQ5618HZ
            DW      .185        ;TMR0
            DW      0f2h        ;FRQ0
            DW      015h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0322       ;FRQ5682HZ
            DW      .186        ;TMR0
            DW      032h        ;FRQ0
            DW      016h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0323       ;FRQ5747HZ
            DW      .187        ;TMR0
            DW      073h        ;FRQ0
            DW      016h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0324       ;FRQ5814HZ
            DW      .188        ;TMR0
            DW      0b6h        ;FRQ0
            DW      016h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0325       ;FRQ5882HZ
            DW      .189        ;TMR0
            DW      0fah        ;FRQ0
            DW      016h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0326       ;FRQ5952HZ
            DW      .190        ;TMR0
            DW      040h        ;FRQ0
            DW      017h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0327       ;FRQ6024HZ
            DW      .191        ;TMR0
            DW      088h        ;FRQ0
            DW      017h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0328       ;FRQ6098HZ
            DW      .192        ;TMR0
            DW      0d2h        ;FRQ0
            DW      017h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0329       ;FRQ6173HZ
            DW      .193        ;TMR0
            DW      01dh        ;FRQ0
            DW      018h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0330       ;FRQ6250HZ
            DW      .194        ;TMR0
            DW      06ah        ;FRQ0
            DW      018h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0331       ;FRQ6329HZ
            DW      .195        ;TMR0
            DW      0b9h        ;FRQ0
            DW      018h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0332       ;FRQ6410HZ
            DW      .196        ;TMR0
            DW      0ah         ;FRQ0
            DW      019h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0333       ;FRQ6494HZ
            DW      .197        ;TMR0
            DW      05eh        ;FRQ0
            DW      019h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0334       ;FRQ6579HZ
            DW      .198        ;TMR0
            DW      0b3h        ;FRQ0
            DW      019h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0335       ;FRQ6667HZ
            DW      .199        ;TMR0
            DW      0bh         ;FRQ0
            DW      01ah        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0336       ;FRQ6757HZ
            DW      .200        ;TMR0
            DW      065h        ;FRQ0
            DW      01ah        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0337       ;FRQ6849HZ
            DW      .201        ;TMR0
            DW      0c1h        ;FRQ0
            DW      01ah        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0338       ;FRQ6995HZ
            DW      .202        ;TMR0
            DW      053h        ;FRQ0
            DW      01bh        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0339       ;FRQ7042HZ
            DW      .203        ;TMR0
            DW      082h        ;FRQ0
            DW      01bh        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0340       ;FRQ7143HZ
            DW      .204        ;TMR0
            DW      0e7h        ;FRQ0
            DW      01bh        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0341       ;FRQ7246HZ
            DW      .205        ;TMR0
            DW      04eh        ;FRQ0
            DW      01ch        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0342       ;FRQ7353HZ
            DW      .206        ;TMR0
            DW      0b9h        ;FRQ0
            DW      01ch        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0343       ;FRQ7463HZ
            DW      .207        ;TMR0
            DW      027h        ;FRQ0
            DW      01dh        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0344       ;FRQ7576HZ
            DW      .208        ;TMR0
            DW      098h        ;FRQ0
            DW      01dh        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0345       ;FRQ7692HZ
            DW      .209        ;TMR0
            DW      0ch         ;FRQ0
            DW      01eh        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0346       ;FRQ7813HZ
            DW      .210        ;TMR0
            DW      085h        ;FRQ0
            DW      01eh        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0347       ;FRQ7937HZ
            DW      .211        ;TMR0
            DW      01h         ;FRQ0
            DW      01fh        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0348       ;FRQ8065HZ
            DW      .212        ;TMR0
            DW      081h        ;FRQ0
            DW      01fh        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0349       ;FRQ8197HZ
            DW      .213        ;TMR0
            DW      05h         ;FRQ0
            DW      020h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0350       ;FRQ8333HZ
            DW      .214        ;TMR0
            DW      08dh        ;FRQ0
            DW      020h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0351       ;FRQ8475HZ
            DW      .215        ;TMR0
            DW      01bh        ;FRQ0
            DW      021h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0352       ;FRQ8621HZ
            DW      .216        ;TMR0
            DW      0adh        ;FRQ0
            DW      021h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0353       ;FRQ8772HZ
            DW      .217        ;TMR0
            DW      044h        ;FRQ0
            DW      022h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0354       ;FRQ8929HZ
            DW      .218        ;TMR0
            DW      0e1h        ;FRQ0
            DW      022h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0355       ;FRQ9091HZ
            DW      .219        ;TMR0
            DW      083h        ;FRQ0
            DW      023h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0356       ;FRQ9259HZ
            DW      .220        ;TMR0
            DW      02bh        ;FRQ0
            DW      024h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0357       ;FRQ9434HZ
            DW      .221        ;TMR0
            DW      0dah        ;FRQ0
            DW      024h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0358       ;FRQ9616HZ
            DW      .222        ;TMR0
            DW      090h        ;FRQ0
            DW      025h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0359       ;FRQ9804HZ
            DW      .223        ;TMR0
            DW      04ch        ;FRQ0
            DW      026h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0360       ;FRQ10000HZ
            DW      .224        ;TMR0
            DW      010h        ;FRQ0
            DW      027h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0361       ;FRQ10204HZ
            DW      .225        ;TMR0
            DW      0dch        ;FRQ0
            DW      027h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0362       ;FRQ10416HZ
            DW      .226        ;TMR0
            DW      0b0h        ;FRQ0
            DW      028h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0363       ;FRQ10638HZ
            DW      .227        ;TMR0
            DW      08eh        ;FRQ0
            DW      029h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0364       ;FRQ10869HZ
            DW      .228        ;TMR0
            DW      075h        ;FRQ0
            DW      02ah        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0365       ;FRQ11111HZ
            DW      .229        ;TMR0
            DW      067h        ;FRQ0
            DW      02bh        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0366       ;FRQ11363HZ
            DW      .230        ;TMR0
            DW      063h        ;FRQ0
            DW      02ch        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0367       ;FRQ11628HZ
            DW      .231        ;TMR0
            DW      06ch        ;FRQ0
            DW      02dh        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0368       ;FRQ11904HZ
            DW      .232        ;TMR0
            DW      080h        ;FRQ0
            DW      02eh        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0369       ;FRQ12195HZ
            DW      .233        ;TMR0
            DW      0a3h        ;FRQ0
            DW      02fh        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0370       ;FRQ12500HZ
            DW      .234        ;TMR0
            DW      0d4h        ;FRQ0
            DW      030h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0371       ;FRQ12820HZ
            DW      .235        ;TMR0
            DW      014h        ;FRQ0
            DW      032h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0372       ;FRQ13158HZ
            DW      .236        ;TMR0
            DW      066h        ;FRQ0
            DW      033h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0373       ;FRQ13513HZ
            DW      .237        ;TMR0
            DW      0c9h        ;FRQ0
            DW      034h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0374       ;FRQ13889HZ
            DW      .238        ;TMR0
            DW      041h        ;FRQ0
            DW      036h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0375       ;FRQ14285HZ
            DW      .239        ;TMR0
            DW      0cdh        ;FRQ0
            DW      037h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0376       ;FRQ14706HZ
            DW      .240        ;TMR0
            DW      072h        ;FRQ0
            DW      039h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0377       ;FRQ15151HZ
            DW      .241        ;TMR0
            DW      02fh        ;FRQ0
            DW      03bh        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0378       ;FRQ15625HZ
            DW      .242        ;TMR0
            DW      09h         ;FRQ0
            DW      03dh        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0379       ;FRQ16129HZ
            DW      .243        ;TMR0
            DW      01h         ;FRQ0
            DW      03fh        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0380       ;FRQ16666HZ
            DW      .244        ;TMR0
            DW      01ah        ;FRQ0
            DW      041h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0381       ;FRQ17241HZ
            DW      .245        ;TMR0
            DW      059h        ;FRQ0
            DW      043h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0382       ;FRQ17857HZ
            DW      .246        ;TMR0
            DW      0c1h        ;FRQ0
            DW      045h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0383       ;FRQ18518HZ
            DW      .247        ;TMR0
            DW      056h        ;FRQ0
            DW      048h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0384       ;FRQ19231HZ
            DW      .248        ;TMR0
            DW      01fh        ;FRQ0
            DW      04bh        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0385       ;FRQ20000HZ
            DW      .249        ;TMR0
            DW      020h        ;FRQ0
            DW      04eh        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0386       ;FRQ20833HZ
            DW      .250        ;TMR0
            DW      061h        ;FRQ0
            DW      051h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0387       ;FRQ21739HZ
            DW      .251        ;TMR0
            DW      0ebh        ;FRQ0
            DW      054h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0388       ;FRQ22727HZ
            DW      .252        ;TMR0
            DW      0c7h        ;FRQ0
            DW      058h        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0389       ;FRQ23809HZ
            DW      .253        ;TMR0
            DW      01h         ;FRQ0
            DW      05dh        ;FRQ1
            DW      038h        ;TBL=16/PS=1
F0390       ;FRQ25000HZ
            DW      .254        ;TMR0
            DW      0a8h        ;FRQ0
            DW      061h        ;FRQ1
            DW      038h        ;TBL=16/PS=1

;
            END
