沼津高専 電子制御工学科


電源ボードマイコンソフトウェア


MIRS0605-ELEC-0704


改訂記録
版数 作成日 作成者 承認 改訂内容
A01 2007.2.2 善養寺 星乃 初版

 

以下にマイコンのソフトウェアを掲載する。
基本はC言語で書き、自分でハンドコンパイルしアセンブラに直した為、そのまま利用はできない。
一部に市販Cコンパイラのデモ版を利用しアセンブルしているが、PIC種類が違うため一度逆アセンブルして書き直している。
改造したい場合は以下hexを逆アセンブルして編集したほうが早い、と思う。

以下はHEXファイルである。エディタにそのままペーストし、拡張子を.hexにすることでそのまま書き込める。

:1000000000308A00B52C00000A108A100A118207FD
:1000100044344234473420344D344F34443445342E
:10002000313400340A108A100A11820743347234C2
:100030006534613474346534643420346234793422
:1000400020344B342E345A3465346E3400340A1064
:100050008A100A1182073D343D3420345034443430
:10006000423420344B346F346E3461347434613430
:1000700020343D343D3400340A108A100A118207BE
:100080004E346F3477342034433450345534203474
:10009000523475346E346E3469346E3467342134BE
:1000A00000340A108A100A11820749346E34703401
:1000B00075347434203443346F346D346D346134AA
:1000C0006E34643400340A108A100A1182075034E6
:1000D0006F347734653472344F344E343F340034E7
:1000E0000A108A100A11820750346F34773465344D
:1000F00072344F344E34213400340A108A100A11FD
:1001000082074E346F34773453347434613472342C
:10011000743469346E3467344D3449345234533452
:10012000213400340A108A100A118207CA34DE34DE
:100130003A34253434342E34323466345634203450
:10014000B1343A34253434342E34323466345634AF
:1001500000340A108A100A118207543469346D344D
:1001600065342534333464343A34253432346434D9
:100170003A3425343234643400340A108A100A11B7
:10018000820750346F347734653472344F344634D8
:1001900046343F3400340A108A100A118207503462
:1001A0006F3477346534723444346F3477346E345A
:1001B00000342D30840000080319EB280630F800C5
:1001C000F701F70BE128F80BE0287B30F700F70B7D
:1001D000E728800BDE2800344108F039C300060808
:1001E0000F394304C5008600C208031DF92806150F
:1001F000FA28061100008615000000008611003460
:100200002C08C1000130C200EC202C0EAD00F030F3
:10021000AD052D08C1000130C200EC200230AD0058
:10022000D92000340030831686000F308312AD00D1
:10023000D9203030C1000130C200EC200530AD00C3
:10024000D9203030C1000130C200EC200130AD00B7
:10025000D9203030C1000130C200EC200130AD00A7
:10026000D9202030C1000130C200EC200130AD00A7
:10027000D9202E30AC0000210830AC0000210D3018
:10028000AC0000210630AC0000210230AC0000219F
:1002900000340130AC0000210F30AD00D920003413
:1002A0003F08C100C201EC203F0EC000F030C00585
:1002B0004008C100C201EC205330F700F70B5E2963
:1002C0000034C030AC000021003412214921AC01BF
:1002D0002C080420AC0AF700BF00502109302C0282
:1002E000031D68296121AC012C081220AC0AF7001B
:1002F000BF00502110302C02031D74297E298A1161
:100300000A12D52C8E30F7002D08F8002C08F900C1
:10031000FA01F808031D96297908F800F901083058
:10032000F702F808031D9629F7019E290310F81B10
:100330009D29F90DF80DF7039629F81300000034F4
:1003400030080319112AB80034080319112AB80714
:10035000031CAB29B2297F30B802031C112A0319F0
:10036000112AB6298130B8070318112A3808F70076
:10037000F801F901FA013108BC00BC173208BB00D2
:100380003308BA001830B800B9013A1CDF29370821
:10039000FA07031CD129F90A031DD129F80A031908
:1003A000B9173608F907031CD829F80A0319B91731
:1003B0003508B200B2173208F8070318B917B90D9B
:1003C000F80CF90CFA0CBC0CBB0CBA0C0310B80BF3
:1003D000C4290130F7070318112AF81BF629BC0DB0
:1003E000FA0DF90DF80DF7030319112ABC1F072A9E
:1003F000FA0A031D072AF90A031D072AF80A031D32
:10040000072AF80CF90CFA0CF70A0319112A31081B
:10041000B9003508B906B91F0F2AF817152AF813BD
:10042000152AF701F801F901FA010000003430083B
:100430000319DD2ABC0034080319DD2ABC020318A5
:10044000222A272A7F30BC070318DD2A2D2A813073
:10045000BC02031CDD2A0319DD2A3C08F700F80161
:10046000F901FA01BB013108BA00BA173208B90024
:100470003308B8001930BC003708B8020318502AF6
:100480000130B9020318502ABA020318502ABB02DD
:100490000318502ABB0ABA0AB90A3708B807822AD1
:1004A0003608B90203186B2A0130BA0203186B2A06
:1004B000BB0203186B2ABB0ABA0A3608B907370809
:1004C000B807031C822AB90A031D822ABA0A031D2F
:1004D000822ABB0A822A35088038BA020318812A88
:1004E0000130BB020318812ABB0A35088038BA07DD
:1004F0003608B907031C5F2ABA0A031D5F2ABB0A24
:100500005F2A7A14BC0B852A902A0310B80DB90D06
:10051000BA0DBB0D0310FA0DF90DF80DBD0D3C2AF7
:100520003D1C982A0310F80CF90CFA0CBD0C9B2A00
:10053000F7030319DD2ABD1BC42A0310B80DB90D3A
:10054000BA0DBB0D3708B8020318B02A0130B90242
:100550000318B02ABA020318B02ABB02031CD32A1C
:100560003608B9020318BB2A0130BA020318BB2AA5
:10057000BB02031CD32A35088038BA020318C42AE8
:100580000130BB02031CD32AFA0A031DD32AF90A3D
:10059000031DD32AF80A031DD32AF70A0319DD2AFB
:1005A000F80CF90CFA0C3108BC003508BC06BC1F6D
:1005B000DB2AF817E12AF813E12AF701F801F9011B
:1005C000FA01000000343108BA003208BB00BC0157
:1005D000AE1FEC2A3A17BB03AE172D0803198F2B59
:1005E0007F302D02031C4B2BAD00BD010430BE003B
:1005F0000310B00DAF0DAE0DBC0DBE0BF82A0430CC
:100600002D0203180B2B03302D02031D852B0A30FE
:100610003C02031C852B0330AD02BD0A522403109B
:10062000B00DAF0DAE0DBC0D3B240230BE0003106B
:10063000BC0CAE0CAF0CB00CBE0B172B522404300C
:10064000BE000310B10CB20CB30CB40CBE0B212BCA
:100650003B2452243308B4003208B3003108B200FE
:10066000B1013B2452243208B4003108B300B10177
:10067000B2013B24BC19FF2AAD08031D442BB00A6C
:10068000AF0AAE0ABC0A852B0310B00DAF0DAE0D3C
:10069000BC0DAD03FF2AAD09AD0A7F30AD07BD012A
:1006A0000430BE000310B00DAF0DAE0DBC0DBE0B7F
:1006B000522B0430AD0705302D02031C912B522420
:1006C0000310B00DAF0DAE0DBC0D0310B00DAF0D8E
:1006D000AE0DBC0D3B240310B00DAF0DAE0DBC0D27
:1006E000BD0A0330BE000310BC0CAE0CAF0CB00C46
:1006F000BE0B732B0330AD023C1E5B2B0310BC0CF6
:10070000AE0CAF0CB00CAD035B2BAD09AD0A0330E2
:10071000AD073D0ABB02031CBB010130922B023026
:10072000922B0030B600BA1B9F2BBB1B9F2BBB0824
:1007300003199F2B2030BF005021BB0B9A2B3A1F6F
:10074000A42B2D30BF005021BA1FB02BBB1BB02BE8
:10075000BB080319B02B3030BF005021BB0BA82BB6
:10076000BA133A13361CBB2B3D08B6003D08B8003F
:100770003A0AB807E32BB61CBF2B3A0ABD00BA08E9
:100780000319392C2E30BF0050213D08B900B903A0
:100790003A083902031CCE2B3A08B900B9080319EC
:1007A000D62B3030BF005021B90BD12B3D08BE00F5
:1007B0003A0ABE0203185B2CAD033A0AB8003D08A2
:1007C000B8023808B6003C08B5002D080319ED2B17
:1007D000B7000310B50CB70BE92B38080319392CF7
:1007E00030303507BF0050213608031DFD2BBA08F5
:1007F0000319392C2E30BF005021B603B80303195A
:10080000392C2D080319092CB7000310B50DB70BAF
:10081000052C3508BC023C08B1002E08B2002F0898
:10082000B3003008B4000310B00DAF0DAE0DBC0D19
:100830000310B00DAF0DAE0DBC0D3408B007031C96
:10084000262CAF0F262CAE0F262CBC0A3308AF0780
:10085000031C2D2CAE0F2D2CBC0A3208AE0703183A
:10086000BC0A3108BC070310B00DAF0DAE0DBC0DB6
:10087000E32B00005B2C3408B007031C442CAF0FA3
:10088000442CAE0F442CBC0A3308AF07031C4B2C7E
:10089000AE0F4B2CBC0A3208AE070318BC0A310855
:1008A000BC0700343C08B1002E08B2002F08B3008A
:1008B0003008B4000034000000343108F801300280
:1008C0000318652C3008F700712CF7010830B200CE
:1008D000B00DF70D310877020318F700F80DB20BD1
:1008E000682C00342E08F700AE1B7A2C2F1D842CA8
:1008F00020307F2CF709F70A7708AE002D30F8007A
:10090000BF0050212F1DAF152E08B0006430B1007C
:100910005D247708AE0078083030031D962C2F1820
:100920009C2CAF199C2C2F1A2030982CAF112F1211
:10093000F8077808BF0050212E08B0000A30B10037
:100940005D247708AE0078083030031DAB2CAF195A
:10095000AF2C2F1A2030F8077808BF005021303014
:10096000AE072E08BF005021003484011F308305DC
:10097000073083169F008312A201FF30AB00843042
:1009800083169F0083121F08383981389F0000307A
:1009900083168600831286018316881583128819B0
:1009A0000130003A031DD52C652912214921AC01E3
:1009B0002C082720AC0AF700BF00502110302C0271
:1009C000031DD82C6121AC012C081220AC0AF700C1
:1009D000BF00502110302C02031DE42C0230AC006B
:1009E000FA30AD00D920AC0BF02C4921AC012C0819
:1009F0003C20AC0AF700BF00502110302C02031D30
:100A0000F72C6121AC012C085120AC0AF700BF0083
:100A100050210D302C02031D032D0330AD002E306C
:100A2000BF005021AD0B0F2D0430AC00FA30AD00EB
:100A3000D920AC0B162D4921492183168815003089
:100A4000831288190130003A031D4F2D4921AC0152
:100A50002C086320AC0AF700BF00502108302C029C
:100A6000031D282D61215B30BF0050212A30BF00BB
:100A700050212A30BF0050210430AC002030BF008C
:100A80005021AC0B3E2D5D30BF0050210230AC0038
:100A9000FA30AD00D920AC0B482D502D502D1C2D17
:100AA000831688150030831288190130003A031D1F
:100AB000762D61215B30BF0050210430AC002A301C
:100AC000BF005021AC0B5F2D2030BF0050212030E3
:100AD000BF0050215D30BF0050210230AC00FA3021
:100AE000AD00D920AC0B6F2D772D772D1C2D8316E3
:100AF00088150030831288190130003A031DAC2D8F
:100B00004921AC012C086320AC0AF700BF0050213A
:100B100008302C02031D822D61215B30BF00502163
:100B20000630AC002A30BF005021AC0B922D5D3056
:100B3000BF0050210230AC00FA30AD00D920AC0B20
:100B40009C2D831688150030831288190130013CD2
:100B500003191C2DAD2DAD2D1C2DA001A101A2014D
:100B60004921AC012C087020AC0AF700BF005021CD
:100B700008302C02031DB22D6121AC012C087D2010
:100B8000AC0AF700BF00502110302C02031DBE2D0F
:100B9000AB102B0883168700831287142B112B08A8
:100BA00083168700831207150430AC00FA30AD00BD
:100BB000D920AC0BD62DA20A0030F8001F08C73987
:100BC00078049F001F151F19E32D1E08FA008316D5
:100BD0001E088312AC001E08AD008221B301B201D1
:100BE0002030B1008130B0007A08B7007908B60033
:100BF0007808B5007708B400A0217708AC00780821
:100C0000AD007908AE007A08AF00B3007908B200F1
:100C10007808B1007708B000B701C030B6007F3067
:100C2000B5008830B4001722B301B201B1018030A1
:100C3000B0007A08B7007908B6007808B5007708E0
:100C4000B400A0217A08A6007908A5007808A400BD
:100C50007708A3000830F8001F08C73978049F0000
:100C60001F151F19312E1E08FA0083161E08831245
:100C7000AC001E08AD008221B301B2012030B100EA
:100C80008130B0007A08B7007908B6007808B5005E
:100C90007708B400A0217708AC007808AD00790887
:100CA000AE007A08AF00B3007908B2007808B1004E
:100CB0007708B000B701C030B6007F30B50088308B
:100CC000B4001722B301B201B1018030B0007A083C
:100CD000B7007908B6007808B5007708B400A021FD
:100CE0007A08AA007908A9007808A8007708A70060
:100CF0004921CA30BF005021DE30BF0050213A30B8
:100D0000BF0050212608B0002508AF002408AE001F
:100D10002308AD00B401B3010130B2000230B100CC
:100D2000E3220830AC002C089220AC0AF700BF0088
:100D300050210C302C02031D932E2A08B0002908E4
:100D4000AF002808AE002708AD00B401B3010130A0
:100D5000B2000230B100E3225630BF0050216121C1
:100D60000330AC002030BF005021AC0BB22EAD01DF
:100D70002D08A920AD0AF700BF00502104302D0234
:100D8000031DB82E2008AE001030AF0072243A3098
:100D9000BF0050212108AE001130AF0072243A305C
:100DA000BF0050212208AE001130AF007224043081
:100DB000AC00FA30AD00D920AC0BD92EA20A220823
:100DC0003B3C0318E52EA10AA20121083B3C031875
:100DD000EB2EA00AA1018316881500308312881912
:100DE0000130003A031D1D2F4921AC012C08BD2004
:100DF000AC0AF700BF00502109302C02031DF62E6B
:100E000061215B30BF0050212A30BF0050212A30C1
:100E1000BF0050210430AC002030BF005021AC0B8B
:100E20000C2F5D30BF0050210230AC00FA30AD0015
:100E3000D920AC0B162F1E2F1E2FDC2D83168815E4
:100E40000030831288190130003A031D442F6121BC
:100E50005B30BF0050210430AC002A30BF0050216D
:100E6000AC0B2D2F2030BF0050212030BF0050216F
:100E70005D30BF0050210230AC00FA30AD00D92007
:100E8000AC0B3D2F452F452FDC2D831688150030E8
:100E9000831288190130003A031D7A2F4921AC01D1
:100EA0002C08BD20AC0AF700BF00502109302C02ED
:100EB000031D502F61215B30BF0050210630AC0074
:100EC0002A30BF005021AC0B602F5D30BF00502195
:100ED0000230AC00FA30AD00D920AC0B6A2F83167B
:100EE00088150030831288190130013C0319DC2D6C
:100EF0007B2F7B2FDC2DAB102B08831687008312F2
:100F000087102B112B0883168700831207114921A4
:100F1000AC012C08CB20AC0AF700BF0050210930EF
:100F20002C02031D892F61210430AC00FA30AD0082
:0A0F3000D920AC0B962F1C2D630096
:02400E00723FFF
:00000001FF

