MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 1 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00001 ; 00002 ; lap7seg.asm 7ゼグ版 00003 ; 赤外線ラップタイマー 00004 ; for Microchip PIC16C73A-20 00005 ; Copyright(C)1998 By H.Kashima 00006 ; 00007 00008 title laptimer 00009 processor 16c73a 00010 radix dec 00011 list c = 128, n = 64 00012 00013 ; 00014 ; PIN I/O 00015 ; 00016 ; RA0: /START in 00017 ; 1: /STOP in 00018 ; 2: /RESET in 00019 ; 3: /TRIG in 00020 ; 4: BUZZER out 00021 ; 00022 ; RB0: ColumnCommon #0 out 下段左桁 00023 ; 1: ColumnCommon #1 out 00024 ; 2: ColumnCommon #2 out 00025 ; 3: ColumnCommon #3 out 00026 ; 4: ColumnCommon #4 out 00027 ; 5: ColumnCommon #5 out 下段右桁 00028 ; 6: ColumnCommon #6 out 上段左 00029 ; 7: ColumnCommon #7 out 上段右 00030 ; 00031 ; RC0: Segment A out 00032 ; 1: Segment B out 00033 ; 2: Segment C out 00034 ; 3: Segment D out 00035 ; 4: Segment E out 00036 ; 5: Segment F out 00037 ; 6: Segment G out 00038 ; 7: Segment DP out 00039 ; 00040 #include 00001 LIST 00002 ; P16C73A.INC Standard Header File, Version 1.02 Microchip Technology, Inc. 00309 LIST 2007 3FF2 00041 __CONFIG _CP_OFF & _WDT_OFF & _HS_OSC & _PWRTE_ON 00042 00043 #define BS(x) ( 1 << x ) ; ビットセット 00044 00045 ; 1/100秒算出のための供給クロック周波数の定義 00046 #define XTAL 18432000 ; 供給クロック 00047 #define RTCLK ( XTAL / 4 ) ; 内蔵タイマのクロック 00048 00049 ; プリスケーラ値 00050 ; 00051 #define PSCR 256 00052 #define PSCR1 8 00053 00054 ; スキャン周波数(Hz) 00055 ; MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 2 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 00056 #define FSCAN 960 00057 00058 ; 表示点滅周波数(Hz) 00059 ; 00060 #define FBLINK 4 00061 00062 ; CCP1コンペア値 00063 ; 00064 #define SCOUNT (( RTCLK / PSCR1 ) / FSCAN) 00065 00066 ; 1/100秒のタイマ値 00067 ; 00068 #define CSEC (( RTCLK / PSCR ) / 100) 00069 00070 ; 1/1000秒 00071 ; 00072 #define MSEC (( RTCLK / PSCR ) / 1000) 00073 00074 ; 最大計測周回数(メモリーの上限) 00075 ; 00076 #define MAXLAP 64 00077 00078 ; 搭載キャラクタ数 00079 ; 00080 #define N_CHAR 14 00081 00082 ; ワークエリア定義 00083 ; 00000020 00084 var1 equ 0x20 ; 汎用 00000021 00085 var2 equ 0x21 00000022 00086 var3 equ 0x22 00000023 00087 var4 equ 0x23 00000024 00088 var5 equ 0x24 00089 00000025 00090 timeMSB equ 0x25 ; 時計測 00000026 00091 timeLSB equ 0x26 00000027 00092 ttmpMSB equ 0x27 ; 前周時間 00000028 00093 ttmpLSB equ 0x28 00094 00000029 00095 putscnt equ 0x29 ; count temporary for PUT_S 0000002A 00096 min equ 0x2a ; 単位変換用 0000002B 00097 sec equ 0x2b 0000002C 00098 csec equ 0x2c 0000002D 00099 prev_t equ 0x2d ; 直前のタイマー値 0000002E 00100 c_lap equ 0x2e ; 現在のタイマー値 0000002F 00101 f_lap equ 0x2f ; ファーステストラップ 00102 00000030 00103 div_cnt equ 0x30 ; 割り算カウンタ 00000031 00104 bit_cnt equ 0x31 ; 割り算カウンタ 00000032 00105 AL equ 0x32 ; 分子, 余り 00000033 00106 AH equ 0x33 00000034 00107 BL equ 0x34 ; 分母 00000035 00108 BH equ 0x35 00000036 00109 CL equ 0x36 ; 商 00000037 00110 CH equ 0x37 00111 00000038 00112 wait_t equ 0x38 ; ウェイトカウンタ 00000039 00113 putschr equ 0x39 MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 3 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 0000003A 00114 LapMode equ 0x3a ; 計測モード 00115 000000A0 00116 DIG0 equ 0xa0 ; 表示メモリ 000000A1 00117 DIG1 equ 0xa1 000000A2 00118 DIG2 equ 0xa2 000000A3 00119 DIG3 equ 0xa3 000000A4 00120 DIG4 equ 0xa4 000000A5 00121 DIG5 equ 0xa5 000000A6 00122 DIG6 equ 0xa6 000000A7 00123 DIG7 equ 0xa7 00124 000000A8 00125 DCOL equ 0xa8 ; 表示中の桁の出力値 000000A9 00126 NDCOL equ 0xa9 ; 表示中の桁番号 00127 000000AA 00128 blink_h equ 0xaa ; 点滅タイマー 000000AB 00129 blink_l equ 0xab 000000AC 00130 dspMode equ 0xac ; 差分表示モード 00131 0000003C 00132 PCLATH_TEMP equ 0x3c ; 割り込み中の退避レジスタ 0000003D 00133 STATUS_TEMP equ 0x3d 0000003E 00134 FSR_TEMP equ 0x3e 0000003F 00135 W_TEMP equ 0x3f 00136 00137 00138 ; MCU 入出力ポートのビット定義 00000000 00139 A_STA equ 0 00000001 00140 A_STP equ 1 00000002 00141 A_RST equ 2 00000003 00142 A_IR equ 3 00000005 00143 A_BUZ equ 5 00144 00145 ; LapModeビット定義 00000000 00146 LM_DIFF equ 0 ; 1:Fタイム差分 0:前タイム差分 00000001 00147 LM_CDSP equ 1 ; 1: 現時間表示中 00000002 00148 LM_DDSP equ 2 ; 1: 差分時間表示中 00000003 00149 LM_BEEP equ 3 ; 1: ブザー鳴動中 00150 00151 ; VRAMへデータを 0xffに遭遇するまで転送するマクロ 00152 ; 00153 PUT_S macro top, ptr 00154 00155 clrf putscnt 00156 movlw DIG0 00157 addlw top 00158 movwf FSR 00159 00160 00161 PAGESEL ptr ; loop1 00162 movfw putscnt 00163 call ptr 00164 movwf putschr 00165 incf putscnt, F 00166 sublw 0xff 00167 btfsc STATUS, Z 00168 goto $ + 5 ; goto end 00169 movfw putschr 00170 movwf INDF 00171 incf FSR, F MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 4 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 00172 goto $ - 12 ; goto loop1 00173 00174 endm 00175 00176 ; 00177 ; リセットベクタ 00178 ; 0000 00179 org 0x000 0000 2805 00180 goto start 00181 00182 ; 割込ベクタ 00183 ; 0004 00184 org 0x004 0004 2A95 00185 goto int_sub 00186 00187 ; コールドスタート 00188 ; MCU 初期化 00189 ; 0005 1683 00190 start bsf STATUS, RP0 ; 入出力ポートの初期化 0006 3087 00191 movlw BS(NOT_RBPU) | BS(PS2) | BS(PS1) | BS(PS0) Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0007 0081 00192 movwf OPTION_REG 0008 30DF 00193 movlw b'11011111' Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0009 0085 00194 movwf TRISA 000A 3000 00195 movlw b'00000000' Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 000B 0086 00196 movwf TRISB 000C 3000 00197 movlw b'00000000' Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 000D 0087 00198 movwf TRISC 000E 3006 00199 movlw BS(PCFG2) | BS(PCFG1) Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 000F 009F 00200 movwf ADCON1 0010 3004 00201 movlw BS(CCP1IE) ; コンペア割り込み有効 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0011 008C 00202 movwf PIE1 00203 0012 1283 00204 bcf STATUS, RP0 0013 0185 00205 clrf PORTA ; ポート出力値初期化 0014 0186 00206 clrf PORTB 0015 0187 00207 clrf PORTC 00208 0016 3031 00209 movlw BS(T1CKPS1) | BS(T1CKPS0) | BS(TMR1ON) 0017 0090 00210 movwf T1CON ; 表示用割り込み 0018 300A 00211 movlw BS(CCP1M3) | BS(CCP1M1) ; コンペアモード&ソフト割込 0019 0097 00212 movwf CCP1CON 00213 001A 3058 00214 movlw LOW SCOUNT ; 18.432MHz, 1/8PSC, SCAN 1KHz 001B 0095 00215 movwf CCPR1L ; のとき 1/576 = 0x0240 001C 3002 00216 movlw HIGH SCOUNT 001D 0096 00217 movwf CCPR1H 00218 001E 21FA 00219 call v_clear ; VRAMクリア 001F 1683 00220 bsf STATUS, RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0020 01A9 00221 clrf NDCOL 0021 3001 00222 movlw b'00000001' MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 5 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0022 00A8 00223 movwf DCOL Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0023 01AB 00224 clrf blink_l Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0024 01AA 00225 clrf blink_h 0025 1283 00226 bcf STATUS, RP0 0026 01BA 00227 clrf LapMode 00228 00229 ; 00230 ; 電源オンアニメーション, ブザー 100ms 00231 ; 0027 1406 00232 bsf PORTB, 0 0028 1685 00233 bsf PORTA, A_BUZ 00234 0029 01A0 00235 anm1 clrf var1 002A 0181 00236 anm2 clrf TMR0 002B 30B4 00237 anm3 movlw CSEC ; 10msウェイト 002C 0201 00238 subwf TMR0, W 002D 1D03 00239 btfss STATUS, Z 002E 282B 00240 goto anm3 00241 002F 1906 00242 btfsc PORTB, 2 0030 1285 00243 bcf PORTA, A_BUZ 00244 0031 3004 008A 00245 PAGESEL pwon_s 0033 0820 00246 movfw var1 0034 2428 00247 call pwon_s 0035 0087 00248 movwf PORTC 0036 0AA0 00249 incf var1, F 0037 3005 00250 movlw 5 0038 0220 00251 subwf var1, W 0039 1D03 00252 btfss STATUS, Z 003A 282A 00253 goto anm2 00254 003B 1003 00255 bcf STATUS, C 003C 0D86 00256 rlf PORTB, F ; Columnsシフト 003D 1C03 00257 btfss STATUS, C 003E 2829 00258 goto anm1 00259 003F 018E 00260 clrf TMR1L ; Timer1 reset 0040 018F 00261 clrf TMR1H 0041 30C0 00262 movlw BS(GIE) | BS(PEIE) ; 割り込み開始 0042 008B 00263 movwf INTCON 00264 0043 1D05 00265 btfss PORTA, A_RST ; テストボタン 0044 2AFA 00266 goto tst_mode 00267 0045 1885 00268 btfsc PORTA, A_STP ; 差分計算モード 0046 2848 00269 goto anm4 00270 0047 143A 00271 bsf LapMode, LM_DIFF 0048 00272 anm4 00273 ; 00274 ; バージョン表示 00275 ; 00276 PUT_S 0, ver_s M MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 6 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 0048 01A9 M clrf putscnt 0049 30A0 M movlw DIG0 004A 3E00 M addlw 0 004B 0084 M movwf FSR M M 004C 3004 008A M PAGESEL ver_s ; loop1 004E 0829 M movfw putscnt 004F 2410 M call ver_s 0050 00B9 M movwf putschr 0051 0AA9 M incf putscnt, F 0052 3CFF M sublw 0xff 0053 1903 M btfsc STATUS, Z 0054 2859 M goto $ + 5 ; goto end 0055 0839 M movfw putschr 0056 0080 M movwf INDF 0057 0A84 M incf FSR, F 0058 284C M goto $ - 12 ; goto loop1 M 00277 00278 ; 00279 ; 2秒間ウェイト 00280 ; 0059 3002 00281 tit2 movlw 2 005A 00A0 00282 movwf var1 005B 3014 00283 wait3 movlw 20 005C 00A1 00284 movwf var2 005D 228B 00285 wait2 call wait50 ; 50msウェイト 005E 0BA1 00286 decfsz var2, F 005F 285D 00287 goto wait2 0060 0BA0 00288 decfsz var1, F 0061 285B 00289 goto wait3 00290 00291 00292 ; 00293 ; プログラムメインループ 00294 ; 0062 00295 rstart 0062 3040 00296 movlw MAXLAP ; 周回データの初期化 0063 00A0 00297 movwf var1 0064 03A0 00298 clrlap decf var1, F 0065 0820 00299 movfw var1 0066 21D9 00300 call set_lap 0067 0820 00301 movfw var1 0068 1D03 00302 btfss STATUS, Z 0069 2864 00303 goto clrlap 00304 006A 21FA 00305 call v_clear ; clear screen 00306 006B 01A8 00307 clrf ttmpLSB 006C 01A7 00308 clrf ttmpMSB 006D 1683 00309 bsf STATUS, RP0 006E 302A 00310 movlw 0x2a ; PUSH START-DP点滅 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 006F 00A0 00311 movwf DIG0 0070 1283 00312 bcf STATUS, RP0 00313 00314 ; MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 7 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 00315 ; STARTボタンの押し下げを待つ 00316 ; 0071 1805 00317 w_sta btfsc PORTA, A_STA ; 押されたか? 0072 2871 00318 goto w_sta 0073 228B 00319 call wait50 0074 1805 00320 btfsc PORTA, A_STA ; 再度押し下げチェック 0075 2871 00321 goto w_sta 00322 0076 1683 00323 bsf STATUS, RP0 0077 300A 00324 movlw 0x0a Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0078 00A0 00325 movwf DIG0 0079 302A 00326 movlw 0x2a Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 007A 00A1 00327 movwf DIG1 ; print "READY!" 007B 1283 00328 bcf STATUS, RP0 00329 00330 007C 1C05 00331 w_sta2 btfss PORTA, A_STA ; ボタンが離されたか? 007D 287C 00332 goto w_sta2 007E 228B 00333 call wait50 007F 1C05 00334 btfss PORTA, A_STA ; 再度ボタン解放チェック 0080 287C 00335 goto w_sta2 0081 1D85 00336 w_ir1 btfss PORTA, A_IR ; 最初の赤外線検出を待つ 0082 2885 00337 goto w_ir2 0083 1805 00338 btfsc PORTA, A_STA 0084 2881 00339 goto w_ir1 00340 0085 21FA 00341 w_ir2 call v_clear ; clear display 00342 00343 ; 00344 ; 周回時間の計測 00345 ; 00346 ; 周回計測用ワークエリア初期化 0086 0181 00347 clrf TMR0 0087 01AD 00348 clrf prev_t ; 直前の TMR0値 0088 01AE 00349 clrf c_lap ; 現在の周回数 0089 01AF 00350 clrf f_lap ; 最速だった周回数 008A 30FF 00351 movlw 0xff 008B 00A3 00352 movwf var4 ; firstest timeMSB 008C 00A4 00353 movwf var5 ; firstest timeLSB 00354 008D 00355 laploop 008D 01A6 00356 clrf timeLSB ; clear current LAP time 008E 01A5 00357 clrf timeMSB 008F 11BA 00358 bcf LapMode, LM_BEEP ; フラグクリア 0090 113A 00359 bcf LapMode, LM_DDSP 0091 1685 00360 bsf PORTA, A_BUZ ; buzzer on 00361 0092 0A2E 00362 incf c_lap, W ; 数値を文字に変換 0093 21EB 00363 call itoa 0094 0837 00364 movfw CH ; ラップ数表示 0095 1903 00365 btfsc STATUS, Z 0096 300A 00366 movlw 0x0a ; ゼロサプレス 00367 0097 1683 00368 bsf STATUS, RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0098 00A6 00369 movwf DIG6 MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 8 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 0099 1283 00370 bcf STATUS, RP0 009A 0836 00371 movfw CL 009B 1683 00372 bsf STATUS, RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 009C 00A7 00373 movwf DIG7 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 009D 16A5 00374 bsf DIG5, 5 ; 計測中 DP点滅 009E 1283 00375 bcf STATUS, RP0 00376 009F 00377 timloop 00378 ; 00379 ; TMR0 前回値から 1/100秒経つまでウェイトする 00380 ; 009F 082D 00381 w10ms movfw prev_t 00A0 0201 00382 subwf TMR0, W ; TMR0値の差分 00A1 00A0 00383 movwf var1 ; var1 = TMR0 - prev_t 00A2 30B4 00384 movlw CSEC 00A3 0220 00385 subwf var1, W ; 前回値との差が CSECを越えたか? 00A4 1C03 00386 btfss STATUS, C 00A5 289F 00387 goto w10ms 00388 00A6 30B4 00389 movlw CSEC 00A7 07AD 00390 addwf prev_t, F ; prev_tに CSECを加算 00391 00A8 0AA6 00392 incf timeLSB, F ; timeLSBに +1 00A9 1D03 00393 btfss STATUS, Z 00AA 28B2 00394 goto valid 00AB 0AA5 00395 incf timeMSB, F 00AC 1D03 00396 btfss STATUS, Z ; 計測値が 10:55:35を越えた 00AD 28B2 00397 goto valid 00398 00AE 30FF 00399 movlw 0xff ; 計測オーバーフロー 00AF 00A6 00400 movwf timeLSB 00B0 00A5 00401 movwf timeMSB 00B1 28B4 00402 goto valid0 ; オーバーフロー表示 00403 00B2 1905 00404 valid btfsc PORTA, A_RST ; RESETボタンが押下げて 00B3 28BD 00405 goto valid1 ; あれば現タイムを表示する 00406 00B4 1683 00407 valid0 bsf STATUS, RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 00B5 102C 00408 bcf dspMode, 0 00B6 1283 00409 bcf STATUS, RP0 00B7 2204 00410 call msec2time ; オーバーフロー表示 00B8 1683 00411 bsf STATUS, RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 00B9 16A5 00412 bsf DIG5, 5 ; 計測中 DP点滅 00BA 1283 00413 bcf STATUS, RP0 00BB 14BA 00414 bsf LapMode, LM_CDSP ; 現タイム表示中 00BC 28DC 00415 goto buz_ck 00416 00BD 1CBA 00417 valid1 btfss LapMode, LM_CDSP ; 現タイム表示中か? 00BE 28DC 00418 goto buz_ck 00419 00BF 082E 00420 movfw c_lap 00C0 1D03 00421 btfss STATUS, Z ; 1周目? 00C1 28CE 00422 goto valid4 00423 MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 9 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 00C2 1683 00424 bsf STATUS, RP0 00C3 30A0 00425 movlw DIG0 00C4 0084 00426 movwf FSR 00C5 300A 00427 valid2 movlw 0x0a ; 時間表示消去 00C6 0080 00428 movwf INDF Message[305]: Using default destination of 1 (file). 00C7 0A84 00429 incf FSR 00C8 0804 00430 movfw FSR 00C9 3CA6 00431 sublw DIG5 + 1 00CA 1D03 00432 btfss STATUS, Z 00CB 28C5 00433 goto valid2 00434 00CC 1283 00435 bcf STATUS, RP0 00CD 28D8 00436 goto valid3 00437 00CE 082E 00438 valid4 movfw c_lap ; 現タイム退避 00CF 21D9 00439 call set_lap 00D0 032E 00440 decf c_lap, W ; 前周回タイム呼び出し 00D1 21E2 00441 call get_lap 00D2 1683 00442 bsf STATUS, RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 00D3 102C 00443 bcf dspMode, 0 ; 通常表示モード 00D4 1283 00444 bcf STATUS, RP0 00D5 2204 00445 call msec2time ; 前周回時間表示 00D6 082E 00446 movfw c_lap 00D7 21E2 00447 call get_lap ; 現タイム復元 00448 00D8 1683 00449 valid3 bsf STATUS, RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 00D9 16A5 00450 bsf DIG5, 5 ; 計測中 DP点滅 00DA 1283 00451 bcf STATUS, RP0 00DB 10BA 00452 bcf LapMode, LM_CDSP ; 現タイム非表示 00453 00454 ; 00455 ; 計測開始から 200msの間ブザーを鳴らす 00456 ; 00DC 0825 00457 buz_ck movfw timeMSB 00DD 1D03 00458 btfss STATUS, Z ; 2.56秒以上経過なら do_chkへ 00DE 28FE 00459 goto do_chk 00460 00DF 19BA 00461 btfsc LapMode, LM_BEEP ; 現在ブザーが鳴っているか? 00E0 28E7 00462 goto mesclr 00463 00E1 3014 00464 movlw 20 00E2 0226 00465 subwf timeLSB, W 00E3 1C03 00466 btfss STATUS, C ; 200msec以上経過したならブザー消音 00E4 289F 00467 goto timloop 00468 00E5 1285 00469 bcf PORTA, A_BUZ 00E6 15BA 00470 bsf LapMode, LM_BEEP ; ブザー消音完了 00471 ; 00472 ; 計測開始時に表示された周回数を2秒後にクリアする 00473 ; 00E7 193A 00474 mesclr btfsc LapMode, LM_DDSP ; 差分時間はクリア済みか? 00E8 28FE 00475 goto do_chk 00476 00E9 30C8 00477 movlw 200 ; if( timeLSB > 200 ) goto timloop 00EA 0226 00478 subwf timeLSB, W ; 2秒以上経過したなら timloopへ MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 10 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 00EB 1C03 00479 btfss STATUS, C 00EC 289F 00480 goto timloop 00481 00ED 082E 00482 movfw c_lap ; 1周目は何も表示なし 00EE 1903 00483 btfsc STATUS, Z 00EF 289F 00484 goto timloop 00485 00F0 082E 00486 mescl1 movfw c_lap 00F1 21D9 00487 call set_lap ; time保存 00F2 032E 00488 decf c_lap, W ; 前周回タイム呼び出し 00F3 21E2 00489 call get_lap 00490 00F4 1683 00491 bsf STATUS, RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 00F5 102C 00492 bcf dspMode, 0 ; 通常表示モード 00F6 1283 00493 bcf STATUS, RP0 00F7 2204 00494 call msec2time ; 前周回時間表示 00F8 1683 00495 bsf STATUS, RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 00F9 16A5 00496 bsf DIG5, 5 ; 計測中 DP点滅 00FA 1283 00497 bcf STATUS, RP0 00498 00FB 082E 00499 movfw c_lap 00FC 21E2 00500 call get_lap ; time復元 00501 00FD 153A 00502 bsf LapMode, LM_DDSP ; 表示更新完了 00503 00504 ; 00505 ; トリガー入力のチェック, 計測開始から2秒間は入力が無効になる。 00506 ; 00FE 00507 do_chk 00FE 1C05 00508 btfss PORTA, A_STA ; check START button 00FF 2904 00509 goto tim_end 0100 1C85 00510 btfss PORTA, A_STP ; check STOP button 0101 296C 00511 goto c_break 0102 1985 00512 btfsc PORTA, A_IR ; check IR 0103 289F 00513 goto timloop 00514 00515 ; 00516 ; 1周の終了処理 00517 ; 0104 0926 00518 tim_end comf timeLSB, W ; オーバーフローの場合 0105 1D03 00519 btfss STATUS, Z ; 切り上げなし 0106 290A 00520 goto tim_e0 0107 0925 00521 comf timeMSB, W 0108 1903 00522 btfsc STATUS, Z 0109 290D 00523 goto tim_e0a 00524 010A 0AA6 00525 tim_e0 incf timeLSB, F ; 1/100秒切り上げ 010B 1903 00526 btfsc STATUS, Z 010C 0AA5 00527 incf timeMSB, F 00528 010D 082E 00529 tim_e0a movfw c_lap 010E 21D9 00530 call set_lap ; SRAMに周回データをセーブ 010F 0823 00531 movfw var4 ; Fラップ検証 0110 0225 00532 subwf timeMSB, W 0111 1C03 00533 btfss STATUS, C ; if( var4 > timeMSB ) goto tim_e0c 0112 2919 00534 goto tim_e0c MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 11 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 0113 1D03 00535 btfss STATUS, Z ; if( var4 != timeMSB) goto tim_e0d 0114 291F 00536 goto tim_e0d 0115 0826 00537 movfw timeLSB ; if( var5 < timeLSB ) goto tim_e0d 0116 0224 00538 subwf var5, W 0117 1C03 00539 btfss STATUS, C 0118 291F 00540 goto tim_e0d 0119 082E 00541 tim_e0c movfw c_lap ; Fラップ値の保存 011A 00AF 00542 movwf f_lap 011B 0825 00543 movfw timeMSB 011C 00A3 00544 movwf var4 011D 0826 00545 movfw timeLSB 011E 00A4 00546 movwf var5 00547 011F 21FA 00548 tim_e0d call v_clear ; 画面消去 00549 0120 0928 00550 comf ttmpLSB, W ; 前周回オーバーフローの場合 0121 1D03 00551 btfss STATUS, Z ; 差分オーバーフロー表示 0122 2926 00552 goto tim_e0b 0123 0927 00553 comf ttmpMSB, W 0124 1903 00554 btfsc STATUS, Z 0125 2957 00555 goto tim_e8a 00556 0126 1C3A 00557 tim_e0b btfss LapMode, LM_DIFF ; 計算モード 0127 292C 00558 goto tim_e3a 00559 0128 0823 00560 movfw var4 ; Fラップからの差分 0129 00A7 00561 movwf ttmpMSB 012A 0824 00562 movfw var5 012B 00A8 00563 movwf ttmpLSB 00564 012C 0184 00565 tim_e3a clrf FSR 012D 0828 00566 movfw ttmpLSB ; timeLSB - ttmpLSB = timeLSB 012E 02A6 00567 subwf timeLSB, F 012F 1803 00568 btfsc STATUS, C 0130 2936 00569 goto tim_e3 00570 0131 03A5 00571 decf timeMSB, F ; timeLSB < 0, timeMSB-- 0132 0925 00572 comf timeMSB, W 0133 1D03 00573 btfss STATUS, Z 0134 2936 00574 goto tim_e3 00575 ; ttmpMSB < 0 0135 1404 00576 bsf FSR, 0 ; negative bit ON 00577 0136 0827 00578 tim_e3 movfw ttmpMSB ; timeMSB - ttmpMSB = timeMSB 0137 02A5 00579 subwf timeMSB, F 0138 1803 00580 btfsc STATUS, C 0139 293B 00581 goto tim_e4 00582 ; timeMSB < 0 013A 1404 00583 bsf FSR, 0 ; negative bit ON 00584 013B 1C04 00585 tim_e4 btfss FSR, 0 ; 負数? 013C 2948 00586 goto tim_e5 ; 正数 00587 013D 1683 00588 bsf STATUS, RP0 013E 300D 00589 movlw 0x0d ; '-' Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 013F 00A0 00590 movwf DIG0 ; 負符号表示 0140 1283 00591 bcf STATUS, RP0 MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 12 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 00592 0141 09A6 00593 comf timeLSB, F ; 符号反転 0142 09A5 00594 comf timeMSB, F 0143 0AA6 00595 incf timeLSB, F 0144 1D03 00596 btfss STATUS, Z 0145 294D 00597 goto tim_e6 0146 0AA5 00598 incf timeMSB, F 00599 0147 294D 00600 goto tim_e6 00601 0148 1683 00602 tim_e5 bsf STATUS, RP0 0149 300A 00603 movlw 0x0a Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 014A 00A0 00604 movwf DIG0 ; 10分桁クリア Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 014B 00A1 00605 movwf DIG1 ; 1分桁クリア 014C 1283 00606 bcf STATUS, RP0 00607 014D 3060 00608 tim_e6 movlw 0x60 ; 9分59秒99(0xea5f)リミッタ 014E 0226 00609 subwf timeLSB, W 014F 1C03 00610 btfss STATUS, C 0150 2953 00611 goto tim_e7 00612 0151 30EA 00613 movlw 0xea ; 繰り下げなし 0152 2954 00614 goto tim_e8 00615 0153 30EB 00616 tim_e7 movlw 0xeb ; 繰り下げあり 0154 0225 00617 tim_e8 subwf timeMSB, W 0155 1C03 00618 btfss STATUS, C 0156 295A 00619 goto tim_e9 00620 0157 30FF 00621 tim_e8a movlw 0xff ; オーバーフロー 0158 00A6 00622 movwf timeLSB 0159 00A5 00623 movwf timeMSB 00624 015A 1683 00625 tim_e9 bsf STATUS, RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 015B 142C 00626 bsf dspMode, 0 ; 差分表示モード 015C 1283 00627 bcf STATUS, RP0 015D 2204 00628 call msec2time ; 差分時間を表示する 015E 1683 00629 bsf STATUS, RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 015F 16A5 00630 bsf DIG5, 5 ; 計測中 DP点滅 0160 1283 00631 bcf STATUS, RP0 00632 0161 082E 00633 movfw c_lap ; 現ラップタイムリストア 0162 21E2 00634 call get_lap 00635 0163 0826 00636 movfw timeLSB ; 前回時間ストア 0164 00A8 00637 movwf ttmpLSB 0165 0825 00638 movfw timeMSB 0166 00A7 00639 movwf ttmpMSB 00640 0167 0AAE 00641 incf c_lap, F ; LAP数++ 0168 3040 00642 movlw MAXLAP 0169 022E 00643 subwf c_lap, W 016A 1D03 00644 btfss STATUS, Z ; 最大計測周回数に達したら終了 016B 288D 00645 goto laploop MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 13 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 00646 ; 00647 ; 計測処理の終了 00648 ; 016C 00649 c_break 016C 03AE 00650 decf c_lap, F ; 直前の周回は無効なので周回カウンタを 00651 ; -1する 00652 ; 00653 ; ラップリスト表示の初期化 00654 ; 016D 01A0 00655 clrf var1 ; 表示リストの先頭 LAP番号 016E 0F2E 00656 incfsz c_lap, W ; 1度も計測結果が無い場合のチェック 016F 298B 00657 goto prevlap 00658 00659 PUT_S 0, min8_s ; "-- ------" を表示 M 0170 01A9 M clrf putscnt 0171 30A0 M movlw DIG0 0172 3E00 M addlw 0 0173 0084 M movwf FSR M M 0174 3004 008A M PAGESEL min8_s ; loop1 0176 0829 M movfw putscnt 0177 241E M call min8_s 0178 00B9 M movwf putschr 0179 0AA9 M incf putscnt, F 017A 3CFF M sublw 0xff 017B 1903 M btfsc STATUS, Z 017C 2981 M goto $ + 5 ; goto end 017D 0839 M movfw putschr 017E 0080 M movwf INDF 017F 0A84 M incf FSR, F 0180 2974 M goto $ - 12 ; goto loop1 M 0181 30A0 00660 movlw DIG0 0182 0084 00661 movwf FSR 0183 1700 00662 prvl1 bsf INDF, 6 ; 全桁点滅 Message[305]: Using default destination of 1 (file). 0184 0A84 00663 incf FSR 0185 0804 00664 movfw FSR 0186 3CA8 00665 sublw DIG7 + 1 0187 1D03 00666 btfss STATUS, Z 0188 2983 00667 goto prvl1 00668 0189 01A3 00669 clrf var4 ; up/down キー操作を無効にする 018A 29B6 00670 goto r_btn 00671 ; 00672 ; 周回データのプレビュー 00673 ; 018B 00674 prevlap 018B 21FA 00675 call v_clear ; 画面消去 018C 01A3 00676 clrf var4 ; ページボタンのマスク 018D 01A1 00677 clrf var2 ; テンポラリ 018E 0A20 00678 list1 incf var1, W ; W = var1 + 1 018F 21EB 00679 call itoa 0190 0837 00680 movfw CH 0191 1903 00681 btfsc STATUS, Z 0192 300A 00682 movlw 0x0a ; ゼロサプレス MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 14 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 0193 1683 00683 bsf STATUS, RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0194 00A6 00684 movwf DIG6 0195 1283 00685 bcf STATUS, RP0 0196 0836 00686 movfw CL 0197 3820 00687 iorlw 0x20 ; LAP LIST DP点灯 0198 1683 00688 bsf STATUS, RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0199 00A7 00689 movwf DIG7 019A 1283 00690 bcf STATUS, RP0 00691 019B 0820 00692 movfw var1 019C 21E2 00693 call get_lap ; SRAMから周回データをロード 019D 1683 00694 bsf STATUS, RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 019E 102C 00695 bcf dspMode, 0 019F 1283 00696 bcf STATUS, RP0 01A0 2204 00697 call msec2time ; ロードした計測時間の表示 00698 01A1 0820 00699 movfw var1 ; ファーステストラップ 01A2 022F 00700 subwf f_lap, W 01A3 1D03 00701 btfss STATUS, Z 01A4 29AD 00702 goto list2 00703 01A5 30A0 00704 movlw DIG0 01A6 0084 00705 movwf FSR 01A7 1700 00706 list1b bsf INDF, 6 ; 下桁点滅 Message[305]: Using default destination of 1 (file). 01A8 0A84 00707 incf FSR 01A9 0804 00708 movfw FSR 01AA 3CA6 00709 sublw DIG5 + 1 01AB 1D03 00710 btfss STATUS, Z 01AC 29A7 00711 goto list1b 00712 01AD 082E 00713 list2 movfw c_lap ; if( var1 == c_lap) goto list4 01AE 0220 00714 subwf var1, W 01AF 1903 00715 btfsc STATUS, Z ; 最終ページの時次頁不可 01B0 29B2 00716 goto list4 00717 01B1 1423 00718 bsf var4, A_STA ; START(NEXT)ボタンを有効にする 00719 01B2 0820 00720 list4 movfw var1 ; 先頭ページか? 01B3 1903 00721 btfsc STATUS, Z 01B4 29B6 00722 goto list5 00723 01B5 14A3 00724 bsf var4, A_STP ; 前頁ボタンを有効にする 00725 01B6 00726 list5 ; 先頭ページ 00727 01B6 3007 00728 r_btn movlw b'00000111' ; すべてのボタンが離されたか? 01B7 0505 00729 andwf PORTA, W 01B8 3A07 00730 xorlw b'00000111' 01B9 1D03 00731 btfss STATUS, Z 01BA 29B6 00732 goto r_btn 01BB 228B 00733 call wait50 01BC 3007 00734 movlw b'00000111' ; 離されたか再チェック 01BD 0505 00735 andwf PORTA, W 01BE 3A07 00736 xorlw b'00000111' MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 15 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 01BF 1D03 00737 btfss STATUS, Z 01C0 29B6 00738 goto r_btn 01C1 1C05 00739 w_btn btfss PORTA, A_STA ; ボタンが押されたかチェック 01C2 29C8 00740 goto w_btn1 01C3 1C85 00741 btfss PORTA, A_STP 01C4 29C8 00742 goto w_btn1 01C5 1D05 00743 btfss PORTA, A_RST 01C6 29C8 00744 goto w_btn1 01C7 29C1 00745 goto w_btn 00746 01C8 228B 00747 w_btn1 call wait50 01C9 1C05 00748 btfss PORTA, A_STA ; 押されたか再チェック 01CA 29D0 00749 goto n_page 01CB 1C85 00750 btfss PORTA, A_STP 01CC 29D4 00751 goto p_page 01CD 1D05 00752 btfss PORTA, A_RST 01CE 29D8 00753 goto restart 00754 01CF 29C1 00755 goto w_btn 00756 ; 00757 ; 次頁に移動する 00758 ; 01D0 00759 n_page 01D0 1C23 00760 btfss var4, A_STA 01D1 29C1 00761 goto w_btn 01D2 0AA0 00762 incf var1, F ; var1++ 01D3 298B 00763 goto prevlap 00764 ; 00765 ; 前頁に移動する 00766 ; 01D4 00767 p_page 01D4 1CA3 00768 btfss var4, A_STP 01D5 29C1 00769 goto w_btn 01D6 03A0 00770 decf var1, F ; var1-- 01D7 298B 00771 goto prevlap 00772 ; 00773 ; 周回計測に戻る 00774 ; 01D8 00775 restart 01D8 2862 00776 goto rstart 00777 00778 00779 ; 00780 ; サブルーチン群 00781 00782 00783 ; 周回データの SRAMセーブ 00784 ; addr -> W 00785 ; 00786 ; bank0:0x40-0x7f = L00-L63(LSB) 00787 ; bank1:0x40-0x7f = L00-L63(MSB) 01D9 00788 set_lap ; SRAMにセーブする 01D9 1283 00789 bcf STATUS, RP0 01DA 3E40 00790 addlw 0x40 01DB 0084 00791 movwf FSR 01DC 0825 00792 movfw timeMSB 01DD 0080 00793 movwf INDF 00794 MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 16 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 01DE 1784 00795 bsf FSR, 7 01DF 0826 00796 movfw timeLSB 01E0 0080 00797 movwf INDF 00798 01E1 0008 00799 return 00800 00801 00802 ; 周回データのSRAM ロード 00803 ; 01E2 00804 get_lap ; SRAMからロードする 01E2 1283 00805 bcf STATUS, RP0 01E3 3E40 00806 addlw 0x40 01E4 0084 00807 movwf FSR 01E5 0800 00808 movfw INDF 01E6 00A5 00809 movwf timeMSB 00810 01E7 1784 00811 bsf FSR, 7 01E8 0800 00812 movfw INDF 01E9 00A6 00813 movwf timeLSB 00814 01EA 0008 00815 return 00816 00817 00818 ; 数値を文字列に変換 00819 ; 01EB 1283 00820 itoa bcf STATUS, RP0 01EC 00B2 00821 movwf AL 01ED 3000 00822 movlw 0 ; '0' 01EE 00B7 00823 movwf CH ; CH = degit10 01EF 00B6 00824 movwf CL ; CL = degit1 01F0 300A 00825 bcd1 movlw 10 01F1 0232 00826 subwf AL, W 01F2 1C03 00827 btfss STATUS, C 01F3 29F7 00828 goto bcd2 01F4 00B2 00829 movwf AL ; (AL >= 10 ) 01F5 0AB7 00830 incf CH, F 01F6 29F0 00831 goto bcd1 01F7 0832 00832 bcd2 movfw AL ; (AL < 10 ) 01F8 07B6 00833 addwf CL, F 01F9 0008 00834 return 00835 00836 ; 00837 ; VRAM clear 01FA 00838 v_clear 01FA 30A0 00839 movlw DIG0 01FB 0084 00840 movwf FSR 01FC 300A 00841 v_l1 movlw 0x0a ; SPACE CHAR 01FD 0080 00842 movwf INDF 01FE 0A84 00843 incf FSR, F 01FF 0804 00844 movfw FSR 0200 3CA8 00845 sublw DIG7 + 1 0201 1D03 00846 btfss STATUS, Z 0202 29FC 00847 goto v_l1 00848 0203 0008 00849 return 00850 00851 ; 所定位置へ timeMSB:timeLSBの値を表示する 00852 ; dspMode:0 が 1だったら 10分の桁は表示しない MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 17 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 00853 ; 0204 00854 msec2time 0204 1283 00855 bcf STATUS, RP0 00856 0205 0A25 00857 incf timeMSB, W ; if( time == 0xffff ) 0206 1D03 00858 btfss STATUS, Z ; 計測値が 0xffffだった 0207 2A15 00859 goto mloop2 ; 場合 OVERFLOWを表示 0208 0A26 00860 incf timeLSB, W 0209 1D03 00861 btfss STATUS, Z 020A 2A15 00862 goto mloop2 00863 020B 30A0 00864 movlw DIG0 020C 0084 00865 movwf FSR 020D 300D 00866 mloop1 movlw 0x0d ; '-' 020E 0080 00867 movwf INDF Message[305]: Using default destination of 1 (file). 020F 0A84 00868 incf FSR 0210 0804 00869 movfw FSR 0211 3CA6 00870 sublw DIG5 + 1 0212 1903 00871 btfsc STATUS, Z 0213 2A61 00872 goto mloop4 0214 2A0D 00873 goto mloop1 00874 0215 0825 00875 mloop2 movfw timeMSB ; 単位を変換する 0216 00B3 00876 movwf AH 0217 0826 00877 movfw timeLSB 0218 00B2 00878 movwf AL 0219 3017 00879 movlw 0x17 ; 0x1770 = 6000 021A 00B5 00880 movwf BH ; 計測値を 6000で割る 021B 3070 00881 movlw 0x70 021C 00B4 00882 movwf BL 021D 2262 00883 call function_div 021E 0836 00884 movfw CL ; 商 = 分 021F 00AA 00885 movwf min 0220 01B5 00886 clrf BH ; 0x0064 = 100 0221 3064 00887 movlw 0x64 ; 余りを 100で割る 0222 00B4 00888 movwf BL 0223 2262 00889 call function_div 0224 0836 00890 movfw CL ; 商 = 秒 0225 00AB 00891 movwf sec 0226 0832 00892 movfw AL ; 余り = 1/100秒の値 0227 00AC 00893 movwf csec 00894 0228 0184 00895 clrf FSR ; ゼロサプレスフラグ 0229 082A 00896 movfw min ; 各値を文字列に変換 022A 21EB 00897 call itoa 022B 1683 00898 bsf STATUS, RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 022C 1C2C 00899 btfss dspMode, 0 ; 差分表示モード? 022D 2A30 00900 goto zeros0 00901 022E 1404 00902 bsf FSR, 0 ; DIG0 ゼロサプレス 022F 2A38 00903 goto mloop5 ; 10分桁表示なし 00904 0230 1283 00905 zeros0 bcf STATUS, RP0 0231 0837 00906 movfw CH 0232 1D03 00907 btfss STATUS, Z ; 0 ? 0233 2A36 00908 goto zeros1 ; 0 以外 MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 18 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 0234 300A 00909 movlw 0x0a ; DIG0 ゼロサプレス 0235 1404 00910 bsf FSR, 0 0236 1683 00911 zeros1 bsf STATUS, RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0237 00A0 00912 movwf DIG0 00913 0238 1283 00914 mloop5 bcf STATUS, RP0 0239 0836 00915 movfw CL 023A 1D03 00916 btfss STATUS, Z ; DIG1 = 0? 023B 2A40 00917 goto zeros2 ; 0 以外 023C 1C04 00918 btfss FSR, 0 ; 上位サプレス済み? 023D 2A40 00919 goto zeros2 ; 上位サプレスなし 023E 300A 00920 movlw 0x0a ; DIG1 ゼロサプレス 023F 2A42 00921 goto zeros3 0240 1004 00922 zeros2 bcf FSR, 0 0241 3880 00923 iorlw 0x80 ; DP set 0242 1683 00924 zeros3 bsf STATUS, RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0243 00A1 00925 movwf DIG1 0244 1283 00926 bcf STATUS, RP0 00927 0245 082B 00928 movfw sec 0246 21EB 00929 call itoa 0247 0837 00930 movfw CH 0248 1D03 00931 btfss STATUS, Z ; DIG2 = 0? 0249 2A4E 00932 goto zeros4 024A 1C04 00933 btfss FSR, 0 ; 上位サプレス済み? 024B 2A4E 00934 goto zeros4 024C 300A 00935 movlw 0x0a ; DIG2 ゼロサプレス 024D 2A4F 00936 goto zeros5 024E 1004 00937 zeros4 bcf FSR, 0 024F 1683 00938 zeros5 bsf STATUS, RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0250 00A2 00939 movwf DIG2 00940 0251 1283 00941 bcf STATUS, RP0 0252 0836 00942 movfw CL 0253 3880 00943 iorlw 0x80 ; DP set 0254 1683 00944 bsf STATUS, RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0255 00A3 00945 movwf DIG3 0256 1283 00946 bcf STATUS, RP0 00947 0257 082C 00948 movfw csec 0258 21EB 00949 call itoa 0259 0837 00950 movfw CH 025A 1683 00951 bsf STATUS, RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 025B 00A4 00952 movwf DIG4 025C 1283 00953 bcf STATUS, RP0 025D 0836 00954 movfw CL 025E 1683 00955 bsf STATUS, RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 025F 00A5 00956 movwf DIG5 0260 1283 00957 bcf STATUS, RP0 0261 00958 mloop4 0261 0008 00959 return 00960 MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 19 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 00961 00962 ; 割り算 AH:AL / BH:BL = CH:CL 00963 ; 0262 00964 function_div 0262 30F0 00965 movlw 0xf0 0263 0084 00966 movwf FSR 0264 01B6 00967 clrf CL 0265 01B7 00968 clrf CH 0266 00969 position 0266 1BB5 00970 btfsc BH, 7 0267 2A6D 00971 goto divloop 0268 0DB4 00972 rlf BL, F 0269 0DB5 00973 rlf BH, F 026A 0F84 00974 incfsz FSR, F 026B 2A66 00975 goto position 026C 0008 00976 return 00977 026D 0384 00978 divloop decf FSR, F 026E 227C 00979 call neg_bx 026F 2282 00980 call add_ax 0270 227C 00981 call neg_bx 0271 0DB6 00982 rlf CL, F 0272 0DB7 00983 rlf CH, F 0273 1836 00984 btfsc CL, W 0274 2A76 00985 goto div_2 0275 2282 00986 call add_ax 0276 1003 00987 div_2 bcf STATUS, C 0277 0CB5 00988 rrf BH, F 0278 0CB4 00989 rrf BL, F 0279 1A04 00990 btfsc FSR, 4 027A 2A6D 00991 goto divloop 027B 0008 00992 return 00993 027C 09B4 00994 neg_bx comf BL, F ; BH:BL 2の補数 027D 09B5 00995 comf BH, F 027E 0AB4 00996 incf BL, F 027F 1903 00997 btfsc STATUS, Z 0280 0AB5 00998 incf BH, F 0281 3400 00999 retlw 0 01000 0282 0834 01001 add_ax movfw BL ; AH:AL += BH:BL 0283 07B2 01002 addwf AL, F 0284 0835 01003 movfw BH 0285 1803 01004 btfsc STATUS, C 0286 0FB3 01005 incfsz AH, F 0287 0733 01006 addwf AH, W 0288 00B3 01007 movwf AH 0289 0432 01008 iorwf AL, W 028A 3400 01009 retlw 0 01010 01011 01012 ; 50msウェイト 01013 ; 028B 01014 wait50 028B 3005 01015 movlw 5 028C 00B8 01016 movwf wait_t 028D 0181 01017 wait50b clrf TMR0 028E 30B4 01018 wait50a movlw CSEC MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 20 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 028F 0201 01019 subwf TMR0, W 0290 1D03 01020 btfss STATUS, Z 0291 2A8E 01021 goto wait50a 0292 0BB8 01022 decfsz wait_t, F 0293 2A8D 01023 goto wait50b 01024 0294 0008 01025 return 01026 01027 01028 ; 01029 ; 割り込み処理ルーチン 01030 ; 0295 01031 int_sub 0295 00BF 01032 MOVWF W_TEMP ;Copy W to TEMP register, could be bank one or zero 0296 0E03 01033 SWAPF STATUS, W ;Swap status to be saved into W 0297 0183 01034 CLRF STATUS ;bank 0, regardless of current bank, Clears IRP,RP1,RP0 0298 00BD 01035 MOVWF STATUS_TEMP ;Save status to bank zero STATUS_TEMP register 0299 080A 01036 MOVF PCLATH, W ;Only required if using pages 1, 2 and/or 3 029A 00BC 01037 MOVWF PCLATH_TEMP ;Save PCLATH into W 029B 018A 01038 CLRF PCLATH ;Page zero, regardless of current page 029C 1283 01039 BCF STATUS, RP0 ;Return to Bank 0 029D 0804 01040 MOVF FSR, W ;Copy FSR to W 029E 00BE 01041 MOVWF FSR_TEMP ;Copy FSR from W to FSR_TEMP 01042 ; 01043 ;(InterruptServiceRoutines) 01044 ; 029F 018E 01045 clrf TMR1L ; タイマークリア 02A0 018F 01046 clrf TMR1H 02A1 110C 01047 bcf PIR1, CCP1IF ; コンペア割込クリア 01048 02A2 1683 01049 bsf STATUS, RP0 02A3 3078 01050 movlw LOW ( FSCAN / (FBLINK * 2)) ; ブリンク周期検出 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 02A4 022B 01051 subwf blink_l, W 02A5 1D03 01052 btfss STATUS, Z 02A6 2AB2 01053 goto bl1 02A7 3000 01054 movlw HIGH ( FSCAN / (FBLINK * 2)) Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 02A8 022A 01055 subwf blink_h, W 02A9 1D03 01056 btfss STATUS, Z 02AA 2AB2 01057 goto bl1 01058 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 02AB 01AB 01059 clrf blink_l ; 点滅ターン Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 02AC 01AA 01060 clrf blink_h Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 02AD 1BA9 01061 btfsc NDCOL, 7 02AE 2AB1 01062 goto bl2 01063 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 02AF 17A9 01064 bsf NDCOL, 7 ; ビットセット 02B0 2AB2 01065 goto bl1 01066 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 02B1 13A9 01067 bl2 bcf NDCOL, 7 ; ビットクリア 01068 02B2 30A0 01069 bl1 movlw DIG0 ; W = DIG[NDCOL] MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 21 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 02B3 0084 01070 movwf FSR Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 02B4 0829 01071 movfw NDCOL 02B5 397F 01072 andlw b'01111111' ; 点滅ビットフィルタ 02B6 0784 01073 addwf FSR, F ; 表示メモリ読み出し 02B7 3004 008A 01074 PAGESEL char_p 02B9 0800 01075 movfw INDF 02BA 391F 01076 andlw b'00011111' ; DP, BLINKビットフィルタ 02BB 3C0E 01077 sublw N_CHAR 02BC 1803 01078 btfsc STATUS, C 02BD 2AC0 01079 goto bl1a 01080 02BE 3008 01081 movlw b'00001000' ; 無効キャラクタ "_" 02BF 2AC3 01082 goto bl1c 01083 02C0 0800 01084 bl1a movfw INDF 02C1 391F 01085 andlw b'00011111' 02C2 2400 01086 call char_p ; キャラクタ読み出し 01087 02C3 1283 01088 bl1c bcf STATUS, RP0 02C4 0186 01089 clrf PORTB ; 全コモン OFF 02C5 0087 01090 movwf PORTC ; セグメント出力 02C6 1B80 01091 btfsc INDF, 7 ; DP点灯 02C7 1787 01092 bsf PORTC, 7 02C8 1683 01093 bsf STATUS, RP0 01094 02C9 1F00 01095 bl1b btfss INDF, 6 ; ブリンクフラグ 02CA 2ACD 01096 goto no_blnk 01097 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 02CB 1BA9 01098 btfsc NDCOL, 7 ; 点滅状態ビット 0:点灯 1:消灯 02CC 2AE1 01099 goto bl3 01100 02CD 01101 no_blnk 02CD 1E80 01102 btfss INDF, 5 ; DP blink flag 02CE 2AD8 01103 goto bl3a 01104 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 02CF 1BA9 01105 btfsc NDCOL, 7 ; 点滅制御ビット 02D0 2AD5 01106 goto bl3b 01107 02D1 1283 01108 bcf STATUS, RP0 02D2 1387 01109 bcf PORTC, 7 ; DP clear 02D3 1683 01110 bsf STATUS, RP0 02D4 2AD8 01111 goto bl3a 01112 02D5 1283 01113 bl3b bcf STATUS, RP0 02D6 1787 01114 bsf PORTC, 7 ; DP set 02D7 1683 01115 bsf STATUS, RP0 01116 02D8 1283 01117 bl3a bcf STATUS, RP0 02D9 0807 01118 movfw PORTC ; セグメント全消灯時コモンOFF 02DA 1683 01119 bsf STATUS, RP0 02DB 1903 01120 btfsc STATUS, Z 02DC 2AE1 01121 goto bl3 01122 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 02DD 0828 01123 movfw DCOL ; コモン点灯 MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 22 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 02DE 1283 01124 bcf STATUS, RP0 02DF 0086 01125 movwf PORTB 02E0 1683 01126 bsf STATUS, RP0 01127 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 02E1 0AA9 01128 bl3 incf NDCOL, F ; 桁番号 +1 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 02E2 0829 01129 movfw NDCOL 02E3 397F 01130 andlw b'01111111' ; 点灯状態フラグフィルタ 02E4 3C08 01131 sublw 8 02E5 1D03 01132 btfss STATUS, Z 02E6 2AE9 01133 goto bl4 01134 02E7 30F0 01135 movlw b'11110000' ; reset NDCOL Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 02E8 05A9 01136 andwf NDCOL, F 01137 02E9 1003 01138 bl4 bcf STATUS, C ; Common bit Shift Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 02EA 0DA8 01139 rlf DCOL, F ; 次の桁 02EB 1803 01140 btfsc STATUS, C Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 02EC 1428 01141 bsf DCOL, 0 01142 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 02ED 0AAB 01143 incf blink_l, F ; 点滅カウンタ+1 02EE 1903 01144 btfsc STATUS, Z Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 02EF 0AAA 01145 incf blink_h, F 01146 02F0 1283 01147 bcf STATUS, RP0 01148 02F1 083E 01149 MOVF FSR_TEMP, W ;Copy FSR from FSR_TEMP to W 02F2 0084 01150 MOVWF FSR ;Copy W to FSR 02F3 083C 01151 MOVF PCLATH_TEMP, W ;Restore PCLATH 02F4 008A 01152 MOVWF PCLATH ;Move W into PCLATH 02F5 0E3D 01153 SWAPF STATUS_TEMP,W ;Swap STATUS_TEMP register into W 01154 ;(sets bank to original state) 02F6 0083 01155 MOVWF STATUS ;Move W into STATUS register 02F7 0EBF 01156 SWAPF W_TEMP,F ;Swap W_TEMP 02F8 0E3F 01157 SWAPF W_TEMP,W ;Swap W_TEMP into W 02F9 0009 01158 RETFIE 01159 01160 01161 ; 01162 ; テストモード 01163 ; 02FA 01164 tst_mode 02FA 21FA 01165 call v_clear 02FB 01A6 01166 clrf timeLSB ; clear current LAP time 02FC 01A5 01167 clrf timeMSB 02FD 01A1 01168 clrf var2 ; beep, messege flag 02FE 082D 01169 tst1 movfw prev_t 02FF 0201 01170 subwf TMR0, W ; TMR0値の差分 0300 00A0 01171 movwf var1 ; var1 = TMR0 - prev_t 0301 30B4 01172 movlw CSEC 0302 0220 01173 subwf var1, W ; 前回値との差が CSECを越えたか? 0303 1C03 01174 btfss STATUS, C MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 23 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 0304 2AFE 01175 goto tst1 0305 30B4 01176 movlw CSEC 0306 07AD 01177 addwf prev_t, F ; prev_tに CSECを加算 0307 0AA6 01178 incf timeLSB, F ; timeLSBに +1 0308 1D03 01179 btfss STATUS, Z 0309 2B10 01180 goto tst2 030A 0AA5 01181 incf timeMSB, F 030B 1D03 01182 btfss STATUS, Z ; 計測値が 10:55:35を越えたら 030C 2B10 01183 goto tst2 ; 保存値を 0xffffにする 030D 30FF 01184 movlw 0xff 030E 00A6 01185 movwf timeLSB 030F 00A5 01186 movwf timeMSB 0310 1683 01187 tst2 bsf STATUS, RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0311 102C 01188 bcf dspMode, 0 0312 1283 01189 bcf STATUS, RP0 0313 2204 01190 call msec2time ; 計測時間の表示 0314 2AFE 01191 goto tst1 01192 01193 01194 ; 文字列データ 01195 ; 0400 01196 org (( $ + 0x100 ) & 0x0f00) 01197 ; 01198 ; キャラクタパターン 01199 ; 01200 ; bit7 - bit0 = DP G F E D C B A 01201 ; DIG0 - DIG7 = DP BLNK DPBLNK c4 c3 c2 c1 c0 0400 01202 char_p 0400 0782 01203 addwf PCL, F 0401 343F 01204 dt b'00111111' ; '0' 0 0402 3406 01205 dt b'00000110' ; '1' 0403 345B 01206 dt b'01011011' ; '2' 0404 344F 01207 dt b'01001111' ; '3' 0405 3466 01208 dt b'01100110' ; '4' 0406 346D 01209 dt b'01101101' ; '5' 5 0407 347D 01210 dt b'01111101' ; '6' 0408 3427 01211 dt b'00100111' ; '7' 0409 347F 01212 dt b'01111111' ; '8' 040A 346F 01213 dt b'01101111' ; '9' 040B 3400 01214 dt b'00000000' ; ' ' 10 040C 3473 01215 dt b'01110011' ; 'P' 040D 345E 01216 dt b'01011110' ; 'd' 040E 3440 01217 dt b'01000000' ; '-' 040F 3401 01218 dt b'00000001' ; '~' 01219 01220 ; 01221 ; 文字列データ 01222 ; 0410 01223 ver_s 0410 0782 01224 addwf PCL, F 0411 3409 3488 3400 01225 dt 9, 0x88, 0, 0x82, 2, 0x85, 0x8b, 0x8c, 0xff 3482 3402 3485 348B 348C 34FF 01226 041A 01227 min2_s 041A 0782 01228 addwf PCL, F 041B 340D 340D 34FF 01229 dt 13, 13, 0xff MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 24 laptimer LOC OBJECT CODE LINE SOURCE TEXT VALUE 01230 041E 01231 min8_s 041E 0782 01232 addwf PCL, F 041F 340D 340D 340D 01233 dt 13, 13, 13, 13, 13, 13, 13, 13, 0xff 340D 340D 340D 340D 340D 34FF 01234 01235 ; 01236 ; パワーオンアニメーション 01237 ; 0428 0782 01238 pwon_s addwf PCL, F 0429 3440 01239 dt b'01000000' 042A 3406 01240 dt b'00000110' 042B 3409 01241 dt b'00001001' 042C 3430 01242 dt b'00110000' 042D 3440 01243 dt b'01000000' 01244 01245 end MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 25 laptimer SYMBOL TABLE LABEL VALUE ADCON0 0000001F ADCON1 0000009F ADCS0 00000006 ADCS1 00000007 ADIE 00000006 ADIF 00000006 ADON 00000000 ADRES 0000001E AH 00000033 AL 00000032 A_BUZ 00000005 A_IR 00000003 A_RST 00000002 A_STA 00000000 A_STP 00000001 BF 00000000 BH 00000035 BL 00000034 BRGH 00000002 BS ( 1 << x ) C 00000000 CCP1CON 00000017 CCP1IE 00000002 CCP1IF 00000002 CCP1M0 00000000 CCP1M1 00000001 CCP1M2 00000002 CCP1M3 00000003 CCP1X 00000005 CCP1Y 00000004 CCP2CON 0000001D CCP2IE 00000000 CCP2IF 00000000 CCP2M0 00000000 CCP2M1 00000001 CCP2M2 00000002 CCP2M3 00000003 CCP2X 00000005 CCP2Y 00000004 CCPR1H 00000016 CCPR1L 00000015 CCPR2H 0000001C CCPR2L 0000001B CH 00000037 CHS0 00000003 CHS1 00000004 CHS2 00000005 CKP 00000004 CL 00000036 CREN 00000004 CSEC (( RTCLK / PSCR ) / 100) CSRC 00000007 D 00000005 DATA_ADDRESS 00000005 DC 00000001 DCOL 000000A8 DIG0 000000A0 DIG1 000000A1 MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 26 laptimer SYMBOL TABLE LABEL VALUE DIG2 000000A2 DIG3 000000A3 DIG4 000000A4 DIG5 000000A5 DIG6 000000A6 DIG7 000000A7 D_A 00000005 F 00000001 FBLINK 4 FERR 00000002 FSCAN 960 FSR 00000004 FSR_TEMP 0000003E GIE 00000007 GO 00000002 GO_DONE 00000002 I2C_DATA 00000005 I2C_READ 00000002 I2C_START 00000003 I2C_STOP 00000004 INDF 00000000 INTCON 0000000B INTE 00000004 INTEDG 00000006 INTF 00000001 IRP 00000007 LM_BEEP 00000003 LM_CDSP 00000001 LM_DDSP 00000002 LM_DIFF 00000000 LapMode 0000003A MAXLAP 64 MSEC (( RTCLK / PSCR ) / 1000) NDCOL 000000A9 NOT_A 00000005 NOT_ADDRESS 00000005 NOT_BO 00000000 NOT_BOR 00000000 NOT_DONE 00000002 NOT_PD 00000003 NOT_POR 00000001 NOT_RBPU 00000007 NOT_RC8 00000006 NOT_T1SYNC 00000002 NOT_TO 00000004 NOT_TX8 00000006 NOT_W 00000002 NOT_WRITE 00000002 N_CHAR 14 OERR 00000001 OPTION_REG 00000081 P 00000004 PCFG0 00000000 PCFG1 00000001 PCFG2 00000002 PCL 00000002 PCLATH 0000000A PCLATH_TEMP 0000003C MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 27 laptimer SYMBOL TABLE LABEL VALUE PCON 0000008E PEIE 00000006 PIE1 0000008C PIE2 0000008D PIR1 0000000C PIR2 0000000D PORTA 00000005 PORTB 00000006 PORTC 00000007 PR2 00000092 PS0 00000000 PS1 00000001 PS2 00000002 PSA 00000003 PSCR 256 PSCR1 8 PUT_S R 00000002 RBIE 00000003 RBIF 00000000 RC8_9 00000006 RC9 00000006 RCD8 00000000 RCIE 00000005 RCIF 00000005 RCREG 0000001A RCSTA 00000018 READ_WRITE 00000002 RP0 00000005 RP1 00000006 RTCLK ( XTAL / 4 ) RX9 00000006 RX9D 00000000 R_W 00000002 S 00000003 SCOUNT (( RTCLK / PSCR1 ) / FSCAN) SPBRG 00000099 SPEN 00000007 SREN 00000005 SSPADD 00000093 SSPBUF 00000013 SSPCON 00000014 SSPEN 00000005 SSPIE 00000003 SSPIF 00000003 SSPM0 00000000 SSPM1 00000001 SSPM2 00000002 SSPM3 00000003 SSPOV 00000006 SSPSTAT 00000094 STATUS 00000003 STATUS_TEMP 0000003D SYNC 00000004 T0CS 00000005 T0IE 00000005 T0IF 00000002 T0SE 00000004 MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 28 laptimer SYMBOL TABLE LABEL VALUE T1CKPS0 00000004 T1CKPS1 00000005 T1CON 00000010 T1INSYNC 00000002 T1OSCEN 00000003 T2CKPS0 00000000 T2CKPS1 00000001 T2CON 00000012 TMR0 00000001 TMR1CS 00000001 TMR1H 0000000F TMR1IE 00000000 TMR1IF 00000000 TMR1L 0000000E TMR1ON 00000000 TMR2 00000011 TMR2IE 00000001 TMR2IF 00000001 TMR2ON 00000002 TOUTPS0 00000003 TOUTPS1 00000004 TOUTPS2 00000005 TOUTPS3 00000006 TRISA 00000085 TRISB 00000086 TRISC 00000087 TRMT 00000001 TX8_9 00000006 TX9 00000006 TX9D 00000000 TXD8 00000000 TXEN 00000005 TXIE 00000004 TXIF 00000004 TXREG 00000019 TXSTA 00000098 UA 00000001 W 00000000 WCOL 00000007 W_TEMP 0000003F XTAL 18432000 Z 00000002 _BODEN_OFF 00003FBF _BODEN_ON 00003FFF _CP_50 00002AEF _CP_75 000015DF _CP_ALL 000000CF _CP_OFF 00003FFF _HS_OSC 00003FFE _LP_OSC 00003FFC _PWRTE_OFF 00003FFF _PWRTE_ON 00003FF7 _RC_OSC 00003FFF _WDT_OFF 00003FFB _WDT_ON 00003FFF _XT_OSC 00003FFD __16C73A 00000001 add_ax 00000282 MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 29 laptimer SYMBOL TABLE LABEL VALUE anm1 00000029 anm2 0000002A anm3 0000002B anm4 00000048 bcd1 000001F0 bcd2 000001F7 bit_cnt 00000031 bl1 000002B2 bl1a 000002C0 bl1b 000002C9 bl1c 000002C3 bl2 000002B1 bl3 000002E1 bl3a 000002D8 bl3b 000002D5 bl4 000002E9 blink_h 000000AA blink_l 000000AB buz_ck 000000DC c_break 0000016C c_lap 0000002E char_p 00000400 clrlap 00000064 csec 0000002C div_2 00000276 div_cnt 00000030 divloop 0000026D do_chk 000000FE dspMode 000000AC f_lap 0000002F function_div 00000262 get_lap 000001E2 int_sub 00000295 itoa 000001EB laploop 0000008D list1 0000018E list1b 000001A7 list2 000001AD list4 000001B2 list5 000001B6 mescl1 000000F0 mesclr 000000E7 min 0000002A min2_s 0000041A min8_s 0000041E mloop1 0000020D mloop2 00000215 mloop4 00000261 mloop5 00000238 msec2time 00000204 n_page 000001D0 neg_bx 0000027C no_blnk 000002CD p_page 000001D4 position 00000266 prev_t 0000002D prevlap 0000018B prvl1 00000183 MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 30 laptimer SYMBOL TABLE LABEL VALUE putschr 00000039 putscnt 00000029 pwon_s 00000428 r_btn 000001B6 restart 000001D8 rstart 00000062 sec 0000002B set_lap 000001D9 start 00000005 tim_e0 0000010A tim_e0a 0000010D tim_e0b 00000126 tim_e0c 00000119 tim_e0d 0000011F tim_e3 00000136 tim_e3a 0000012C tim_e4 0000013B tim_e5 00000148 tim_e6 0000014D tim_e7 00000153 tim_e8 00000154 tim_e8a 00000157 tim_e9 0000015A tim_end 00000104 timeLSB 00000026 timeMSB 00000025 timloop 0000009F tit2 00000059 tst1 000002FE tst2 00000310 tst_mode 000002FA ttmpLSB 00000028 ttmpMSB 00000027 v_clear 000001FA v_l1 000001FC valid 000000B2 valid0 000000B4 valid1 000000BD valid2 000000C5 valid3 000000D8 valid4 000000CE var1 00000020 var2 00000021 var3 00000022 var4 00000023 var5 00000024 ver_s 00000410 w10ms 0000009F w_btn 000001C1 w_btn1 000001C8 w_ir1 00000081 w_ir2 00000085 w_sta 00000071 w_sta2 0000007C wait2 0000005D wait3 0000005B wait50 0000028B wait50a 0000028E MPASM 02.01.08 Intermediate LAP7SEG.ASM 2-26-1998 11:33:44 PAGE 31 laptimer SYMBOL TABLE LABEL VALUE wait50b 0000028D wait_t 00000038 zeros0 00000230 zeros1 00000236 zeros2 00000240 zeros3 00000242 zeros4 0000024E zeros5 0000024F MEMORY USAGE MAP ('X' = Used, '-' = Unused) 0000 : X---XXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 00C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0140 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0180 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 01C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0200 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0240 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0280 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 02C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0300 : XXXXXXXXXXXXXXXX XXXXX----------- ---------------- ---------------- 0400 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXX-- ---------------- 2000 : -------X-------- ---------------- ---------------- ---------------- All other memory blocks unused. Program Memory Words Used: 832 Program Memory Words Free: 3264 Errors : 0 Warnings : 0 reported, 0 suppressed Messages : 60 reported, 0 suppressed