PICのプログラミングは、これだけの命令を組み合わせてプログラムを作るパズルです。
入出力などの機能の呼び出しは、それぞれ決められたレジスタの読み書きで表現します。
さて、A/D変換で得られた0~255の数値から待ち時間(0~255の数値で表す)を決定する処理で、
これらの命令で表現しやすい計算式ではない表現をしたいと思いました。
そこで、複雑な計算をしなくても済むように、ルックアップテーブルで実装しようと考えました。
しかし、PICには256バイトもの巨大なテーブルを格納でき、ランダムアクセスできるようなメモリはありません。
(EEPROMを使えば出来るかもしれませんが、もったいない気がしますし、機種によってはEEPROMが無いものもあります)
ということは、テーブルをコード中に埋め込む必要があります。
さて、どのようなコードを書けばいいでしょうか。
普通に線型探索?でもそれだと重そうです。
そこで二分探索です。
今回は、このような感じの制御を直接コードで表現します。
- 二分探索の例
- nibutan_example.png (1.99 KiB) 閲覧数: 782 回
とはいえ、こんなコードを直接手で書くのは修行でしかないので、プログラムでコードを吐かせます。
#!/usr/bin/perl
use strict;
my $min=5;
my $max=75;
my $lut_reg="ADRES";
my $goto_label="LUT_EXIT";
print "; CW speed lookup table\n\n";
for(my $i=0;$i=0) {
print " BTFSC LUT_REG,$digit\n";
print " GOTO LUT_BINSEARCH_".substr($valuestr."1XXXXXXXX",0,8)."\n";
print "LUT_BINSEARCH_".substr($valuestr."0XXXXXXXX",0,8)."\n";
&gen_binsearch($value,$valuestr."0",$digit-1);
print "LUT_BINSEARCH_".substr($valuestr."1XXXXXXXX",0,8)."\n";
&gen_binsearch($value|(1<<$digit),$valuestr."1",$digit-1);
} else {
print " MOVLW LUT_VALUE_$value\n";
print " GOTO $goto_label\n";
}
}
再帰を使えば、こんなに簡単に書けるのですね。
そして、こちらが実際に生成したコードです。
► スポイラーを表示
; CW speed lookup table
LUT_VALUE_0 EQU D'240'
LUT_VALUE_1 EQU D'227'
LUT_VALUE_2 EQU D'216'
LUT_VALUE_3 EQU D'206'
LUT_VALUE_4 EQU D'196'
LUT_VALUE_5 EQU D'188'
LUT_VALUE_6 EQU D'180'
LUT_VALUE_7 EQU D'173'
LUT_VALUE_8 EQU D'166'
LUT_VALUE_9 EQU D'160'
LUT_VALUE_10 EQU D'154'
LUT_VALUE_11 EQU D'149'
LUT_VALUE_12 EQU D'144'
LUT_VALUE_13 EQU D'140'
LUT_VALUE_14 EQU D'135'
LUT_VALUE_15 EQU D'131'
LUT_VALUE_16 EQU D'127'
LUT_VALUE_17 EQU D'124'
LUT_VALUE_18 EQU D'120'
LUT_VALUE_19 EQU D'117'
LUT_VALUE_20 EQU D'114'
LUT_VALUE_21 EQU D'111'
LUT_VALUE_22 EQU D'108'
LUT_VALUE_23 EQU D'106'
LUT_VALUE_24 EQU D'103'
LUT_VALUE_25 EQU D'101'
LUT_VALUE_26 EQU D'98'
LUT_VALUE_27 EQU D'96'
LUT_VALUE_28 EQU D'94'
LUT_VALUE_29 EQU D'92'
LUT_VALUE_30 EQU D'90'
LUT_VALUE_31 EQU D'88'
LUT_VALUE_32 EQU D'87'
LUT_VALUE_33 EQU D'85'
LUT_VALUE_34 EQU D'83'
LUT_VALUE_35 EQU D'82'
LUT_VALUE_36 EQU D'80'
LUT_VALUE_37 EQU D'79'
LUT_VALUE_38 EQU D'77'
LUT_VALUE_39 EQU D'76'
LUT_VALUE_40 EQU D'75'
LUT_VALUE_41 EQU D'73'
LUT_VALUE_42 EQU D'72'
LUT_VALUE_43 EQU D'71'
LUT_VALUE_44 EQU D'70'
LUT_VALUE_45 EQU D'69'
LUT_VALUE_46 EQU D'68'
LUT_VALUE_47 EQU D'67'
LUT_VALUE_48 EQU D'66'
LUT_VALUE_49 EQU D'65'
LUT_VALUE_50 EQU D'64'
LUT_VALUE_51 EQU D'63'
LUT_VALUE_52 EQU D'62'
LUT_VALUE_53 EQU D'61'
LUT_VALUE_54 EQU D'60'
LUT_VALUE_55 EQU D'59'
LUT_VALUE_56 EQU D'58'
LUT_VALUE_57 EQU D'58'
LUT_VALUE_58 EQU D'57'
LUT_VALUE_59 EQU D'56'
LUT_VALUE_60 EQU D'55'
LUT_VALUE_61 EQU D'55'
LUT_VALUE_62 EQU D'54'
LUT_VALUE_63 EQU D'53'
LUT_VALUE_64 EQU D'53'
LUT_VALUE_65 EQU D'52'
LUT_VALUE_66 EQU D'51'
LUT_VALUE_67 EQU D'51'
LUT_VALUE_68 EQU D'50'
LUT_VALUE_69 EQU D'50'
LUT_VALUE_70 EQU D'49'
LUT_VALUE_71 EQU D'48'
LUT_VALUE_72 EQU D'48'
LUT_VALUE_73 EQU D'47'
LUT_VALUE_74 EQU D'47'
LUT_VALUE_75 EQU D'46'
LUT_VALUE_76 EQU D'46'
LUT_VALUE_77 EQU D'45'
LUT_VALUE_78 EQU D'45'
LUT_VALUE_79 EQU D'44'
LUT_VALUE_80 EQU D'44'
LUT_VALUE_81 EQU D'44'
LUT_VALUE_82 EQU D'43'
LUT_VALUE_83 EQU D'43'
LUT_VALUE_84 EQU D'42'
LUT_VALUE_85 EQU D'42'
LUT_VALUE_86 EQU D'41'
LUT_VALUE_87 EQU D'41'
LUT_VALUE_88 EQU D'41'
LUT_VALUE_89 EQU D'40'
LUT_VALUE_90 EQU D'40'
LUT_VALUE_91 EQU D'40'
LUT_VALUE_92 EQU D'39'
LUT_VALUE_93 EQU D'39'
LUT_VALUE_94 EQU D'38'
LUT_VALUE_95 EQU D'38'
LUT_VALUE_96 EQU D'38'
LUT_VALUE_97 EQU D'37'
LUT_VALUE_98 EQU D'37'
LUT_VALUE_99 EQU D'37'
LUT_VALUE_100 EQU D'36'
LUT_VALUE_101 EQU D'36'
LUT_VALUE_102 EQU D'36'
LUT_VALUE_103 EQU D'36'
LUT_VALUE_104 EQU D'35'
LUT_VALUE_105 EQU D'35'
LUT_VALUE_106 EQU D'35'
LUT_VALUE_107 EQU D'34'
LUT_VALUE_108 EQU D'34'
LUT_VALUE_109 EQU D'34'
LUT_VALUE_110 EQU D'34'
LUT_VALUE_111 EQU D'33'
LUT_VALUE_112 EQU D'33'
LUT_VALUE_113 EQU D'33'
LUT_VALUE_114 EQU D'33'
LUT_VALUE_115 EQU D'32'
LUT_VALUE_116 EQU D'32'
LUT_VALUE_117 EQU D'32'
LUT_VALUE_118 EQU D'32'
LUT_VALUE_119 EQU D'31'
LUT_VALUE_120 EQU D'31'
LUT_VALUE_121 EQU D'31'
LUT_VALUE_122 EQU D'31'
LUT_VALUE_123 EQU D'30'
LUT_VALUE_124 EQU D'30'
LUT_VALUE_125 EQU D'30'
LUT_VALUE_126 EQU D'30'
LUT_VALUE_127 EQU D'30'
LUT_VALUE_128 EQU D'29'
LUT_VALUE_129 EQU D'29'
LUT_VALUE_130 EQU D'29'
LUT_VALUE_131 EQU D'29'
LUT_VALUE_132 EQU D'29'
LUT_VALUE_133 EQU D'28'
LUT_VALUE_134 EQU D'28'
LUT_VALUE_135 EQU D'28'
LUT_VALUE_136 EQU D'28'
LUT_VALUE_137 EQU D'28'
LUT_VALUE_138 EQU D'27'
LUT_VALUE_139 EQU D'27'
LUT_VALUE_140 EQU D'27'
LUT_VALUE_141 EQU D'27'
LUT_VALUE_142 EQU D'27'
LUT_VALUE_143 EQU D'27'
LUT_VALUE_144 EQU D'26'
LUT_VALUE_145 EQU D'26'
LUT_VALUE_146 EQU D'26'
LUT_VALUE_147 EQU D'26'
LUT_VALUE_148 EQU D'26'
LUT_VALUE_149 EQU D'26'
LUT_VALUE_150 EQU D'25'
LUT_VALUE_151 EQU D'25'
LUT_VALUE_152 EQU D'25'
LUT_VALUE_153 EQU D'25'
LUT_VALUE_154 EQU D'25'
LUT_VALUE_155 EQU D'25'
LUT_VALUE_156 EQU D'25'
LUT_VALUE_157 EQU D'24'
LUT_VALUE_158 EQU D'24'
LUT_VALUE_159 EQU D'24'
LUT_VALUE_160 EQU D'24'
LUT_VALUE_161 EQU D'24'
LUT_VALUE_162 EQU D'24'
LUT_VALUE_163 EQU D'24'
LUT_VALUE_164 EQU D'23'
LUT_VALUE_165 EQU D'23'
LUT_VALUE_166 EQU D'23'
LUT_VALUE_167 EQU D'23'
LUT_VALUE_168 EQU D'23'
LUT_VALUE_169 EQU D'23'
LUT_VALUE_170 EQU D'23'
LUT_VALUE_171 EQU D'23'
LUT_VALUE_172 EQU D'22'
LUT_VALUE_173 EQU D'22'
LUT_VALUE_174 EQU D'22'
LUT_VALUE_175 EQU D'22'
LUT_VALUE_176 EQU D'22'
LUT_VALUE_177 EQU D'22'
LUT_VALUE_178 EQU D'22'
LUT_VALUE_179 EQU D'22'
LUT_VALUE_180 EQU D'22'
LUT_VALUE_181 EQU D'21'
LUT_VALUE_182 EQU D'21'
LUT_VALUE_183 EQU D'21'
LUT_VALUE_184 EQU D'21'
LUT_VALUE_185 EQU D'21'
LUT_VALUE_186 EQU D'21'
LUT_VALUE_187 EQU D'21'
LUT_VALUE_188 EQU D'21'
LUT_VALUE_189 EQU D'21'
LUT_VALUE_190 EQU D'20'
LUT_VALUE_191 EQU D'20'
LUT_VALUE_192 EQU D'20'
LUT_VALUE_193 EQU D'20'
LUT_VALUE_194 EQU D'20'
LUT_VALUE_195 EQU D'20'
LUT_VALUE_196 EQU D'20'
LUT_VALUE_197 EQU D'20'
LUT_VALUE_198 EQU D'20'
LUT_VALUE_199 EQU D'20'
LUT_VALUE_200 EQU D'20'
LUT_VALUE_201 EQU D'19'
LUT_VALUE_202 EQU D'19'
LUT_VALUE_203 EQU D'19'
LUT_VALUE_204 EQU D'19'
LUT_VALUE_205 EQU D'19'
LUT_VALUE_206 EQU D'19'
LUT_VALUE_207 EQU D'19'
LUT_VALUE_208 EQU D'19'
LUT_VALUE_209 EQU D'19'
LUT_VALUE_210 EQU D'19'
LUT_VALUE_211 EQU D'19'
LUT_VALUE_212 EQU D'18'
LUT_VALUE_213 EQU D'18'
LUT_VALUE_214 EQU D'18'
LUT_VALUE_215 EQU D'18'
LUT_VALUE_216 EQU D'18'
LUT_VALUE_217 EQU D'18'
LUT_VALUE_218 EQU D'18'
LUT_VALUE_219 EQU D'18'
LUT_VALUE_220 EQU D'18'
LUT_VALUE_221 EQU D'18'
LUT_VALUE_222 EQU D'18'
LUT_VALUE_223 EQU D'18'
LUT_VALUE_224 EQU D'18'
LUT_VALUE_225 EQU D'17'
LUT_VALUE_226 EQU D'17'
LUT_VALUE_227 EQU D'17'
LUT_VALUE_228 EQU D'17'
LUT_VALUE_229 EQU D'17'
LUT_VALUE_230 EQU D'17'
LUT_VALUE_231 EQU D'17'
LUT_VALUE_232 EQU D'17'
LUT_VALUE_233 EQU D'17'
LUT_VALUE_234 EQU D'17'
LUT_VALUE_235 EQU D'17'
LUT_VALUE_236 EQU D'17'
LUT_VALUE_237 EQU D'17'
LUT_VALUE_238 EQU D'17'
LUT_VALUE_239 EQU D'16'
LUT_VALUE_240 EQU D'16'
LUT_VALUE_241 EQU D'16'
LUT_VALUE_242 EQU D'16'
LUT_VALUE_243 EQU D'16'
LUT_VALUE_244 EQU D'16'
LUT_VALUE_245 EQU D'16'
LUT_VALUE_246 EQU D'16'
LUT_VALUE_247 EQU D'16'
LUT_VALUE_248 EQU D'16'
LUT_VALUE_249 EQU D'16'
LUT_VALUE_250 EQU D'16'
LUT_VALUE_251 EQU D'16'
LUT_VALUE_252 EQU D'16'
LUT_VALUE_253 EQU D'16'
LUT_VALUE_254 EQU D'16'
LUT_VALUE_255 EQU D'16'
LUT_REG EQU ADRES
BTFSC LUT_REG,7
GOTO LUT_BINSEARCH_1XXXXXXX
LUT_BINSEARCH_0XXXXXXX
BTFSC LUT_REG,6
GOTO LUT_BINSEARCH_01XXXXXX
LUT_BINSEARCH_00XXXXXX
BTFSC LUT_REG,5
GOTO LUT_BINSEARCH_001XXXXX
LUT_BINSEARCH_000XXXXX
BTFSC LUT_REG,4
GOTO LUT_BINSEARCH_0001XXXX
LUT_BINSEARCH_0000XXXX
BTFSC LUT_REG,3
GOTO LUT_BINSEARCH_00001XXX
LUT_BINSEARCH_00000XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_000001XX
LUT_BINSEARCH_000000XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0000001X
LUT_BINSEARCH_0000000X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00000001
LUT_BINSEARCH_00000000
MOVLW LUT_VALUE_0
GOTO LUT_EXIT
LUT_BINSEARCH_00000001
MOVLW LUT_VALUE_1
GOTO LUT_EXIT
LUT_BINSEARCH_0000001X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00000011
LUT_BINSEARCH_00000010
MOVLW LUT_VALUE_2
GOTO LUT_EXIT
LUT_BINSEARCH_00000011
MOVLW LUT_VALUE_3
GOTO LUT_EXIT
LUT_BINSEARCH_000001XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0000011X
LUT_BINSEARCH_0000010X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00000101
LUT_BINSEARCH_00000100
MOVLW LUT_VALUE_4
GOTO LUT_EXIT
LUT_BINSEARCH_00000101
MOVLW LUT_VALUE_5
GOTO LUT_EXIT
LUT_BINSEARCH_0000011X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00000111
LUT_BINSEARCH_00000110
MOVLW LUT_VALUE_6
GOTO LUT_EXIT
LUT_BINSEARCH_00000111
MOVLW LUT_VALUE_7
GOTO LUT_EXIT
LUT_BINSEARCH_00001XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_000011XX
LUT_BINSEARCH_000010XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0000101X
LUT_BINSEARCH_0000100X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00001001
LUT_BINSEARCH_00001000
MOVLW LUT_VALUE_8
GOTO LUT_EXIT
LUT_BINSEARCH_00001001
MOVLW LUT_VALUE_9
GOTO LUT_EXIT
LUT_BINSEARCH_0000101X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00001011
LUT_BINSEARCH_00001010
MOVLW LUT_VALUE_10
GOTO LUT_EXIT
LUT_BINSEARCH_00001011
MOVLW LUT_VALUE_11
GOTO LUT_EXIT
LUT_BINSEARCH_000011XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0000111X
LUT_BINSEARCH_0000110X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00001101
LUT_BINSEARCH_00001100
MOVLW LUT_VALUE_12
GOTO LUT_EXIT
LUT_BINSEARCH_00001101
MOVLW LUT_VALUE_13
GOTO LUT_EXIT
LUT_BINSEARCH_0000111X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00001111
LUT_BINSEARCH_00001110
MOVLW LUT_VALUE_14
GOTO LUT_EXIT
LUT_BINSEARCH_00001111
MOVLW LUT_VALUE_15
GOTO LUT_EXIT
LUT_BINSEARCH_0001XXXX
BTFSC LUT_REG,3
GOTO LUT_BINSEARCH_00011XXX
LUT_BINSEARCH_00010XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_000101XX
LUT_BINSEARCH_000100XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0001001X
LUT_BINSEARCH_0001000X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00010001
LUT_BINSEARCH_00010000
MOVLW LUT_VALUE_16
GOTO LUT_EXIT
LUT_BINSEARCH_00010001
MOVLW LUT_VALUE_17
GOTO LUT_EXIT
LUT_BINSEARCH_0001001X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00010011
LUT_BINSEARCH_00010010
MOVLW LUT_VALUE_18
GOTO LUT_EXIT
LUT_BINSEARCH_00010011
MOVLW LUT_VALUE_19
GOTO LUT_EXIT
LUT_BINSEARCH_000101XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0001011X
LUT_BINSEARCH_0001010X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00010101
LUT_BINSEARCH_00010100
MOVLW LUT_VALUE_20
GOTO LUT_EXIT
LUT_BINSEARCH_00010101
MOVLW LUT_VALUE_21
GOTO LUT_EXIT
LUT_BINSEARCH_0001011X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00010111
LUT_BINSEARCH_00010110
MOVLW LUT_VALUE_22
GOTO LUT_EXIT
LUT_BINSEARCH_00010111
MOVLW LUT_VALUE_23
GOTO LUT_EXIT
LUT_BINSEARCH_00011XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_000111XX
LUT_BINSEARCH_000110XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0001101X
LUT_BINSEARCH_0001100X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00011001
LUT_BINSEARCH_00011000
MOVLW LUT_VALUE_24
GOTO LUT_EXIT
LUT_BINSEARCH_00011001
MOVLW LUT_VALUE_25
GOTO LUT_EXIT
LUT_BINSEARCH_0001101X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00011011
LUT_BINSEARCH_00011010
MOVLW LUT_VALUE_26
GOTO LUT_EXIT
LUT_BINSEARCH_00011011
MOVLW LUT_VALUE_27
GOTO LUT_EXIT
LUT_BINSEARCH_000111XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0001111X
LUT_BINSEARCH_0001110X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00011101
LUT_BINSEARCH_00011100
MOVLW LUT_VALUE_28
GOTO LUT_EXIT
LUT_BINSEARCH_00011101
MOVLW LUT_VALUE_29
GOTO LUT_EXIT
LUT_BINSEARCH_0001111X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00011111
LUT_BINSEARCH_00011110
MOVLW LUT_VALUE_30
GOTO LUT_EXIT
LUT_BINSEARCH_00011111
MOVLW LUT_VALUE_31
GOTO LUT_EXIT
LUT_BINSEARCH_001XXXXX
BTFSC LUT_REG,4
GOTO LUT_BINSEARCH_0011XXXX
LUT_BINSEARCH_0010XXXX
BTFSC LUT_REG,3
GOTO LUT_BINSEARCH_00101XXX
LUT_BINSEARCH_00100XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_001001XX
LUT_BINSEARCH_001000XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0010001X
LUT_BINSEARCH_0010000X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00100001
LUT_BINSEARCH_00100000
MOVLW LUT_VALUE_32
GOTO LUT_EXIT
LUT_BINSEARCH_00100001
MOVLW LUT_VALUE_33
GOTO LUT_EXIT
LUT_BINSEARCH_0010001X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00100011
LUT_BINSEARCH_00100010
MOVLW LUT_VALUE_34
GOTO LUT_EXIT
LUT_BINSEARCH_00100011
MOVLW LUT_VALUE_35
GOTO LUT_EXIT
LUT_BINSEARCH_001001XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0010011X
LUT_BINSEARCH_0010010X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00100101
LUT_BINSEARCH_00100100
MOVLW LUT_VALUE_36
GOTO LUT_EXIT
LUT_BINSEARCH_00100101
MOVLW LUT_VALUE_37
GOTO LUT_EXIT
LUT_BINSEARCH_0010011X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00100111
LUT_BINSEARCH_00100110
MOVLW LUT_VALUE_38
GOTO LUT_EXIT
LUT_BINSEARCH_00100111
MOVLW LUT_VALUE_39
GOTO LUT_EXIT
LUT_BINSEARCH_00101XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_001011XX
LUT_BINSEARCH_001010XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0010101X
LUT_BINSEARCH_0010100X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00101001
LUT_BINSEARCH_00101000
MOVLW LUT_VALUE_40
GOTO LUT_EXIT
LUT_BINSEARCH_00101001
MOVLW LUT_VALUE_41
GOTO LUT_EXIT
LUT_BINSEARCH_0010101X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00101011
LUT_BINSEARCH_00101010
MOVLW LUT_VALUE_42
GOTO LUT_EXIT
LUT_BINSEARCH_00101011
MOVLW LUT_VALUE_43
GOTO LUT_EXIT
LUT_BINSEARCH_001011XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0010111X
LUT_BINSEARCH_0010110X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00101101
LUT_BINSEARCH_00101100
MOVLW LUT_VALUE_44
GOTO LUT_EXIT
LUT_BINSEARCH_00101101
MOVLW LUT_VALUE_45
GOTO LUT_EXIT
LUT_BINSEARCH_0010111X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00101111
LUT_BINSEARCH_00101110
MOVLW LUT_VALUE_46
GOTO LUT_EXIT
LUT_BINSEARCH_00101111
MOVLW LUT_VALUE_47
GOTO LUT_EXIT
LUT_BINSEARCH_0011XXXX
BTFSC LUT_REG,3
GOTO LUT_BINSEARCH_00111XXX
LUT_BINSEARCH_00110XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_001101XX
LUT_BINSEARCH_001100XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0011001X
LUT_BINSEARCH_0011000X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00110001
LUT_BINSEARCH_00110000
MOVLW LUT_VALUE_48
GOTO LUT_EXIT
LUT_BINSEARCH_00110001
MOVLW LUT_VALUE_49
GOTO LUT_EXIT
LUT_BINSEARCH_0011001X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00110011
LUT_BINSEARCH_00110010
MOVLW LUT_VALUE_50
GOTO LUT_EXIT
LUT_BINSEARCH_00110011
MOVLW LUT_VALUE_51
GOTO LUT_EXIT
LUT_BINSEARCH_001101XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0011011X
LUT_BINSEARCH_0011010X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00110101
LUT_BINSEARCH_00110100
MOVLW LUT_VALUE_52
GOTO LUT_EXIT
LUT_BINSEARCH_00110101
MOVLW LUT_VALUE_53
GOTO LUT_EXIT
LUT_BINSEARCH_0011011X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00110111
LUT_BINSEARCH_00110110
MOVLW LUT_VALUE_54
GOTO LUT_EXIT
LUT_BINSEARCH_00110111
MOVLW LUT_VALUE_55
GOTO LUT_EXIT
LUT_BINSEARCH_00111XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_001111XX
LUT_BINSEARCH_001110XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0011101X
LUT_BINSEARCH_0011100X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00111001
LUT_BINSEARCH_00111000
MOVLW LUT_VALUE_56
GOTO LUT_EXIT
LUT_BINSEARCH_00111001
MOVLW LUT_VALUE_57
GOTO LUT_EXIT
LUT_BINSEARCH_0011101X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00111011
LUT_BINSEARCH_00111010
MOVLW LUT_VALUE_58
GOTO LUT_EXIT
LUT_BINSEARCH_00111011
MOVLW LUT_VALUE_59
GOTO LUT_EXIT
LUT_BINSEARCH_001111XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0011111X
LUT_BINSEARCH_0011110X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00111101
LUT_BINSEARCH_00111100
MOVLW LUT_VALUE_60
GOTO LUT_EXIT
LUT_BINSEARCH_00111101
MOVLW LUT_VALUE_61
GOTO LUT_EXIT
LUT_BINSEARCH_0011111X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_00111111
LUT_BINSEARCH_00111110
MOVLW LUT_VALUE_62
GOTO LUT_EXIT
LUT_BINSEARCH_00111111
MOVLW LUT_VALUE_63
GOTO LUT_EXIT
LUT_BINSEARCH_01XXXXXX
BTFSC LUT_REG,5
GOTO LUT_BINSEARCH_011XXXXX
LUT_BINSEARCH_010XXXXX
BTFSC LUT_REG,4
GOTO LUT_BINSEARCH_0101XXXX
LUT_BINSEARCH_0100XXXX
BTFSC LUT_REG,3
GOTO LUT_BINSEARCH_01001XXX
LUT_BINSEARCH_01000XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_010001XX
LUT_BINSEARCH_010000XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0100001X
LUT_BINSEARCH_0100000X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01000001
LUT_BINSEARCH_01000000
MOVLW LUT_VALUE_64
GOTO LUT_EXIT
LUT_BINSEARCH_01000001
MOVLW LUT_VALUE_65
GOTO LUT_EXIT
LUT_BINSEARCH_0100001X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01000011
LUT_BINSEARCH_01000010
MOVLW LUT_VALUE_66
GOTO LUT_EXIT
LUT_BINSEARCH_01000011
MOVLW LUT_VALUE_67
GOTO LUT_EXIT
LUT_BINSEARCH_010001XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0100011X
LUT_BINSEARCH_0100010X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01000101
LUT_BINSEARCH_01000100
MOVLW LUT_VALUE_68
GOTO LUT_EXIT
LUT_BINSEARCH_01000101
MOVLW LUT_VALUE_69
GOTO LUT_EXIT
LUT_BINSEARCH_0100011X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01000111
LUT_BINSEARCH_01000110
MOVLW LUT_VALUE_70
GOTO LUT_EXIT
LUT_BINSEARCH_01000111
MOVLW LUT_VALUE_71
GOTO LUT_EXIT
LUT_BINSEARCH_01001XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_010011XX
LUT_BINSEARCH_010010XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0100101X
LUT_BINSEARCH_0100100X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01001001
LUT_BINSEARCH_01001000
MOVLW LUT_VALUE_72
GOTO LUT_EXIT
LUT_BINSEARCH_01001001
MOVLW LUT_VALUE_73
GOTO LUT_EXIT
LUT_BINSEARCH_0100101X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01001011
LUT_BINSEARCH_01001010
MOVLW LUT_VALUE_74
GOTO LUT_EXIT
LUT_BINSEARCH_01001011
MOVLW LUT_VALUE_75
GOTO LUT_EXIT
LUT_BINSEARCH_010011XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0100111X
LUT_BINSEARCH_0100110X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01001101
LUT_BINSEARCH_01001100
MOVLW LUT_VALUE_76
GOTO LUT_EXIT
LUT_BINSEARCH_01001101
MOVLW LUT_VALUE_77
GOTO LUT_EXIT
LUT_BINSEARCH_0100111X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01001111
LUT_BINSEARCH_01001110
MOVLW LUT_VALUE_78
GOTO LUT_EXIT
LUT_BINSEARCH_01001111
MOVLW LUT_VALUE_79
GOTO LUT_EXIT
LUT_BINSEARCH_0101XXXX
BTFSC LUT_REG,3
GOTO LUT_BINSEARCH_01011XXX
LUT_BINSEARCH_01010XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_010101XX
LUT_BINSEARCH_010100XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0101001X
LUT_BINSEARCH_0101000X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01010001
LUT_BINSEARCH_01010000
MOVLW LUT_VALUE_80
GOTO LUT_EXIT
LUT_BINSEARCH_01010001
MOVLW LUT_VALUE_81
GOTO LUT_EXIT
LUT_BINSEARCH_0101001X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01010011
LUT_BINSEARCH_01010010
MOVLW LUT_VALUE_82
GOTO LUT_EXIT
LUT_BINSEARCH_01010011
MOVLW LUT_VALUE_83
GOTO LUT_EXIT
LUT_BINSEARCH_010101XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0101011X
LUT_BINSEARCH_0101010X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01010101
LUT_BINSEARCH_01010100
MOVLW LUT_VALUE_84
GOTO LUT_EXIT
LUT_BINSEARCH_01010101
MOVLW LUT_VALUE_85
GOTO LUT_EXIT
LUT_BINSEARCH_0101011X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01010111
LUT_BINSEARCH_01010110
MOVLW LUT_VALUE_86
GOTO LUT_EXIT
LUT_BINSEARCH_01010111
MOVLW LUT_VALUE_87
GOTO LUT_EXIT
LUT_BINSEARCH_01011XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_010111XX
LUT_BINSEARCH_010110XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0101101X
LUT_BINSEARCH_0101100X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01011001
LUT_BINSEARCH_01011000
MOVLW LUT_VALUE_88
GOTO LUT_EXIT
LUT_BINSEARCH_01011001
MOVLW LUT_VALUE_89
GOTO LUT_EXIT
LUT_BINSEARCH_0101101X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01011011
LUT_BINSEARCH_01011010
MOVLW LUT_VALUE_90
GOTO LUT_EXIT
LUT_BINSEARCH_01011011
MOVLW LUT_VALUE_91
GOTO LUT_EXIT
LUT_BINSEARCH_010111XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0101111X
LUT_BINSEARCH_0101110X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01011101
LUT_BINSEARCH_01011100
MOVLW LUT_VALUE_92
GOTO LUT_EXIT
LUT_BINSEARCH_01011101
MOVLW LUT_VALUE_93
GOTO LUT_EXIT
LUT_BINSEARCH_0101111X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01011111
LUT_BINSEARCH_01011110
MOVLW LUT_VALUE_94
GOTO LUT_EXIT
LUT_BINSEARCH_01011111
MOVLW LUT_VALUE_95
GOTO LUT_EXIT
LUT_BINSEARCH_011XXXXX
BTFSC LUT_REG,4
GOTO LUT_BINSEARCH_0111XXXX
LUT_BINSEARCH_0110XXXX
BTFSC LUT_REG,3
GOTO LUT_BINSEARCH_01101XXX
LUT_BINSEARCH_01100XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_011001XX
LUT_BINSEARCH_011000XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0110001X
LUT_BINSEARCH_0110000X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01100001
LUT_BINSEARCH_01100000
MOVLW LUT_VALUE_96
GOTO LUT_EXIT
LUT_BINSEARCH_01100001
MOVLW LUT_VALUE_97
GOTO LUT_EXIT
LUT_BINSEARCH_0110001X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01100011
LUT_BINSEARCH_01100010
MOVLW LUT_VALUE_98
GOTO LUT_EXIT
LUT_BINSEARCH_01100011
MOVLW LUT_VALUE_99
GOTO LUT_EXIT
LUT_BINSEARCH_011001XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0110011X
LUT_BINSEARCH_0110010X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01100101
LUT_BINSEARCH_01100100
MOVLW LUT_VALUE_100
GOTO LUT_EXIT
LUT_BINSEARCH_01100101
MOVLW LUT_VALUE_101
GOTO LUT_EXIT
LUT_BINSEARCH_0110011X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01100111
LUT_BINSEARCH_01100110
MOVLW LUT_VALUE_102
GOTO LUT_EXIT
LUT_BINSEARCH_01100111
MOVLW LUT_VALUE_103
GOTO LUT_EXIT
LUT_BINSEARCH_01101XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_011011XX
LUT_BINSEARCH_011010XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0110101X
LUT_BINSEARCH_0110100X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01101001
LUT_BINSEARCH_01101000
MOVLW LUT_VALUE_104
GOTO LUT_EXIT
LUT_BINSEARCH_01101001
MOVLW LUT_VALUE_105
GOTO LUT_EXIT
LUT_BINSEARCH_0110101X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01101011
LUT_BINSEARCH_01101010
MOVLW LUT_VALUE_106
GOTO LUT_EXIT
LUT_BINSEARCH_01101011
MOVLW LUT_VALUE_107
GOTO LUT_EXIT
LUT_BINSEARCH_011011XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0110111X
LUT_BINSEARCH_0110110X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01101101
LUT_BINSEARCH_01101100
MOVLW LUT_VALUE_108
GOTO LUT_EXIT
LUT_BINSEARCH_01101101
MOVLW LUT_VALUE_109
GOTO LUT_EXIT
LUT_BINSEARCH_0110111X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01101111
LUT_BINSEARCH_01101110
MOVLW LUT_VALUE_110
GOTO LUT_EXIT
LUT_BINSEARCH_01101111
MOVLW LUT_VALUE_111
GOTO LUT_EXIT
LUT_BINSEARCH_0111XXXX
BTFSC LUT_REG,3
GOTO LUT_BINSEARCH_01111XXX
LUT_BINSEARCH_01110XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_011101XX
LUT_BINSEARCH_011100XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0111001X
LUT_BINSEARCH_0111000X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01110001
LUT_BINSEARCH_01110000
MOVLW LUT_VALUE_112
GOTO LUT_EXIT
LUT_BINSEARCH_01110001
MOVLW LUT_VALUE_113
GOTO LUT_EXIT
LUT_BINSEARCH_0111001X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01110011
LUT_BINSEARCH_01110010
MOVLW LUT_VALUE_114
GOTO LUT_EXIT
LUT_BINSEARCH_01110011
MOVLW LUT_VALUE_115
GOTO LUT_EXIT
LUT_BINSEARCH_011101XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0111011X
LUT_BINSEARCH_0111010X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01110101
LUT_BINSEARCH_01110100
MOVLW LUT_VALUE_116
GOTO LUT_EXIT
LUT_BINSEARCH_01110101
MOVLW LUT_VALUE_117
GOTO LUT_EXIT
LUT_BINSEARCH_0111011X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01110111
LUT_BINSEARCH_01110110
MOVLW LUT_VALUE_118
GOTO LUT_EXIT
LUT_BINSEARCH_01110111
MOVLW LUT_VALUE_119
GOTO LUT_EXIT
LUT_BINSEARCH_01111XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_011111XX
LUT_BINSEARCH_011110XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0111101X
LUT_BINSEARCH_0111100X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01111001
LUT_BINSEARCH_01111000
MOVLW LUT_VALUE_120
GOTO LUT_EXIT
LUT_BINSEARCH_01111001
MOVLW LUT_VALUE_121
GOTO LUT_EXIT
LUT_BINSEARCH_0111101X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01111011
LUT_BINSEARCH_01111010
MOVLW LUT_VALUE_122
GOTO LUT_EXIT
LUT_BINSEARCH_01111011
MOVLW LUT_VALUE_123
GOTO LUT_EXIT
LUT_BINSEARCH_011111XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_0111111X
LUT_BINSEARCH_0111110X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01111101
LUT_BINSEARCH_01111100
MOVLW LUT_VALUE_124
GOTO LUT_EXIT
LUT_BINSEARCH_01111101
MOVLW LUT_VALUE_125
GOTO LUT_EXIT
LUT_BINSEARCH_0111111X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_01111111
LUT_BINSEARCH_01111110
MOVLW LUT_VALUE_126
GOTO LUT_EXIT
LUT_BINSEARCH_01111111
MOVLW LUT_VALUE_127
GOTO LUT_EXIT
LUT_BINSEARCH_1XXXXXXX
BTFSC LUT_REG,6
GOTO LUT_BINSEARCH_11XXXXXX
LUT_BINSEARCH_10XXXXXX
BTFSC LUT_REG,5
GOTO LUT_BINSEARCH_101XXXXX
LUT_BINSEARCH_100XXXXX
BTFSC LUT_REG,4
GOTO LUT_BINSEARCH_1001XXXX
LUT_BINSEARCH_1000XXXX
BTFSC LUT_REG,3
GOTO LUT_BINSEARCH_10001XXX
LUT_BINSEARCH_10000XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_100001XX
LUT_BINSEARCH_100000XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1000001X
LUT_BINSEARCH_1000000X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10000001
LUT_BINSEARCH_10000000
MOVLW LUT_VALUE_128
GOTO LUT_EXIT
LUT_BINSEARCH_10000001
MOVLW LUT_VALUE_129
GOTO LUT_EXIT
LUT_BINSEARCH_1000001X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10000011
LUT_BINSEARCH_10000010
MOVLW LUT_VALUE_130
GOTO LUT_EXIT
LUT_BINSEARCH_10000011
MOVLW LUT_VALUE_131
GOTO LUT_EXIT
LUT_BINSEARCH_100001XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1000011X
LUT_BINSEARCH_1000010X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10000101
LUT_BINSEARCH_10000100
MOVLW LUT_VALUE_132
GOTO LUT_EXIT
LUT_BINSEARCH_10000101
MOVLW LUT_VALUE_133
GOTO LUT_EXIT
LUT_BINSEARCH_1000011X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10000111
LUT_BINSEARCH_10000110
MOVLW LUT_VALUE_134
GOTO LUT_EXIT
LUT_BINSEARCH_10000111
MOVLW LUT_VALUE_135
GOTO LUT_EXIT
LUT_BINSEARCH_10001XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_100011XX
LUT_BINSEARCH_100010XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1000101X
LUT_BINSEARCH_1000100X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10001001
LUT_BINSEARCH_10001000
MOVLW LUT_VALUE_136
GOTO LUT_EXIT
LUT_BINSEARCH_10001001
MOVLW LUT_VALUE_137
GOTO LUT_EXIT
LUT_BINSEARCH_1000101X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10001011
LUT_BINSEARCH_10001010
MOVLW LUT_VALUE_138
GOTO LUT_EXIT
LUT_BINSEARCH_10001011
MOVLW LUT_VALUE_139
GOTO LUT_EXIT
LUT_BINSEARCH_100011XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1000111X
LUT_BINSEARCH_1000110X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10001101
LUT_BINSEARCH_10001100
MOVLW LUT_VALUE_140
GOTO LUT_EXIT
LUT_BINSEARCH_10001101
MOVLW LUT_VALUE_141
GOTO LUT_EXIT
LUT_BINSEARCH_1000111X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10001111
LUT_BINSEARCH_10001110
MOVLW LUT_VALUE_142
GOTO LUT_EXIT
LUT_BINSEARCH_10001111
MOVLW LUT_VALUE_143
GOTO LUT_EXIT
LUT_BINSEARCH_1001XXXX
BTFSC LUT_REG,3
GOTO LUT_BINSEARCH_10011XXX
LUT_BINSEARCH_10010XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_100101XX
LUT_BINSEARCH_100100XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1001001X
LUT_BINSEARCH_1001000X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10010001
LUT_BINSEARCH_10010000
MOVLW LUT_VALUE_144
GOTO LUT_EXIT
LUT_BINSEARCH_10010001
MOVLW LUT_VALUE_145
GOTO LUT_EXIT
LUT_BINSEARCH_1001001X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10010011
LUT_BINSEARCH_10010010
MOVLW LUT_VALUE_146
GOTO LUT_EXIT
LUT_BINSEARCH_10010011
MOVLW LUT_VALUE_147
GOTO LUT_EXIT
LUT_BINSEARCH_100101XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1001011X
LUT_BINSEARCH_1001010X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10010101
LUT_BINSEARCH_10010100
MOVLW LUT_VALUE_148
GOTO LUT_EXIT
LUT_BINSEARCH_10010101
MOVLW LUT_VALUE_149
GOTO LUT_EXIT
LUT_BINSEARCH_1001011X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10010111
LUT_BINSEARCH_10010110
MOVLW LUT_VALUE_150
GOTO LUT_EXIT
LUT_BINSEARCH_10010111
MOVLW LUT_VALUE_151
GOTO LUT_EXIT
LUT_BINSEARCH_10011XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_100111XX
LUT_BINSEARCH_100110XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1001101X
LUT_BINSEARCH_1001100X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10011001
LUT_BINSEARCH_10011000
MOVLW LUT_VALUE_152
GOTO LUT_EXIT
LUT_BINSEARCH_10011001
MOVLW LUT_VALUE_153
GOTO LUT_EXIT
LUT_BINSEARCH_1001101X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10011011
LUT_BINSEARCH_10011010
MOVLW LUT_VALUE_154
GOTO LUT_EXIT
LUT_BINSEARCH_10011011
MOVLW LUT_VALUE_155
GOTO LUT_EXIT
LUT_BINSEARCH_100111XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1001111X
LUT_BINSEARCH_1001110X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10011101
LUT_BINSEARCH_10011100
MOVLW LUT_VALUE_156
GOTO LUT_EXIT
LUT_BINSEARCH_10011101
MOVLW LUT_VALUE_157
GOTO LUT_EXIT
LUT_BINSEARCH_1001111X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10011111
LUT_BINSEARCH_10011110
MOVLW LUT_VALUE_158
GOTO LUT_EXIT
LUT_BINSEARCH_10011111
MOVLW LUT_VALUE_159
GOTO LUT_EXIT
LUT_BINSEARCH_101XXXXX
BTFSC LUT_REG,4
GOTO LUT_BINSEARCH_1011XXXX
LUT_BINSEARCH_1010XXXX
BTFSC LUT_REG,3
GOTO LUT_BINSEARCH_10101XXX
LUT_BINSEARCH_10100XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_101001XX
LUT_BINSEARCH_101000XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1010001X
LUT_BINSEARCH_1010000X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10100001
LUT_BINSEARCH_10100000
MOVLW LUT_VALUE_160
GOTO LUT_EXIT
LUT_BINSEARCH_10100001
MOVLW LUT_VALUE_161
GOTO LUT_EXIT
LUT_BINSEARCH_1010001X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10100011
LUT_BINSEARCH_10100010
MOVLW LUT_VALUE_162
GOTO LUT_EXIT
LUT_BINSEARCH_10100011
MOVLW LUT_VALUE_163
GOTO LUT_EXIT
LUT_BINSEARCH_101001XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1010011X
LUT_BINSEARCH_1010010X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10100101
LUT_BINSEARCH_10100100
MOVLW LUT_VALUE_164
GOTO LUT_EXIT
LUT_BINSEARCH_10100101
MOVLW LUT_VALUE_165
GOTO LUT_EXIT
LUT_BINSEARCH_1010011X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10100111
LUT_BINSEARCH_10100110
MOVLW LUT_VALUE_166
GOTO LUT_EXIT
LUT_BINSEARCH_10100111
MOVLW LUT_VALUE_167
GOTO LUT_EXIT
LUT_BINSEARCH_10101XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_101011XX
LUT_BINSEARCH_101010XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1010101X
LUT_BINSEARCH_1010100X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10101001
LUT_BINSEARCH_10101000
MOVLW LUT_VALUE_168
GOTO LUT_EXIT
LUT_BINSEARCH_10101001
MOVLW LUT_VALUE_169
GOTO LUT_EXIT
LUT_BINSEARCH_1010101X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10101011
LUT_BINSEARCH_10101010
MOVLW LUT_VALUE_170
GOTO LUT_EXIT
LUT_BINSEARCH_10101011
MOVLW LUT_VALUE_171
GOTO LUT_EXIT
LUT_BINSEARCH_101011XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1010111X
LUT_BINSEARCH_1010110X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10101101
LUT_BINSEARCH_10101100
MOVLW LUT_VALUE_172
GOTO LUT_EXIT
LUT_BINSEARCH_10101101
MOVLW LUT_VALUE_173
GOTO LUT_EXIT
LUT_BINSEARCH_1010111X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10101111
LUT_BINSEARCH_10101110
MOVLW LUT_VALUE_174
GOTO LUT_EXIT
LUT_BINSEARCH_10101111
MOVLW LUT_VALUE_175
GOTO LUT_EXIT
LUT_BINSEARCH_1011XXXX
BTFSC LUT_REG,3
GOTO LUT_BINSEARCH_10111XXX
LUT_BINSEARCH_10110XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_101101XX
LUT_BINSEARCH_101100XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1011001X
LUT_BINSEARCH_1011000X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10110001
LUT_BINSEARCH_10110000
MOVLW LUT_VALUE_176
GOTO LUT_EXIT
LUT_BINSEARCH_10110001
MOVLW LUT_VALUE_177
GOTO LUT_EXIT
LUT_BINSEARCH_1011001X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10110011
LUT_BINSEARCH_10110010
MOVLW LUT_VALUE_178
GOTO LUT_EXIT
LUT_BINSEARCH_10110011
MOVLW LUT_VALUE_179
GOTO LUT_EXIT
LUT_BINSEARCH_101101XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1011011X
LUT_BINSEARCH_1011010X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10110101
LUT_BINSEARCH_10110100
MOVLW LUT_VALUE_180
GOTO LUT_EXIT
LUT_BINSEARCH_10110101
MOVLW LUT_VALUE_181
GOTO LUT_EXIT
LUT_BINSEARCH_1011011X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10110111
LUT_BINSEARCH_10110110
MOVLW LUT_VALUE_182
GOTO LUT_EXIT
LUT_BINSEARCH_10110111
MOVLW LUT_VALUE_183
GOTO LUT_EXIT
LUT_BINSEARCH_10111XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_101111XX
LUT_BINSEARCH_101110XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1011101X
LUT_BINSEARCH_1011100X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10111001
LUT_BINSEARCH_10111000
MOVLW LUT_VALUE_184
GOTO LUT_EXIT
LUT_BINSEARCH_10111001
MOVLW LUT_VALUE_185
GOTO LUT_EXIT
LUT_BINSEARCH_1011101X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10111011
LUT_BINSEARCH_10111010
MOVLW LUT_VALUE_186
GOTO LUT_EXIT
LUT_BINSEARCH_10111011
MOVLW LUT_VALUE_187
GOTO LUT_EXIT
LUT_BINSEARCH_101111XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1011111X
LUT_BINSEARCH_1011110X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10111101
LUT_BINSEARCH_10111100
MOVLW LUT_VALUE_188
GOTO LUT_EXIT
LUT_BINSEARCH_10111101
MOVLW LUT_VALUE_189
GOTO LUT_EXIT
LUT_BINSEARCH_1011111X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_10111111
LUT_BINSEARCH_10111110
MOVLW LUT_VALUE_190
GOTO LUT_EXIT
LUT_BINSEARCH_10111111
MOVLW LUT_VALUE_191
GOTO LUT_EXIT
LUT_BINSEARCH_11XXXXXX
BTFSC LUT_REG,5
GOTO LUT_BINSEARCH_111XXXXX
LUT_BINSEARCH_110XXXXX
BTFSC LUT_REG,4
GOTO LUT_BINSEARCH_1101XXXX
LUT_BINSEARCH_1100XXXX
BTFSC LUT_REG,3
GOTO LUT_BINSEARCH_11001XXX
LUT_BINSEARCH_11000XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_110001XX
LUT_BINSEARCH_110000XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1100001X
LUT_BINSEARCH_1100000X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11000001
LUT_BINSEARCH_11000000
MOVLW LUT_VALUE_192
GOTO LUT_EXIT
LUT_BINSEARCH_11000001
MOVLW LUT_VALUE_193
GOTO LUT_EXIT
LUT_BINSEARCH_1100001X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11000011
LUT_BINSEARCH_11000010
MOVLW LUT_VALUE_194
GOTO LUT_EXIT
LUT_BINSEARCH_11000011
MOVLW LUT_VALUE_195
GOTO LUT_EXIT
LUT_BINSEARCH_110001XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1100011X
LUT_BINSEARCH_1100010X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11000101
LUT_BINSEARCH_11000100
MOVLW LUT_VALUE_196
GOTO LUT_EXIT
LUT_BINSEARCH_11000101
MOVLW LUT_VALUE_197
GOTO LUT_EXIT
LUT_BINSEARCH_1100011X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11000111
LUT_BINSEARCH_11000110
MOVLW LUT_VALUE_198
GOTO LUT_EXIT
LUT_BINSEARCH_11000111
MOVLW LUT_VALUE_199
GOTO LUT_EXIT
LUT_BINSEARCH_11001XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_110011XX
LUT_BINSEARCH_110010XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1100101X
LUT_BINSEARCH_1100100X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11001001
LUT_BINSEARCH_11001000
MOVLW LUT_VALUE_200
GOTO LUT_EXIT
LUT_BINSEARCH_11001001
MOVLW LUT_VALUE_201
GOTO LUT_EXIT
LUT_BINSEARCH_1100101X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11001011
LUT_BINSEARCH_11001010
MOVLW LUT_VALUE_202
GOTO LUT_EXIT
LUT_BINSEARCH_11001011
MOVLW LUT_VALUE_203
GOTO LUT_EXIT
LUT_BINSEARCH_110011XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1100111X
LUT_BINSEARCH_1100110X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11001101
LUT_BINSEARCH_11001100
MOVLW LUT_VALUE_204
GOTO LUT_EXIT
LUT_BINSEARCH_11001101
MOVLW LUT_VALUE_205
GOTO LUT_EXIT
LUT_BINSEARCH_1100111X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11001111
LUT_BINSEARCH_11001110
MOVLW LUT_VALUE_206
GOTO LUT_EXIT
LUT_BINSEARCH_11001111
MOVLW LUT_VALUE_207
GOTO LUT_EXIT
LUT_BINSEARCH_1101XXXX
BTFSC LUT_REG,3
GOTO LUT_BINSEARCH_11011XXX
LUT_BINSEARCH_11010XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_110101XX
LUT_BINSEARCH_110100XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1101001X
LUT_BINSEARCH_1101000X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11010001
LUT_BINSEARCH_11010000
MOVLW LUT_VALUE_208
GOTO LUT_EXIT
LUT_BINSEARCH_11010001
MOVLW LUT_VALUE_209
GOTO LUT_EXIT
LUT_BINSEARCH_1101001X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11010011
LUT_BINSEARCH_11010010
MOVLW LUT_VALUE_210
GOTO LUT_EXIT
LUT_BINSEARCH_11010011
MOVLW LUT_VALUE_211
GOTO LUT_EXIT
LUT_BINSEARCH_110101XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1101011X
LUT_BINSEARCH_1101010X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11010101
LUT_BINSEARCH_11010100
MOVLW LUT_VALUE_212
GOTO LUT_EXIT
LUT_BINSEARCH_11010101
MOVLW LUT_VALUE_213
GOTO LUT_EXIT
LUT_BINSEARCH_1101011X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11010111
LUT_BINSEARCH_11010110
MOVLW LUT_VALUE_214
GOTO LUT_EXIT
LUT_BINSEARCH_11010111
MOVLW LUT_VALUE_215
GOTO LUT_EXIT
LUT_BINSEARCH_11011XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_110111XX
LUT_BINSEARCH_110110XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1101101X
LUT_BINSEARCH_1101100X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11011001
LUT_BINSEARCH_11011000
MOVLW LUT_VALUE_216
GOTO LUT_EXIT
LUT_BINSEARCH_11011001
MOVLW LUT_VALUE_217
GOTO LUT_EXIT
LUT_BINSEARCH_1101101X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11011011
LUT_BINSEARCH_11011010
MOVLW LUT_VALUE_218
GOTO LUT_EXIT
LUT_BINSEARCH_11011011
MOVLW LUT_VALUE_219
GOTO LUT_EXIT
LUT_BINSEARCH_110111XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1101111X
LUT_BINSEARCH_1101110X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11011101
LUT_BINSEARCH_11011100
MOVLW LUT_VALUE_220
GOTO LUT_EXIT
LUT_BINSEARCH_11011101
MOVLW LUT_VALUE_221
GOTO LUT_EXIT
LUT_BINSEARCH_1101111X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11011111
LUT_BINSEARCH_11011110
MOVLW LUT_VALUE_222
GOTO LUT_EXIT
LUT_BINSEARCH_11011111
MOVLW LUT_VALUE_223
GOTO LUT_EXIT
LUT_BINSEARCH_111XXXXX
BTFSC LUT_REG,4
GOTO LUT_BINSEARCH_1111XXXX
LUT_BINSEARCH_1110XXXX
BTFSC LUT_REG,3
GOTO LUT_BINSEARCH_11101XXX
LUT_BINSEARCH_11100XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_111001XX
LUT_BINSEARCH_111000XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1110001X
LUT_BINSEARCH_1110000X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11100001
LUT_BINSEARCH_11100000
MOVLW LUT_VALUE_224
GOTO LUT_EXIT
LUT_BINSEARCH_11100001
MOVLW LUT_VALUE_225
GOTO LUT_EXIT
LUT_BINSEARCH_1110001X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11100011
LUT_BINSEARCH_11100010
MOVLW LUT_VALUE_226
GOTO LUT_EXIT
LUT_BINSEARCH_11100011
MOVLW LUT_VALUE_227
GOTO LUT_EXIT
LUT_BINSEARCH_111001XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1110011X
LUT_BINSEARCH_1110010X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11100101
LUT_BINSEARCH_11100100
MOVLW LUT_VALUE_228
GOTO LUT_EXIT
LUT_BINSEARCH_11100101
MOVLW LUT_VALUE_229
GOTO LUT_EXIT
LUT_BINSEARCH_1110011X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11100111
LUT_BINSEARCH_11100110
MOVLW LUT_VALUE_230
GOTO LUT_EXIT
LUT_BINSEARCH_11100111
MOVLW LUT_VALUE_231
GOTO LUT_EXIT
LUT_BINSEARCH_11101XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_111011XX
LUT_BINSEARCH_111010XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1110101X
LUT_BINSEARCH_1110100X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11101001
LUT_BINSEARCH_11101000
MOVLW LUT_VALUE_232
GOTO LUT_EXIT
LUT_BINSEARCH_11101001
MOVLW LUT_VALUE_233
GOTO LUT_EXIT
LUT_BINSEARCH_1110101X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11101011
LUT_BINSEARCH_11101010
MOVLW LUT_VALUE_234
GOTO LUT_EXIT
LUT_BINSEARCH_11101011
MOVLW LUT_VALUE_235
GOTO LUT_EXIT
LUT_BINSEARCH_111011XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1110111X
LUT_BINSEARCH_1110110X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11101101
LUT_BINSEARCH_11101100
MOVLW LUT_VALUE_236
GOTO LUT_EXIT
LUT_BINSEARCH_11101101
MOVLW LUT_VALUE_237
GOTO LUT_EXIT
LUT_BINSEARCH_1110111X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11101111
LUT_BINSEARCH_11101110
MOVLW LUT_VALUE_238
GOTO LUT_EXIT
LUT_BINSEARCH_11101111
MOVLW LUT_VALUE_239
GOTO LUT_EXIT
LUT_BINSEARCH_1111XXXX
BTFSC LUT_REG,3
GOTO LUT_BINSEARCH_11111XXX
LUT_BINSEARCH_11110XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_111101XX
LUT_BINSEARCH_111100XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1111001X
LUT_BINSEARCH_1111000X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11110001
LUT_BINSEARCH_11110000
MOVLW LUT_VALUE_240
GOTO LUT_EXIT
LUT_BINSEARCH_11110001
MOVLW LUT_VALUE_241
GOTO LUT_EXIT
LUT_BINSEARCH_1111001X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11110011
LUT_BINSEARCH_11110010
MOVLW LUT_VALUE_242
GOTO LUT_EXIT
LUT_BINSEARCH_11110011
MOVLW LUT_VALUE_243
GOTO LUT_EXIT
LUT_BINSEARCH_111101XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1111011X
LUT_BINSEARCH_1111010X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11110101
LUT_BINSEARCH_11110100
MOVLW LUT_VALUE_244
GOTO LUT_EXIT
LUT_BINSEARCH_11110101
MOVLW LUT_VALUE_245
GOTO LUT_EXIT
LUT_BINSEARCH_1111011X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11110111
LUT_BINSEARCH_11110110
MOVLW LUT_VALUE_246
GOTO LUT_EXIT
LUT_BINSEARCH_11110111
MOVLW LUT_VALUE_247
GOTO LUT_EXIT
LUT_BINSEARCH_11111XXX
BTFSC LUT_REG,2
GOTO LUT_BINSEARCH_111111XX
LUT_BINSEARCH_111110XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1111101X
LUT_BINSEARCH_1111100X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11111001
LUT_BINSEARCH_11111000
MOVLW LUT_VALUE_248
GOTO LUT_EXIT
LUT_BINSEARCH_11111001
MOVLW LUT_VALUE_249
GOTO LUT_EXIT
LUT_BINSEARCH_1111101X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11111011
LUT_BINSEARCH_11111010
MOVLW LUT_VALUE_250
GOTO LUT_EXIT
LUT_BINSEARCH_11111011
MOVLW LUT_VALUE_251
GOTO LUT_EXIT
LUT_BINSEARCH_111111XX
BTFSC LUT_REG,1
GOTO LUT_BINSEARCH_1111111X
LUT_BINSEARCH_1111110X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11111101
LUT_BINSEARCH_11111100
MOVLW LUT_VALUE_252
GOTO LUT_EXIT
LUT_BINSEARCH_11111101
MOVLW LUT_VALUE_253
GOTO LUT_EXIT
LUT_BINSEARCH_1111111X
BTFSC LUT_REG,0
GOTO LUT_BINSEARCH_11111111
LUT_BINSEARCH_11111110
MOVLW LUT_VALUE_254
GOTO LUT_EXIT
LUT_BINSEARCH_11111111
MOVLW LUT_VALUE_255
GOTO LUT_EXIT
LUT_EXIT
テーブルから取り出した値はワーキングレジスタに格納されます。
1ビットあたり2命令で8ビットあり、最後だけGOTOがあるので、
2*7+3 = 17サイクルでテーブルから値を取得することができます。
このコードなら最悪時の計算時間(サイクル数)が線型探索より大幅に抑えられるし、
どの値でも同じ時間(サイクル数)で値を取り出せる、という利点もあります。
みなさんも、PICのプログラムでルックアップテーブルが必要な場面に遭遇したら、このテクニックを使用してみてはいかがですか?