以下は参考である。

中間結果

0001: MOVWF 0A
0002: GOTO 4B5
0003: NOP
.................... //
.................... // 電源ボード”こなた”
.................... //
....................
.................... #include <16F877.h> //PICの種類指定
.................... //////// Standard Header file for the PIC16F877 device ////////////////
.................... #device PIC16F877
.................... #list
....................
.................... #fuses HS,NOWDT,NOPROTECT,PUT,BROWNOUT,NOLVP
.................... #device ADC=10 //10bitADC
.................... #use delay(CLOCK = 20000000) //20MHz
.................... #include <pin.h> //PINのコンフィグ設定
.................... //
.................... // PIN設定ファイル
.................... //
.................... #define P_SW PIN_D3 //赤色タクトスイッチ
.................... #define C_SW PIN_C4 //白色タクトスイッチ
.................... #define PRI_PORT PIN_D6 //左側入力ポート
.................... #define SEC_PORT PIN_D5 //右側入力ポート
.................... #define AN_BAT PIN_A0 //リレー出力バッテリ電圧
.................... #define AN_OUT PIN_A1 //レギュレータ出力電圧
.................... #define FUSE PIN_C7 //ヒューズチェック(デジタル・
.................... #define RELAY1 PIN_C1 //PRIリレー開閉
.................... #define RELAY2 PIN_C2 //SECリレー開閉
....................
.................... //LCD使用
.................... #use fast_io(B)
.................... #define mode 0
.................... #define input_x input_B //ポートB使用
.................... #define output_x output_B
.................... #define set_tris_x set_tris_B
.................... #define stb PIN_B3
.................... #define rs PIN_B2
....................
.................... #include <lcd_lib.h> //LCDライブラリ読み込み
.................... ///////////////////////////////////////////////
.................... // 液晶表示器制御ライブラリ
.................... // 内蔵関数は以下
.................... // lcd_init() ----- 初期化
.................... // lcd_cmd(cmd) ----- コマンド出力
.................... // lcd_data(chr) ----- 1文字表示出力
.................... // lcd_clear() ----- 全消去
.................... // lcd_line1() ----- カーソルを1行目へ
.................... // lcd_line2() ----- カーソルを2行目へ
.................... // lcd_line3() ----- カーソルを3行目へ(4行のLCDのみ)
.................... // lcd_line4() ----- カーソルを4行目へ(4行のLCDのみ)
.................... //////////////////////////////////////////////
....................
.................... //////// データ出力サブ関数
.................... void lcd_out(int code, int flag)
.................... {
.................... output_x((code & 0xF0) | (input_x() & 0x0F));
00EC: MOVF 41,W
00ED: ANDLW F0
00EE: MOVWF 43
00EF: MOVF 06,W
00F0: ANDLW 0F
00F1: IORWF 43,W
00F2: MOVWF 45
00F3: MOVWF 06
.................... if (flag == 0)
00F4: MOVF 42,F
00F5: BTFSS 03.2
00F6: GOTO 0F9
.................... output_high(rs); //表示データの場合
00F7: BSF 06.2
.................... else
00F8: GOTO 0FA
.................... output_low(rs); //コマンドデータの場合
00F9: BCF 06.2
.................... delay_cycles(1); //NOP
00FA: NOP
.................... output_high(stb); //strobe out
00FB: BSF 06.3
.................... delay_cycles(2); //NOP
00FC: NOP
00FD: NOP
.................... output_low(stb); //reset strobe
00FE: BCF 06.3
00FF: RETLW 00
.................... }
.................... //////// 1文字表示関数
.................... void lcd_data(int asci)
.................... {
.................... lcd_out(asci, 0); //上位4ビット出力
*
0150: MOVF 3F,W
0151: MOVWF 41
0152: CLRF 42
0153: CALL 0EC
.................... lcd_out(asci<<4, 0); //下位4ビット出力
0154: SWAPF 3F,W
0155: MOVWF 40
0156: MOVLW F0
0157: ANDWF 40,F
0158: MOVF 40,W
0159: MOVWF 41
015A: CLRF 42
015B: CALL 0EC
.................... delay_us(50); //50μsec待ち
015C: MOVLW 53
015D: MOVWF 77
015E: DECFSZ 77,F
015F: GOTO 15E
0160: RETLW 00
.................... }
.................... /////// コマンド出力関数
.................... void lcd_cmd(int cmd)
.................... {
.................... lcd_out(cmd, 1); //上位4ビット出力
*
0100: MOVF 2C,W
0101: MOVWF 41
0102: MOVLW 01
0103: MOVWF 42
0104: CALL 0EC
.................... lcd_out(cmd<<4, 1); //下位4ビット出力
0105: SWAPF 2C,W
0106: MOVWF 2D
0107: MOVLW F0
0108: ANDWF 2D,F
0109: MOVF 2D,W
010A: MOVWF 41
010B: MOVLW 01
010C: MOVWF 42
010D: CALL 0EC
.................... delay_ms(2); //2msec待ち
010E: MOVLW 02
010F: MOVWF 2D
0110: CALL 0D9
0111: RETLW 00
.................... }
.................... /////// 全消去関数
.................... void lcd_clear()
.................... {
.................... lcd_cmd(0x01); //初期化コマンド出力
*
0149: MOVLW 01
014A: MOVWF 2C
014B: CALL 100
.................... delay_ms(15); //15msec待ち
014C: MOVLW 0F
014D: MOVWF 2D
014E: CALL 0D9
014F: RETLW 00
.................... }
.................... /////// 初期化関数
.................... void lcd_init()
.................... {
.................... set_tris_x(mode); //モードセット
*
0112: MOVLW 00
0113: BSF 03.5
0114: MOVWF 06
.................... delay_ms(15);
0115: MOVLW 0F
0116: BCF 03.5
0117: MOVWF 2D
0118: CALL 0D9
.................... lcd_out(0x30, 1); //8bit mode set
0119: MOVLW 30
011A: MOVWF 41
011B: MOVLW 01
011C: MOVWF 42
011D: CALL 0EC
.................... delay_ms(5);
011E: MOVLW 05
011F: MOVWF 2D
0120: CALL 0D9
.................... lcd_out(0x30, 1); //8bit mode set
0121: MOVLW 30
0122: MOVWF 41
0123: MOVLW 01
0124: MOVWF 42
0125: CALL 0EC
.................... delay_ms(1);
0126: MOVLW 01
0127: MOVWF 2D
0128: CALL 0D9
.................... lcd_out(0x30, 1); //8bit mode set
0129: MOVLW 30
012A: MOVWF 41
012B: MOVLW 01
012C: MOVWF 42
012D: CALL 0EC
.................... delay_ms(1);
012E: MOVLW 01
012F: MOVWF 2D
0130: CALL 0D9
.................... lcd_out(0x20, 1); //4bit mode set
0131: MOVLW 20
0132: MOVWF 41
0133: MOVLW 01
0134: MOVWF 42
0135: CALL 0EC
.................... delay_ms(1);
0136: MOVLW 01
0137: MOVWF 2D
0138: CALL 0D9
.................... lcd_cmd(0x2E); //DL=0 4bit mode
0139: MOVLW 2E
013A: MOVWF 2C
013B: CALL 100
.................... lcd_cmd(0x08); //display off C=D=B=0
013C: MOVLW 08
013D: MOVWF 2C
013E: CALL 100
.................... lcd_cmd(0x0D); //display on B=D=1 C=0
013F: MOVLW 0D
0140: MOVWF 2C
0141: CALL 100
.................... lcd_cmd(0x06); //entry I/D=1 S=0
0142: MOVLW 06
0143: MOVWF 2C
0144: CALL 100
.................... lcd_cmd(0x02); //cursor home
0145: MOVLW 02
0146: MOVWF 2C
0147: CALL 100
0148: RETLW 00
.................... }
.................... /////// LCD_line1
.................... void lcd_line1()
.................... {
.................... lcd_cmd(0x80);
.................... }
.................... /////// LCD_line2
.................... void lcd_line2()
.................... {
.................... lcd_cmd(0xC0);
*
0161: MOVLW C0
0162: MOVWF 2C
0163: CALL 100
0164: RETLW 00
.................... }
.................... /////// LCD_line3
.................... void lcd_line3()
.................... {
.................... lcd_cmd(0x94);
.................... }
.................... /////// LCD_line4
.................... void lcd_line4()
.................... {
.................... lcd_cmd(0xD4);
.................... }
....................
....................
.................... int h,m,s=0; //時間表示用変数
.................... float bat,out; //AD変換値が入る
....................
....................
.................... // デバッグ関数
.................... void debug1()
.................... {
.................... lcd_init();
0165: CALL 112
.................... lcd_clear();
0166: CALL 149
.................... printf(lcd_data,"DBG MODE1"); //一行目表示
*
0004: BCF 0A.0
0005: BCF 0A.1
0006: BCF 0A.2
0007: ADDWF 02,F
0008: RETLW 44
0009: RETLW 42
000A: RETLW 47
000B: RETLW 20
000C: RETLW 4D
000D: RETLW 4F
000E: RETLW 44
000F: RETLW 45
0010: RETLW 31
0011: RETLW 00
*
0167: CLRF 2C
0168: MOVF 2C,W
0169: CALL 004
016A: INCF 2C,F
016B: MOVWF 77
016C: MOVWF 3F
016D: CALL 150
016E: MOVLW 09
016F: SUBWF 2C,W
0170: BTFSS 03.2
0171: GOTO 168
.................... lcd_line2();
0172: CALL 161
.................... printf(lcd_data,"Created by K.Zen");
*
0012: BCF 0A.0
0013: BCF 0A.1
0014: BCF 0A.2
0015: ADDWF 02,F
0016: RETLW 43
0017: RETLW 72
0018: RETLW 65
0019: RETLW 61
001A: RETLW 74
001B: RETLW 65
001C: RETLW 64
001D: RETLW 20
001E: RETLW 62
001F: RETLW 79
0020: RETLW 20
0021: RETLW 4B
0022: RETLW 2E
0023: RETLW 5A
0024: RETLW 65
0025: RETLW 6E
0026: RETLW 00
*
0173: CLRF 2C
0174: MOVF 2C,W
0175: CALL 012
0176: INCF 2C,F
0177: MOVWF 77
0178: MOVWF 3F
0179: CALL 150
017A: MOVLW 10
017B: SUBWF 2C,W
017C: BTFSS 03.2
017D: GOTO 174
.................... stop1:
.................... goto stop1;
017E: GOTO 17E
017F: BCF 0A.3
0180: BCF 0A.4
0181: GOTO 4D5 (RETURN)
.................... }
....................
.................... // メイン関数
.................... void main()
.................... {
*
04B5: CLRF 04
04B6: MOVLW 1F
04B7: ANDWF 03,F
04B8: MOVLW 07
04B9: BSF 03.5
04BA: MOVWF 1F
04BB: BCF 03.5
04BC: CLRF 22
04BD: MOVLW FF
04BE: MOVWF 2B
.................... setup_adc_ports(RA0_RA1_RA3_ANALOG); //RA0,RA1ピンがアナログ入力
04BF: MOVLW 84
04C0: BSF 03.5
04C1: MOVWF 1F
.................... setup_adc(ADC_CLOCK_DIV_32); //Fosc/32 最高速度
04C2: BCF 03.5
04C3: MOVF 1F,W
04C4: ANDLW 38
04C5: IORLW 81
04C6: MOVWF 1F
....................
.................... set_tris_b(0); //全ピン出力モード
04C7: MOVLW 00
04C8: BSF 03.5
04C9: MOVWF 06
.................... output_B(0); //0クリア
04CA: BCF 03.5
04CB: CLRF 06
.................... if(input(P_SW)==0) //イースターエッグ
04CC: BSF 03.5
04CD: BSF 08.3
04CE: BCF 03.5
04CF: BTFSC 08.3
04D0: MOVLW 01
04D1: XORLW 00
04D2: BTFSS 03.2
04D3: GOTO 4D5
.................... debug1();
04D4: GOTO 165
.................... lcd_init();
04D5: CALL 112
.................... lcd_clear();
04D6: CALL 149
.................... printf(lcd_data,"== PDB Konata =="); //一行目表示
*
0027: BCF 0A.0
0028: BCF 0A.1
0029: BCF 0A.2
002A: ADDWF 02,F
002B: RETLW 3D
002C: RETLW 3D
002D: RETLW 20
002E: RETLW 50
002F: RETLW 44
0030: RETLW 42
0031: RETLW 20
0032: RETLW 4B
0033: RETLW 6F
0034: RETLW 6E
0035: RETLW 61
0036: RETLW 74
0037: RETLW 61
0038: RETLW 20
0039: RETLW 3D
003A: RETLW 3D
003B: RETLW 00
*
04D7: CLRF 2C
04D8: MOVF 2C,W
04D9: CALL 027
04DA: INCF 2C,F
04DB: MOVWF 77
04DC: MOVWF 3F
04DD: CALL 150
04DE: MOVLW 10
04DF: SUBWF 2C,W
04E0: BTFSS 03.2
04E1: GOTO 4D8
.................... lcd_line2();
04E2: CALL 161
.................... printf(lcd_data,"Created by K.Zen");
04E3: CLRF 2C
04E4: MOVF 2C,W
04E5: CALL 012
04E6: INCF 2C,F
04E7: MOVWF 77
04E8: MOVWF 3F
04E9: CALL 150
04EA: MOVLW 10
04EB: SUBWF 2C,W
04EC: BTFSS 03.2
04ED: GOTO 4E4
.................... delay_ms(500);
04EE: MOVLW 02
04EF: MOVWF 2C
04F0: MOVLW FA
04F1: MOVWF 2D
04F2: CALL 0D9
04F3: DECFSZ 2C,F
04F4: GOTO 4F0
.................... lcd_clear();
04F5: CALL 149
.................... printf(lcd_data,"Now CPU Running!"); //一行目表示
*
003C: BCF 0A.0
003D: BCF 0A.1
003E: BCF 0A.2
003F: ADDWF 02,F
0040: RETLW 4E
0041: RETLW 6F
0042: RETLW 77
0043: RETLW 20
0044: RETLW 43
0045: RETLW 50
0046: RETLW 55
0047: RETLW 20
0048: RETLW 52
0049: RETLW 75
004A: RETLW 6E
004B: RETLW 6E
004C: RETLW 69
004D: RETLW 6E
004E: RETLW 67
004F: RETLW 21
0050: RETLW 00
*
04F6: CLRF 2C
04F7: MOVF 2C,W
04F8: CALL 03C
04F9: INCF 2C,F
04FA: MOVWF 77
04FB: MOVWF 3F
04FC: CALL 150
04FD: MOVLW 10
04FE: SUBWF 2C,W
04FF: BTFSS 03.2
0500: GOTO 4F7
.................... lcd_line2();
0501: CALL 161
.................... printf(lcd_data,"Input Command...");
*
0051: BCF 0A.0
0052: BCF 0A.1
0053: BCF 0A.2
0054: ADDWF 02,F
0055: RETLW 49
0056: RETLW 6E
0057: RETLW 70
0058: RETLW 75
0059: RETLW 74
005A: RETLW 20
005B: RETLW 43
005C: RETLW 6F
005D: RETLW 6D
005E: RETLW 6D
005F: RETLW 61
0060: RETLW 6E
0061: RETLW 64
0062: RETLW 00
*
0502: CLRF 2C
0503: MOVF 2C,W
0504: CALL 051
0505: INCF 2C,F
0506: MOVWF 77
0507: MOVWF 3F
0508: CALL 150
0509: MOVLW 0D
050A: SUBWF 2C,W
050B: BTFSS 03.2
050C: GOTO 503
050D: MOVLW 03
050E: MOVWF 2D
050F: MOVLW 2E
0510: MOVWF 3F
0511: CALL 150
0512: DECFSZ 2D,F
0513: GOTO 50F
.................... delay_ms(1000);
0514: MOVLW 04
0515: MOVWF 2C
0516: MOVLW FA
0517: MOVWF 2D
0518: CALL 0D9
0519: DECFSZ 2C,F
051A: GOTO 516
.................... lcd_clear();
051B: CALL 149
.................... //
.................... //以降スタンバイモード
.................... //
.................... start:
.................... lcd_clear();
051C: CALL 149
.................... if(input(P_SW)==0)
051D: BSF 03.5
051E: BSF 08.3
051F: MOVLW 00
0520: BCF 03.5
0521: BTFSC 08.3
0522: MOVLW 01
0523: XORLW 00
0524: BTFSS 03.2
0525: GOTO 54F
.................... {
.................... lcd_clear();
0526: CALL 149
.................... printf(lcd_data,"PowerON??); //一行目表示
*
0063: BCF 0A.0
0064: BCF 0A.1
0065: BCF 0A.2
0066: ADDWF 02,F
0067: RETLW 50
0068: RETLW 6F
0069: RETLW 77
006A: RETLW 65
006B: RETLW 72
006C: RETLW 4F
006D: RETLW 4E
006E: RETLW 3F
006F: RETLW 00
*
0527: CLRF 2C
0528: MOVF 2C,W
0529: CALL 063
052A: INCF 2C,F
052B: MOVWF 77
052C: MOVWF 3F
052D: CALL 150
052E: MOVLW 08
052F: SUBWF 2C,W
0530: BTFSS 03.2
0531: GOTO 528
.................... lcd_line2();
0532: CALL 161
.................... printf(lcd_data,"[** ]");
0533: MOVLW 5B
0534: MOVWF 3F
0535: CALL 150
0536: MOVLW 2A
0537: MOVWF 3F
0538: CALL 150
0539: MOVLW 2A
053A: MOVWF 3F
053B: CALL 150
053C: MOVLW 04
053D: MOVWF 2C
053E: MOVLW 20
053F: MOVWF 3F
0540: CALL 150
0541: DECFSZ 2C,F
0542: GOTO 53E
0543: MOVLW 5D
0544: MOVWF 3F
0545: CALL 150
.................... delay_ms(500);
0546: MOVLW 02
0547: MOVWF 2C
0548: MOVLW FA
0549: MOVWF 2D
054A: CALL 0D9
054B: DECFSZ 2C,F
054C: GOTO 548
.................... goto Second;
054D: GOTO 550
.................... }else{
054E: GOTO 550
.................... goto start;
054F: GOTO 51C
.................... }
.................... Second:
.................... if(input(P_SW)==0)
0550: BSF 03.5
0551: BSF 08.3
0552: MOVLW 00
0553: BCF 03.5
0554: BTFSC 08.3
0555: MOVLW 01
0556: XORLW 00
0557: BTFSS 03.2
0558: GOTO 576
.................... {
.................... lcd_line2();
0559: CALL 161
.................... printf(lcd_data,"[**** ]");
055A: MOVLW 5B
055B: MOVWF 3F
055C: CALL 150
055D: MOVLW 04
055E: MOVWF 2C
055F: MOVLW 2A
0560: MOVWF 3F
0561: CALL 150
0562: DECFSZ 2C,F
0563: GOTO 55F
0564: MOVLW 20
0565: MOVWF 3F
0566: CALL 150
0567: MOVLW 20
0568: MOVWF 3F
0569: CALL 150
056A: MOVLW 5D
056B: MOVWF 3F
056C: CALL 150
.................... delay_ms(500);
056D: MOVLW 02
056E: MOVWF 2C
056F: MOVLW FA
0570: MOVWF 2D
0571: CALL 0D9
0572: DECFSZ 2C,F
0573: GOTO 56F
.................... goto Third;
0574: GOTO 577
.................... }else{
0575: GOTO 577
.................... goto start;
0576: GOTO 51C
.................... }
.................... Third:
.................... if(input(P_SW)==0)
0577: BSF 03.5
0578: BSF 08.3
0579: MOVLW 00
057A: BCF 03.5
057B: BTFSC 08.3
057C: MOVLW 01
057D: XORLW 00
057E: BTFSS 03.2
057F: GOTO 5AC
.................... {
.................... lcd_clear();
0580: CALL 149
.................... printf(lcd_data,"PowerON??); //一行目表示
0581: CLRF 2C
0582: MOVF 2C,W
0583: CALL 063
0584: INCF 2C,F
0585: MOVWF 77
0586: MOVWF 3F
0587: CALL 150
0588: MOVLW 08
0589: SUBWF 2C,W
058A: BTFSS 03.2
058B: GOTO 582
.................... lcd_line2();
058C: CALL 161
.................... printf(lcd_data,"[******]");
058D: MOVLW 5B
058E: MOVWF 3F
058F: CALL 150
0590: MOVLW 06
0591: MOVWF 2C
0592: MOVLW 2A
0593: MOVWF 3F
0594: CALL 150
0595: DECFSZ 2C,F
0596: GOTO 592
0597: MOVLW 5D
0598: MOVWF 3F
0599: CALL 150
.................... delay_ms(500);
059A: MOVLW 02
059B: MOVWF 2C
059C: MOVLW FA
059D: MOVWF 2D
059E: CALL 0D9
059F: DECFSZ 2C,F
05A0: GOTO 59C
.................... if(input(P_SW)==1)
05A1: BSF 03.5
05A2: BSF 08.3
05A3: MOVLW 00
05A4: BCF 03.5
05A5: BTFSC 08.3
05A6: MOVLW 01
05A7: SUBLW 01
05A8: BTFSC 03.2
.................... goto start;
05A9: GOTO 51C
.................... goto ON;
05AA: GOTO 5AD
.................... }else{
05AB: GOTO 5AD
.................... goto start;
05AC: GOTO 51C
.................... }
....................
.................... ON:
.................... h=0;
05AD: CLRF 20
.................... m=0;
05AE: CLRF 21
.................... s=0;
05AF: CLRF 22
.................... //
.................... // パワーオン時
.................... //
.................... //スタート表示
.................... lcd_clear();
05B0: CALL 149
.................... printf(lcd_data,"PowerON!"); //一行目表示
*
0070: BCF 0A.0
0071: BCF 0A.1
0072: BCF 0A.2
0073: ADDWF 02,F
0074: RETLW 50
0075: RETLW 6F
0076: RETLW 77
0077: RETLW 65
0078: RETLW 72
0079: RETLW 4F
007A: RETLW 4E
007B: RETLW 21
007C: RETLW 00
*
05B1: CLRF 2C
05B2: MOVF 2C,W
05B3: CALL 070
05B4: INCF 2C,F
05B5: MOVWF 77
05B6: MOVWF 3F
05B7: CALL 150
05B8: MOVLW 08
05B9: SUBWF 2C,W
05BA: BTFSS 03.2
05BB: GOTO 5B2
.................... lcd_line2();
05BC: CALL 161
.................... printf(lcd_data,"NowStartingMIRS!");
*
007D: BCF 0A.0
007E: BCF 0A.1
007F: BCF 0A.2
0080: ADDWF 02,F
0081: RETLW 4E
0082: RETLW 6F
0083: RETLW 77
0084: RETLW 53
0085: RETLW 74
0086: RETLW 61
0087: RETLW 72
0088: RETLW 74
0089: RETLW 69
008A: RETLW 6E
008B: RETLW 67
008C: RETLW 4D
008D: RETLW 49
008E: RETLW 52
008F: RETLW 53
0090: RETLW 21
0091: RETLW 00
*
05BD: CLRF 2C
05BE: MOVF 2C,W
05BF: CALL 07D
05C0: INCF 2C,F
05C1: MOVWF 77
05C2: MOVWF 3F
05C3: CALL 150
05C4: MOVLW 10
05C5: SUBWF 2C,W
05C6: BTFSS 03.2
05C7: GOTO 5BE
.................... // if(input(PRI_PORT)){
.................... output_high(RELAY1); //リレー1側の電源をON
05C8: BCF 2B.1
05C9: MOVF 2B,W
05CA: BSF 03.5
05CB: MOVWF 07
05CC: BCF 03.5
05CD: BSF 07.1
.................... // }else{
.................... output_high(RELAY2); //リレー2側の電源をON
05CE: BCF 2B.2
05CF: MOVF 2B,W
05D0: BSF 03.5
05D1: MOVWF 07
05D2: BCF 03.5
05D3: BSF 07.2
.................... // }
.................... delay_ms(1000);
05D4: MOVLW 04
05D5: MOVWF 2C
05D6: MOVLW FA
05D7: MOVWF 2D
05D8: CALL 0D9
05D9: DECFSZ 2C,F
05DA: GOTO 5D6
.................... s++;
05DB: INCF 22,F
....................
.................... PowerOn:
.................... //LCD
.................... set_adc_channel(0); //バッテリー電圧側
05DC: MOVLW 00
05DD: MOVWF 78
05DE: MOVF 1F,W
05DF: ANDLW C7
05E0: IORWF 78,W
05E1: MOVWF 1F
.................... bat = 2 * (5. * read_adc() /1023); //ADC読み出し
05E2: BSF 1F.2
05E3: BTFSC 1F.2
05E4: GOTO 5E3
05E5: MOVF 1E,W
05E6: MOVWF 7A
05E7: BSF 03.5
05E8: MOVF 1E,W
05E9: BCF 03.5
05EA: MOVWF 2C
05EB: MOVF 1E,W
05EC: MOVWF 2D
05ED: CALL 182
05EE: CLRF 33
05EF: CLRF 32
05F0: MOVLW 20
05F1: MOVWF 31
05F2: MOVLW 81
05F3: MOVWF 30
05F4: MOVF 7A,W
05F5: MOVWF 37
05F6: MOVF 79,W
05F7: MOVWF 36
05F8: MOVF 78,W
05F9: MOVWF 35
05FA: MOVF 77,W
05FB: MOVWF 34
05FC: CALL 1A0
05FD: MOVF 77,W
05FE: MOVWF 2C
05FF: MOVF 78,W
0600: MOVWF 2D
0601: MOVF 79,W
0602: MOVWF 2E
0603: MOVF 7A,W
0604: MOVWF 2F
0605: MOVWF 33
0606: MOVF 79,W
0607: MOVWF 32
0608: MOVF 78,W
0609: MOVWF 31
060A: MOVF 77,W
060B: MOVWF 30
060C: CLRF 37
060D: MOVLW C0
060E: MOVWF 36
060F: MOVLW 7F
0610: MOVWF 35
0611: MOVLW 88
0612: MOVWF 34
0613: CALL 217
0614: CLRF 33
0615: CLRF 32
0616: CLRF 31
0617: MOVLW 80
0618: MOVWF 30
0619: MOVF 7A,W
061A: MOVWF 37
061B: MOVF 79,W
061C: MOVWF 36
061D: MOVF 78,W
061E: MOVWF 35
061F: MOVF 77,W
0620: MOVWF 34
0621: CALL 1A0
0622: MOVF 7A,W
0623: MOVWF 26
0624: MOVF 79,W
0625: MOVWF 25
0626: MOVF 78,W
0627: MOVWF 24
0628: MOVF 77,W
0629: MOVWF 23
.................... set_adc_channel(1); //レギュレータ出力側
062A: MOVLW 08
062B: MOVWF 78
062C: MOVF 1F,W
062D: ANDLW C7
062E: IORWF 78,W
062F: MOVWF 1F
.................... out = 2 * (5. * read_adc() /1023); //ADC読み出し
0630: BSF 1F.2
0631: BTFSC 1F.2
0632: GOTO 631
0633: MOVF 1E,W
0634: MOVWF 7A
0635: BSF 03.5
0636: MOVF 1E,W
0637: BCF 03.5
0638: MOVWF 2C
0639: MOVF 1E,W
063A: MOVWF 2D
063B: CALL 182
063C: CLRF 33
063D: CLRF 32
063E: MOVLW 20
063F: MOVWF 31
0640: MOVLW 81
0641: MOVWF 30
0642: MOVF 7A,W
0643: MOVWF 37
0644: MOVF 79,W
0645: MOVWF 36
0646: MOVF 78,W
0647: MOVWF 35
0648: MOVF 77,W
0649: MOVWF 34
064A: CALL 1A0
064B: MOVF 77,W
064C: MOVWF 2C
064D: MOVF 78,W
064E: MOVWF 2D
064F: MOVF 79,W
0650: MOVWF 2E
0651: MOVF 7A,W
0652: MOVWF 2F
0653: MOVWF 33
0654: MOVF 79,W
0655: MOVWF 32
0656: MOVF 78,W
0657: MOVWF 31
0658: MOVF 77,W
0659: MOVWF 30
065A: CLRF 37
065B: MOVLW C0
065C: MOVWF 36
065D: MOVLW 7F
065E: MOVWF 35
065F: MOVLW 88
0660: MOVWF 34
0661: CALL 217
0662: CLRF 33
0663: CLRF 32
0664: CLRF 31
0665: MOVLW 80
0666: MOVWF 30
0667: MOVF 7A,W
0668: MOVWF 37
0669: MOVF 79,W
066A: MOVWF 36
066B: MOVF 78,W
066C: MOVWF 35
066D: MOVF 77,W
066E: MOVWF 34
066F: CALL 1A0
0670: MOVF 7A,W
0671: MOVWF 2A
0672: MOVF 79,W
0673: MOVWF 29
0674: MOVF 78,W
0675: MOVWF 28
0676: MOVF 77,W
0677: MOVWF 27
.................... lcd_clear();
0678: CALL 149
.................... printf(lcd_data,"バ:%4.2fV ア:%4.2fV",bat,out);
*
0092: BCF 0A.0
0093: BCF 0A.1
0094: BCF 0A.2
0095: ADDWF 02,F
0096: RETLW CA
0097: RETLW DE
0098: RETLW 3A
0099: RETLW 25
009A: RETLW 34
009B: RETLW 2E
009C: RETLW 32
009D: RETLW 66
009E: RETLW 56
009F: RETLW 20
00A0: RETLW B1
00A1: RETLW 3A
00A2: RETLW 25
00A3: RETLW 34
00A4: RETLW 2E
00A5: RETLW 32
00A6: RETLW 66
00A7: RETLW 56
00A8: RETLW 00
*
02E3: MOVF 31,W
02E4: MOVWF 3A
02E5: MOVF 32,W
02E6: MOVWF 3B
02E7: CLRF 3C
02E8: BTFSS 2E.7
02E9: GOTO 2EC
02EA: BSF 3A.6
02EB: DECF 3B,F
02EC: BSF 2E.7
02ED: MOVF 2D,W
02EE: BTFSC 03.2
02EF: GOTO 38F
02F0: MOVLW 7F
02F1: SUBWF 2D,W
02F2: BTFSS 03.0
02F3: GOTO 34B
02F4: MOVWF 2D
02F5: CLRF 3D
02F6: MOVLW 04
02F7: MOVWF 3E
02F8: BCF 03.0
02F9: RLF 30,F
02FA: RLF 2F,F
02FB: RLF 2E,F
02FC: RLF 3C,F
02FD: DECFSZ 3E,F
02FE: GOTO 2F8
02FF: MOVLW 04
0300: SUBWF 2D,W
0301: BTFSC 03.0
0302: GOTO 30B
0303: MOVLW 03
0304: SUBWF 2D,W
0305: BTFSS 03.2
0306: GOTO 385
0307: MOVLW 0A
0308: SUBWF 3C,W
0309: BTFSS 03.0
030A: GOTO 385
030B: MOVLW 03
030C: SUBWF 2D,F
030D: INCF 3D,F
030E: CALL 452
030F: BCF 03.0
0310: RLF 30,F
0311: RLF 2F,F
0312: RLF 2E,F
0313: RLF 3C,F
0314: CALL 43B
0315: MOVLW 02
0316: MOVWF 3E
0317: BCF 03.0
0318: RRF 3C,F
0319: RRF 2E,F
031A: RRF 2F,F
031B: RRF 30,F
031C: DECFSZ 3E,F
031D: GOTO 317
031E: CALL 452
031F: MOVLW 04
0320: MOVWF 3E
0321: BCF 03.0
0322: RRF 31,F
0323: RRF 32,F
0324: RRF 33,F
0325: RRF 34,F
0326: DECFSZ 3E,F
0327: GOTO 321
0328: CALL 43B
0329: CALL 452
032A: MOVF 33,W
032B: MOVWF 34
032C: MOVF 32,W
032D: MOVWF 33
032E: MOVF 31,W
032F: MOVWF 32
0330: CLRF 31
0331: CALL 43B
0332: CALL 452
0333: MOVF 32,W
0334: MOVWF 34
0335: MOVF 31,W
0336: MOVWF 33
0337: CLRF 31
0338: CLRF 32
0339: CALL 43B
033A: BTFSC 3C.3
033B: GOTO 2FF
033C: MOVF 2D,F
033D: BTFSS 03.2
033E: GOTO 344
033F: INCF 30,F
0340: INCF 2F,F
0341: INCF 2E,F
0342: INCF 3C,F
0343: GOTO 385
0344: BCF 03.0
0345: RLF 30,F
0346: RLF 2F,F
0347: RLF 2E,F
0348: RLF 3C,F
0349: DECF 2D,F
034A: GOTO 2FF
034B: COMF 2D,F
034C: INCF 2D,F
034D: MOVLW 7F
034E: ADDWF 2D,F
034F: CLRF 3D
0350: MOVLW 04
0351: MOVWF 3E
0352: BCF 03.0
0353: RLF 30,F
0354: RLF 2F,F
0355: RLF 2E,F
0356: RLF 3C,F
0357: DECFSZ 3E,F
0358: GOTO 352
0359: MOVLW 04
035A: ADDWF 2D,F
035B: MOVLW 05
035C: SUBWF 2D,W
035D: BTFSS 03.0
035E: GOTO 391
035F: CALL 452
0360: BCF 03.0
0361: RLF 30,F
0362: RLF 2F,F
0363: RLF 2E,F
0364: RLF 3C,F
0365: BCF 03.0
0366: RLF 30,F
0367: RLF 2F,F
0368: RLF 2E,F
0369: RLF 3C,F
036A: CALL 43B
036B: BCF 03.0
036C: RLF 30,F
036D: RLF 2F,F
036E: RLF 2E,F
036F: RLF 3C,F
0370: INCF 3D,F
0371: MOVLW 03
0372: MOVWF 3E
0373: BCF 03.0
0374: RRF 3C,F
0375: RRF 2E,F
0376: RRF 2F,F
0377: RRF 30,F
0378: DECFSZ 3E,F
0379: GOTO 373
037A: MOVLW 03
037B: SUBWF 2D,F
037C: BTFSS 3C.4
037D: GOTO 35B
037E: BCF 03.0
037F: RRF 3C,F
0380: RRF 2E,F
0381: RRF 2F,F
0382: RRF 30,F
0383: DECF 2D,F
0384: GOTO 35B
0385: COMF 2D,F
0386: INCF 2D,F
0387: MOVLW 03
0388: ADDWF 2D,F
0389: INCF 3D,W
038A: SUBWF 3B,F
038B: BTFSS 03.0
038C: CLRF 3B
038D: MOVLW 01
038E: GOTO 392
038F: MOVLW 02
0390: GOTO 392
0391: MOVLW 00
0392: MOVWF 36
0393: BTFSC 3A.7
0394: GOTO 39F
0395: BTFSC 3B.7
0396: GOTO 39F
0397: MOVF 3B,F
0398: BTFSC 03.2
0399: GOTO 39F
039A: MOVLW 20
039B: MOVWF 3F
039C: CALL 150
039D: DECFSZ 3B,F
039E: GOTO 39A
039F: BTFSS 3A.6
03A0: GOTO 3A4
03A1: MOVLW 2D
03A2: MOVWF 3F
03A3: CALL 150
03A4: BTFSS 3A.7
03A5: GOTO 3B0
03A6: BTFSC 3B.7
03A7: GOTO 3B0
03A8: MOVF 3B,F
03A9: BTFSC 03.2
03AA: GOTO 3B0
03AB: MOVLW 30
03AC: MOVWF 3F
03AD: CALL 150
03AE: DECFSZ 3B,F
03AF: GOTO 3A8
03B0: BCF 3A.7
03B1: BCF 3A.6
03B2: BTFSS 36.0
03B3: GOTO 3BB
03B4: MOVF 3D,W
03B5: MOVWF 36
03B6: MOVF 3D,W
03B7: MOVWF 38
03B8: INCF 3A,W
03B9: ADDWF 38,F
03BA: GOTO 3E3
03BB: BTFSS 36.1
03BC: GOTO 3BF
03BD: INCF 3A,W
03BE: MOVWF 3D
03BF: MOVF 3A,F
03C0: BTFSC 03.2
03C1: GOTO 439
03C2: MOVLW 2E
03C3: MOVWF 3F
03C4: CALL 150
03C5: MOVF 3D,W
03C6: MOVWF 39
03C7: DECF 39,F
03C8: MOVF 3A,W
03C9: SUBWF 39,W
03CA: BTFSS 03.0
03CB: GOTO 3CE
03CC: MOVF 3A,W
03CD: MOVWF 39
03CE: MOVF 39,F
03CF: BTFSC 03.2
03D0: GOTO 3D6
03D1: MOVLW 30
03D2: MOVWF 3F
03D3: CALL 150
03D4: DECFSZ 39,F
03D5: GOTO 3D1
03D6: MOVF 3D,W
03D7: MOVWF 3E
03D8: INCF 3A,W
03D9: SUBWF 3E,F
03DA: BTFSC 03.0
03DB: GOTO 45B
03DC: DECF 2D,F
03DD: INCF 3A,W
03DE: MOVWF 38
03DF: MOVF 3D,W
03E0: SUBWF 38,F
03E1: MOVF 38,W
03E2: MOVWF 36
03E3: MOVF 3C,W
03E4: MOVWF 35
03E5: MOVF 2D,W
03E6: BTFSC 03.2
03E7: GOTO 3ED
03E8: MOVWF 37
03E9: BCF 03.0
03EA: RRF 35,F
03EB: DECFSZ 37,F
03EC: GOTO 3E9
03ED: MOVF 38,W
03EE: BTFSC 03.2
03EF: GOTO 439
03F0: MOVLW 30
03F1: ADDWF 35,W
03F2: MOVWF 3F
03F3: CALL 150
03F4: MOVF 36,W
03F5: BTFSS 03.2
03F6: GOTO 3FD
03F7: MOVF 3A,F
03F8: BTFSC 03.2
03F9: GOTO 439
03FA: MOVLW 2E
03FB: MOVWF 3F
03FC: CALL 150
03FD: DECF 36,F
03FE: DECF 38,F
03FF: BTFSC 03.2
0400: GOTO 439
0401: MOVF 2D,W
0402: BTFSC 03.2
0403: GOTO 409
0404: MOVWF 37
0405: BCF 03.0
0406: RLF 35,F
0407: DECFSZ 37,F
0408: GOTO 405
0409: MOVF 35,W
040A: SUBWF 3C,F
040B: MOVF 3C,W
040C: MOVWF 31
040D: MOVF 2E,W
040E: MOVWF 32
040F: MOVF 2F,W
0410: MOVWF 33
0411: MOVF 30,W
0412: MOVWF 34
0413: BCF 03.0
0414: RLF 30,F
0415: RLF 2F,F
0416: RLF 2E,F
0417: RLF 3C,F
0418: BCF 03.0
0419: RLF 30,F
041A: RLF 2F,F
041B: RLF 2E,F
041C: RLF 3C,F
041D: MOVF 34,W
041E: ADDWF 30,F
041F: BTFSS 03.0
0420: GOTO 426
0421: INCFSZ 2F,F
0422: GOTO 426
0423: INCFSZ 2E,F
0424: GOTO 426
0425: INCF 3C,F
0426: MOVF 33,W
0427: ADDWF 2F,F
0428: BTFSS 03.0
0429: GOTO 42D
042A: INCFSZ 2E,F
042B: GOTO 42D
042C: INCF 3C,F
042D: MOVF 32,W
042E: ADDWF 2E,F
042F: BTFSC 03.0
0430: INCF 3C,F
0431: MOVF 31,W
0432: ADDWF 3C,F
0433: BCF 03.0
0434: RLF 30,F
0435: RLF 2F,F
0436: RLF 2E,F
0437: RLF 3C,F
0438: GOTO 3E3
0439: NOP
043A: GOTO 45B
043B: MOVF 34,W
043C: ADDWF 30,F
043D: BTFSS 03.0
043E: GOTO 444
043F: INCFSZ 2F,F
0440: GOTO 444
0441: INCFSZ 2E,F
0442: GOTO 444
0443: INCF 3C,F
0444: MOVF 33,W
0445: ADDWF 2F,F
0446: BTFSS 03.0
0447: GOTO 44B
0448: INCFSZ 2E,F
0449: GOTO 44B
044A: INCF 3C,F
044B: MOVF 32,W
044C: ADDWF 2E,F
044D: BTFSC 03.0
044E: INCF 3C,F
044F: MOVF 31,W
0450: ADDWF 3C,F
0451: RETLW 00
0452: MOVF 3C,W
0453: MOVWF 31
0454: MOVF 2E,W
0455: MOVWF 32
0456: MOVF 2F,W
0457: MOVWF 33
0458: MOVF 30,W
0459: MOVWF 34
045A: RETLW 00
045B: NOP
045C: RETLW 00
*
0679: MOVLW CA
067A: MOVWF 3F
067B: CALL 150
067C: MOVLW DE
067D: MOVWF 3F
067E: CALL 150
067F: MOVLW 3A
0680: MOVWF 3F
0681: CALL 150
0682: MOVF 26,W
0683: MOVWF 30
0684: MOVF 25,W
0685: MOVWF 2F
0686: MOVF 24,W
0687: MOVWF 2E
0688: MOVF 23,W
0689: MOVWF 2D
068A: CLRF 34
068B: CLRF 33
068C: MOVLW 01
068D: MOVWF 32
068E: MOVLW 02
068F: MOVWF 31
0690: CALL 2E3
0691: MOVLW 08
0692: MOVWF 2C
0693: MOVF 2C,W
0694: CALL 092
0695: INCF 2C,F
0696: MOVWF 77
0697: MOVWF 3F
0698: CALL 150
0699: MOVLW 0C
069A: SUBWF 2C,W
069B: BTFSS 03.2
069C: GOTO 693
069D: MOVF 2A,W
069E: MOVWF 30
069F: MOVF 29,W
06A0: MOVWF 2F
06A1: MOVF 28,W
06A2: MOVWF 2E
06A3: MOVF 27,W
06A4: MOVWF 2D
06A5: CLRF 34
06A6: CLRF 33
06A7: MOVLW 01
06A8: MOVWF 32
06A9: MOVLW 02
06AA: MOVWF 31
06AB: CALL 2E3
06AC: MOVLW 56
06AD: MOVWF 3F
06AE: CALL 150
.................... lcd_line2();
06AF: CALL 161
.................... printf(lcd_data," Time%3d:%2d:%2d",h,m,s); //2行目には時間表示
*
00A9: BCF 0A.0
00AA: BCF 0A.1
00AB: BCF 0A.2
00AC: ADDWF 02,F
00AD: RETLW 54
00AE: RETLW 69
00AF: RETLW 6D
00B0: RETLW 65
00B1: RETLW 25
00B2: RETLW 33
00B3: RETLW 64
00B4: RETLW 3A
00B5: RETLW 25
00B6: RETLW 32
00B7: RETLW 64
00B8: RETLW 3A
00B9: RETLW 25
00BA: RETLW 32
00BB: RETLW 64
00BC: RETLW 00
*
0472: MOVF 2E,W
0473: MOVWF 77
0474: BTFSC 2E.7
0475: GOTO 47A
0476: BTFSS 2F.2
0477: GOTO 484
0478: MOVLW 20
0479: GOTO 47F
047A: COMF 77,F
047B: INCF 77,F
047C: MOVF 77,W
047D: MOVWF 2E
047E: MOVLW 2D
047F: MOVWF 78
0480: MOVWF 3F
0481: CALL 150
0482: BTFSS 2F.2
0483: BSF 2F.3
0484: MOVF 2E,W
0485: MOVWF 30
0486: MOVLW 64
0487: MOVWF 31
0488: CALL 45D
0489: MOVF 77,W
048A: MOVWF 2E
048B: MOVF 78,W
048C: MOVLW 30
048D: BTFSS 03.2
048E: GOTO 496
048F: BTFSC 2F.0
0490: GOTO 49C
0491: BTFSC 2F.3
0492: GOTO 49C
0493: BTFSC 2F.4
0494: MOVLW 20
0495: GOTO 498
0496: BCF 2F.3
0497: BCF 2F.4
0498: ADDWF 78,F
0499: MOVF 78,W
049A: MOVWF 3F
049B: CALL 150
049C: MOVF 2E,W
049D: MOVWF 30
049E: MOVLW 0A
049F: MOVWF 31
04A0: CALL 45D
04A1: MOVF 77,W
04A2: MOVWF 2E
04A3: MOVF 78,W
04A4: MOVLW 30
04A5: BTFSS 03.2
04A6: GOTO 4AB
04A7: BTFSC 2F.3
04A8: GOTO 4AF
04A9: BTFSC 2F.4
04AA: MOVLW 20
04AB: ADDWF 78,F
04AC: MOVF 78,W
04AD: MOVWF 3F
04AE: CALL 150
04AF: MOVLW 30
04B0: ADDWF 2E,F
04B1: MOVF 2E,W
04B2: MOVWF 3F
04B3: CALL 150
04B4: RETLW 00
*
06B0: MOVLW 03
06B1: MOVWF 2C
06B2: MOVLW 20
06B3: MOVWF 3F
06B4: CALL 150
06B5: DECFSZ 2C,F
06B6: GOTO 6B2
06B7: CLRF 2D
06B8: MOVF 2D,W
06B9: CALL 0A9
06BA: INCF 2D,F
06BB: MOVWF 77
06BC: MOVWF 3F
06BD: CALL 150
06BE: MOVLW 04
06BF: SUBWF 2D,W
06C0: BTFSS 03.2
06C1: GOTO 6B8
06C2: MOVF 20,W
06C3: MOVWF 2E
06C4: MOVLW 10
06C5: MOVWF 2F
06C6: CALL 472
06C7: MOVLW 3A
06C8: MOVWF 3F
06C9: CALL 150
06CA: MOVF 21,W
06CB: MOVWF 2E
06CC: MOVLW 11
06CD: MOVWF 2F
06CE: CALL 472
06CF: MOVLW 3A
06D0: MOVWF 3F
06D1: CALL 150
06D2: MOVF 22,W
06D3: MOVWF 2E
06D4: MOVLW 11
06D5: MOVWF 2F
06D6: CALL 472
....................
.................... //時間計算
.................... delay_ms(1000);
06D7: MOVLW 04
06D8: MOVWF 2C
06D9: MOVLW FA
06DA: MOVWF 2D
06DB: CALL 0D9
06DC: DECFSZ 2C,F
06DD: GOTO 6D9
.................... s++;
06DE: INCF 22,F
.................... if(s>59){
06DF: MOVF 22,W
06E0: SUBLW 3B
06E1: BTFSC 03.0
06E2: GOTO 6E5
.................... m++;
06E3: INCF 21,F
.................... s=0;
06E4: CLRF 22
.................... }
.................... if(m>59){
06E5: MOVF 21,W
06E6: SUBLW 3B
06E7: BTFSC 03.0
06E8: GOTO 6EB
.................... h++;
06E9: INCF 20,F
.................... m=0;
06EA: CLRF 21
.................... }
....................
....................
.................... //
.................... // そして電源OFF
.................... //
.................... if(input(P_SW)==0)
06EB: BSF 03.5
06EC: BSF 08.3
06ED: MOVLW 00
06EE: BCF 03.5
06EF: BTFSC 08.3
06F0: MOVLW 01
06F1: XORLW 00
06F2: BTFSS 03.2
06F3: GOTO 71D
.................... {
.................... lcd_clear();
06F4: CALL 149
.................... printf(lcd_data,"PowerOFF??); //一行目表示
*
00BD: BCF 0A.0
00BE: BCF 0A.1
00BF: BCF 0A.2
00C0: ADDWF 02,F
00C1: RETLW 50
00C2: RETLW 6F
00C3: RETLW 77
00C4: RETLW 65
00C5: RETLW 72
00C6: RETLW 4F
00C7: RETLW 46
00C8: RETLW 46
00C9: RETLW 3F
00CA: RETLW 00
*
06F5: CLRF 2C
06F6: MOVF 2C,W
06F7: CALL 0BD
06F8: INCF 2C,F
06F9: MOVWF 77
06FA: MOVWF 3F
06FB: CALL 150
06FC: MOVLW 09
06FD: SUBWF 2C,W
06FE: BTFSS 03.2
06FF: GOTO 6F6
.................... lcd_line2();
0700: CALL 161
.................... printf(lcd_data,"[** ]");
0701: MOVLW 5B
0702: MOVWF 3F
0703: CALL 150
0704: MOVLW 2A
0705: MOVWF 3F
0706: CALL 150
0707: MOVLW 2A
0708: MOVWF 3F
0709: CALL 150
070A: MOVLW 04
070B: MOVWF 2C
070C: MOVLW 20
070D: MOVWF 3F
070E: CALL 150
070F: DECFSZ 2C,F
0710: GOTO 70C
0711: MOVLW 5D
0712: MOVWF 3F
0713: CALL 150
.................... delay_ms(500);
0714: MOVLW 02
0715: MOVWF 2C
0716: MOVLW FA
0717: MOVWF 2D
0718: CALL 0D9
0719: DECFSZ 2C,F
071A: GOTO 716
.................... goto Second2;
071B: GOTO 71E
.................... }else{
071C: GOTO 71E
.................... goto PowerON;
071D: GOTO 5DC
.................... }
.................... Second2:
.................... if(input(P_SW)==0)
071E: BSF 03.5
071F: BSF 08.3
0720: MOVLW 00
0721: BCF 03.5
0722: BTFSC 08.3
0723: MOVLW 01
0724: XORLW 00
0725: BTFSS 03.2
0726: GOTO 744
.................... {
.................... lcd_line2();
0727: CALL 161
.................... printf(lcd_data,"[**** ]");
0728: MOVLW 5B
0729: MOVWF 3F
072A: CALL 150
072B: MOVLW 04
072C: MOVWF 2C
072D: MOVLW 2A
072E: MOVWF 3F
072F: CALL 150
0730: DECFSZ 2C,F
0731: GOTO 72D
0732: MOVLW 20
0733: MOVWF 3F
0734: CALL 150
0735: MOVLW 20
0736: MOVWF 3F
0737: CALL 150
0738: MOVLW 5D
0739: MOVWF 3F
073A: CALL 150
.................... delay_ms(500);
073B: MOVLW 02
073C: MOVWF 2C
073D: MOVLW FA
073E: MOVWF 2D
073F: CALL 0D9
0740: DECFSZ 2C,F
0741: GOTO 73D
.................... goto Third2;
0742: GOTO 745
.................... }else{
0743: GOTO 745
.................... goto PowerON;
0744: GOTO 5DC
.................... }
.................... Third2:
.................... if(input(P_SW)==0)
0745: BSF 03.5
0746: BSF 08.3
0747: MOVLW 00
0748: BCF 03.5
0749: BTFSC 08.3
074A: MOVLW 01
074B: XORLW 00
074C: BTFSS 03.2
074D: GOTO 77A
.................... {
.................... lcd_clear();
074E: CALL 149
.................... printf(lcd_data,"PowerOFF??); //一行目表示
074F: CLRF 2C
0750: MOVF 2C,W
0751: CALL 0BD
0752: INCF 2C,F
0753: MOVWF 77
0754: MOVWF 3F
0755: CALL 150
0756: MOVLW 09
0757: SUBWF 2C,W
0758: BTFSS 03.2
0759: GOTO 750
.................... lcd_line2();
075A: CALL 161
.................... printf(lcd_data,"[******]");
075B: MOVLW 5B
075C: MOVWF 3F
075D: CALL 150
075E: MOVLW 06
075F: MOVWF 2C
0760: MOVLW 2A
0761: MOVWF 3F
0762: CALL 150
0763: DECFSZ 2C,F
0764: GOTO 760
0765: MOVLW 5D
0766: MOVWF 3F
0767: CALL 150
.................... delay_ms(500);
0768: MOVLW 02
0769: MOVWF 2C
076A: MOVLW FA
076B: MOVWF 2D
076C: CALL 0D9
076D: DECFSZ 2C,F
076E: GOTO 76A
.................... if(input(P_SW)==1)
076F: BSF 03.5
0770: BSF 08.3
0771: MOVLW 00
0772: BCF 03.5
0773: BTFSC 08.3
0774: MOVLW 01
0775: SUBLW 01
0776: BTFSC 03.2
.................... goto PowerON;
0777: GOTO 5DC
.................... goto PowerOFF;
0778: GOTO 77B
.................... }else{
0779: GOTO 77B
.................... goto PowerON;
077A: GOTO 5DC
.................... }
....................
.................... PowerOFF:
.................... output_low(RELAY1);
077B: BCF 2B.1
077C: MOVF 2B,W
077D: BSF 03.5
077E: MOVWF 07
077F: BCF 03.5
0780: BCF 07.1
.................... output_low(RELAY2);
0781: BCF 2B.2
0782: MOVF 2B,W
0783: BSF 03.5
0784: MOVWF 07
0785: BCF 03.5
0786: BCF 07.2
.................... lcd_clear();
0787: CALL 149
.................... printf(lcd_data,"PowerDown"); //一行目表示
*
00CB: BCF 0A.0
00CC: BCF 0A.1
00CD: BCF 0A.2
00CE: ADDWF 02,F
00CF: RETLW 50
00D0: RETLW 6F
00D1: RETLW 77
00D2: RETLW 65
00D3: RETLW 72
00D4: RETLW 44
00D5: RETLW 6F
00D6: RETLW 77
00D7: RETLW 6E
00D8: RETLW 00
*
0788: CLRF 2C
0789: MOVF 2C,W
078A: CALL 0CB
078B: INCF 2C,F
078C: MOVWF 77
078D: MOVWF 3F
078E: CALL 150
078F: MOVLW 09
0790: SUBWF 2C,W
0791: BTFSS 03.2
0792: GOTO 789
.................... lcd_line2();
0793: CALL 161
.................... printf(lcd_data,"");
.................... delay_ms(1000);
0794: MOVLW 04
0795: MOVWF 2C
0796: MOVLW FA
0797: MOVWF 2D
0798: CALL 0D9
0799: DECFSZ 2C,F
079A: GOTO 796
.................... goto start;
079B: GOTO 51C
....................
.................... }
....................
079C: SLEEP
....................
0182: MOVLW 8E
0183: MOVWF 77
0184: MOVF 2D,W
0185: MOVWF 78
0186: MOVF 2C,W
0187: MOVWF 79
0188: CLRF 7A
0189: MOVF 78,F
018A: BTFSS 03.2
018B: GOTO 196
018C: MOVF 79,W
018D: MOVWF 78
018E: CLRF 79
018F: MOVLW 08
0190: SUBWF 77,F
0191: MOVF 78,F
0192: BTFSS 03.2
0193: GOTO 196
0194: CLRF 77
0195: GOTO 19E
0196: BCF 03.0
0197: BTFSC 78.7
0198: GOTO 19D
0199: RLF 79,F
019A: RLF 78,F
019B: DECF 77,F
019C: GOTO 196
019D: BCF 78.7
019E: NOP
019F: RETLW 00
01A0: MOVF 30,W
01A1: BTFSC 03.2
01A2: GOTO 211
01A3: MOVWF 38
01A4: MOVF 34,W
01A5: BTFSC 03.2
01A6: GOTO 211
01A7: ADDWF 38,F
01A8: BTFSS 03.0
01A9: GOTO 1AB
01AA: GOTO 1B2
01AB: MOVLW 7F
01AC: SUBWF 38,F
01AD: BTFSS 03.0
01AE: GOTO 211
01AF: BTFSC 03.2
01B0: GOTO 211
01B1: GOTO 1B6
01B2: MOVLW 81
01B3: ADDWF 38,F
01B4: BTFSC 03.0
01B5: GOTO 211
01B6: MOVF 38,W
01B7: MOVWF 77
01B8: CLRF 78
01B9: CLRF 79
01BA: CLRF 7A
01BB: MOVF 31,W
01BC: MOVWF 3C
01BD: BSF 3C.7
01BE: MOVF 32,W
01BF: MOVWF 3B
01C0: MOVF 33,W
01C1: MOVWF 3A
01C2: MOVLW 18
01C3: MOVWF 38
01C4: CLRF 39
01C5: BTFSS 3A.0
01C6: GOTO 1DF
01C7: MOVF 37,W
01C8: ADDWF 7A,F
01C9: BTFSS 03.0
01CA: GOTO 1D1
01CB: INCF 79,F
01CC: BTFSS 03.2
01CD: GOTO 1D1
01CE: INCF 78,F
01CF: BTFSC 03.2
01D0: BSF 39.7
01D1: MOVF 36,W
01D2: ADDWF 79,F
01D3: BTFSS 03.0
01D4: GOTO 1D8
01D5: INCF 78,F
01D6: BTFSC 03.2
01D7: BSF 39.7
01D8: MOVF 35,W
01D9: MOVWF 32
01DA: BSF 32.7
01DB: MOVF 32,W
01DC: ADDWF 78,F
01DD: BTFSC 03.0
01DE: BSF 39.7
01DF: RLF 39,F
01E0: RRF 78,F
01E1: RRF 79,F
01E2: RRF 7A,F
01E3: RRF 3C,F
01E4: RRF 3B,F
01E5: RRF 3A,F
01E6: BCF 03.0
01E7: DECFSZ 38,F
01E8: GOTO 1C4
01E9: MOVLW 01
01EA: ADDWF 77,F
01EB: BTFSC 03.0
01EC: GOTO 211
01ED: BTFSC 78.7
01EE: GOTO 1F6
01EF: RLF 3C,F
01F0: RLF 7A,F
01F1: RLF 79,F
01F2: RLF 78,F
01F3: DECF 77,F
01F4: BTFSC 03.2
01F5: GOTO 211
01F6: BTFSS 3C.7
01F7: GOTO 207
01F8: INCF 7A,F
01F9: BTFSS 03.2
01FA: GOTO 207
01FB: INCF 79,F
01FC: BTFSS 03.2
01FD: GOTO 207
01FE: INCF 78,F
01FF: BTFSS 03.2
0200: GOTO 207
0201: RRF 78,F
0202: RRF 79,F
0203: RRF 7A,F
0204: INCF 77,F
0205: BTFSC 03.2
0206: GOTO 211
0207: MOVF 31,W
0208: MOVWF 39
0209: MOVF 35,W
020A: XORWF 39,F
020B: BTFSS 39.7
020C: GOTO 20F
020D: BSF 78.7
020E: GOTO 215
020F: BCF 78.7
0210: GOTO 215
0211: CLRF 77
0212: CLRF 78
0213: CLRF 79
0214: CLRF 7A
0215: NOP
0216: RETLW 00
0217: MOVF 30,W
0218: BTFSC 03.2
0219: GOTO 2DD
021A: MOVWF 3C
021B: MOVF 34,W
021C: BTFSC 03.2
021D: GOTO 2DD
021E: SUBWF 3C,F
021F: BTFSC 03.0
0220: GOTO 222
0221: GOTO 227
0222: MOVLW 7F
0223: ADDWF 3C,F
0224: BTFSC 03.0
0225: GOTO 2DD
0226: GOTO 22D
0227: MOVLW 81
0228: SUBWF 3C,F
0229: BTFSS 03.0
022A: GOTO 2DD
022B: BTFSC 03.2
022C: GOTO 2DD
022D: MOVF 3C,W
022E: MOVWF 77
022F: CLRF 78
0230: CLRF 79
0231: CLRF 7A
0232: CLRF 3B
0233: MOVF 31,W
0234: MOVWF 3A
0235: BSF 3A.7
0236: MOVF 32,W
0237: MOVWF 39
0238: MOVF 33,W
0239: MOVWF 38
023A: MOVLW 19
023B: MOVWF 3C
023C: MOVF 37,W
023D: SUBWF 38,F
023E: BTFSC 03.0
023F: GOTO 250
0240: MOVLW 01
0241: SUBWF 39,F
0242: BTFSC 03.0
0243: GOTO 250
0244: SUBWF 3A,F
0245: BTFSC 03.0
0246: GOTO 250
0247: SUBWF 3B,F
0248: BTFSC 03.0
0249: GOTO 250
024A: INCF 3B,F
024B: INCF 3A,F
024C: INCF 39,F
024D: MOVF 37,W
024E: ADDWF 38,F
024F: GOTO 282
0250: MOVF 36,W
0251: SUBWF 39,F
0252: BTFSC 03.0
0253: GOTO 26B
0254: MOVLW 01
0255: SUBWF 3A,F
0256: BTFSC 03.0
0257: GOTO 26B
0258: SUBWF 3B,F
0259: BTFSC 03.0
025A: GOTO 26B
025B: INCF 3B,F
025C: INCF 3A,F
025D: MOVF 36,W
025E: ADDWF 39,F
025F: MOVF 37,W
0260: ADDWF 38,F
0261: BTFSS 03.0
0262: GOTO 282
0263: INCF 39,F
0264: BTFSS 03.2
0265: GOTO 282
0266: INCF 3A,F
0267: BTFSS 03.2
0268: GOTO 282
0269: INCF 3B,F
026A: GOTO 282
026B: MOVF 35,W
026C: IORLW 80
026D: SUBWF 3A,F
026E: BTFSC 03.0
026F: GOTO 281
0270: MOVLW 01
0271: SUBWF 3B,F
0272: BTFSC 03.0
0273: GOTO 281
0274: INCF 3B,F
0275: MOVF 35,W
0276: IORLW 80
0277: ADDWF 3A,F
0278: MOVF 36,W
0279: ADDWF 39,F
027A: BTFSS 03.0
027B: GOTO 25F
027C: INCF 3A,F
027D: BTFSS 03.2
027E: GOTO 25F
027F: INCF 3B,F
0280: GOTO 25F
0281: BSF 7A.0
0282: DECFSZ 3C,F
0283: GOTO 285
0284: GOTO 290
0285: BCF 03.0
0286: RLF 38,F
0287: RLF 39,F
0288: RLF 3A,F
0289: RLF 3B,F
028A: BCF 03.0
028B: RLF 7A,F
028C: RLF 79,F
028D: RLF 78,F
028E: RLF 3D,F
028F: GOTO 23C
0290: BTFSS 3D.0
0291: GOTO 298
0292: BCF 03.0
0293: RRF 78,F
0294: RRF 79,F
0295: RRF 7A,F
0296: RRF 3D,F
0297: GOTO 29B
0298: DECF 77,F
0299: BTFSC 03.2
029A: GOTO 2DD
029B: BTFSC 3D.7
029C: GOTO 2C4
029D: BCF 03.0
029E: RLF 38,F
029F: RLF 39,F
02A0: RLF 3A,F
02A1: RLF 3B,F
02A2: MOVF 37,W
02A3: SUBWF 38,F
02A4: BTFSC 03.0
02A5: GOTO 2B0
02A6: MOVLW 01
02A7: SUBWF 39,F
02A8: BTFSC 03.0
02A9: GOTO 2B0
02AA: SUBWF 3A,F
02AB: BTFSC 03.0
02AC: GOTO 2B0
02AD: SUBWF 3B,F
02AE: BTFSS 03.0
02AF: GOTO 2D3
02B0: MOVF 36,W
02B1: SUBWF 39,F
02B2: BTFSC 03.0
02B3: GOTO 2BB
02B4: MOVLW 01
02B5: SUBWF 3A,F
02B6: BTFSC 03.0
02B7: GOTO 2BB
02B8: SUBWF 3B,F
02B9: BTFSS 03.0
02BA: GOTO 2D3
02BB: MOVF 35,W
02BC: IORLW 80
02BD: SUBWF 3A,F
02BE: BTFSC 03.0
02BF: GOTO 2C4
02C0: MOVLW 01
02C1: SUBWF 3B,F
02C2: BTFSS 03.0
02C3: GOTO 2D3
02C4: INCF 7A,F
02C5: BTFSS 03.2
02C6: GOTO 2D3
02C7: INCF 79,F
02C8: BTFSS 03.2
02C9: GOTO 2D3
02CA: INCF 78,F
02CB: BTFSS 03.2
02CC: GOTO 2D3
02CD: INCF 77,F
02CE: BTFSC 03.2
02CF: GOTO 2DD
02D0: RRF 78,F
02D1: RRF 79,F
02D2: RRF 7A,F
02D3: MOVF 31,W
02D4: MOVWF 3C
02D5: MOVF 35,W
02D6: XORWF 3C,F
02D7: BTFSS 3C.7
02D8: GOTO 2DB
02D9: BSF 78.7
02DA: GOTO 2E1
02DB: BCF 78.7
02DC: GOTO 2E1
02DD: CLRF 77
02DE: CLRF 78
02DF: CLRF 79
02E0: CLRF 7A
02E1: NOP
02E2: RETLW 00
045D: MOVF 31,W
045E: CLRF 78
045F: SUBWF 30,W
0460: BTFSC 03.0
0461: GOTO 465
0462: MOVF 30,W
0463: MOVWF 77
0464: GOTO 471
0465: CLRF 77
0466: MOVLW 08
0467: MOVWF 32
0468: RLF 30,F
0469: RLF 77,F
046A: MOVF 31,W
046B: SUBWF 77,W
046C: BTFSC 03.0
046D: MOVWF 77
046E: RLF 78,F
046F: DECFSZ 32,F
0470: GOTO 468
0471: RETLW 00