gpasm-0.13.0 beta pad_rx_f88.asm4-20-2005 11:13:14 PAGE 1 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00001 ; 00002 ; pad-rx for PIC16F88 OSC:20MHz(セラロック) 00003 ; 00004 ; by NaO 00005 00006 00007 LIST P=16F88,ST=OFF,R=DEC,F=INHX8M 00008 INCLUDE p16f88.inc 00001 LIST 00002 ; P16F88.INC Standard Header File, Version 1.00 Microchip Technology, Inc. 00400 LIST 00009 00010 ERRORLEVEL -207,-302,-306 00011 00012 ;Program Configuration Register 1 002007 3F42 00013 __CONFIG _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_ON & _MCLR_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC 00014 00015 ;Program Configuration Register 2 002008 3FFC 00016 __CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF 00017 00018 00019 ; for EEPROM(memo) 2100 00020 org 0x2100 2100 0050 0041 00021 de "PAD-RX(PIC16F88) Version 0.13 2005/04/19 23:40" 2102 0044 002D 2104 0052 0058 2106 0028 0050 2108 0049 0043 210A 0031 0036 210C 0046 0038 210E 0038 0029 2110 0020 0056 2112 0065 0072 2114 0073 0069 2116 006F 006E 2118 0020 0030 211A 002E 0031 211C 0033 0020 211E 0032 0030 2120 0030 0035 2122 002F 0030 2124 0034 002F 2126 0031 0039 2128 0020 0032 212A 0033 003A 212C 0034 0030 00022 00023 ; Version 0.13 2005/4/19 00024 ; IR-debug 00025 00026 ; Version 0.12 2005/4/19 00027 ; 232C-debug 00028 00029 ; Version 0.11 2005/4/19 gpasm-0.13.0 beta pad_rx_f88.asm4-20-2005 11:13:14 PAGE 2 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00030 ; 机上設計その2 00031 00032 ; Version 0.10 2005/4/18 00033 ; 机上設計 00034 00035 00036 00037 ; 00038 #define BANK0 bcf STATUS,RP0 00039 #define BANK1 bsf STATUS,RP0 00040 00041 00042 ; 定数定義 00043 #define RS232_SPBRG 129 ; 20MHz:9600bps 00044 00045 ; ram定義 00000020 00046 save_w equ 0x20 ; Wレジスタ退避用 00000021 00047 save_status equ 0x21 ; Statusレジスタ退避用 00048 00000022 00049 count_100us equ 0x22 ; wait count用 00000023 00050 count_1ms equ 0x23 ; wait count用 00000023 00051 count_10ms equ 0x23 ; wait count用 00000024 00052 count_100ms equ 0x24 ; wait count用 00053 00000025 00054 RX_DATA equ 0x25 ; 受信バッファ 00000026 00055 IR_DATA equ 0x26 00000027 00056 FLAGS equ 0x27 ; 各種フラグ 00057 #define IS_DATA FLAGS,0 ; 受信データ(0:なし 1:あり) 00058 #define IS_MODE FLAGS,1 ; 動作モード(0:normal 1:PC) 00000028 00059 wrk1 equ 0x28 ; wrk1 00000029 00060 wrk2 equ 0x29 ; wrk2 00061 00062 ;ポート関連 00063 #define PCSW_bit 4 ; PC-PWR S/Wビット 00064 #define PCSW PORTB,PCSW_bit ; PC-PWR S/W 00065 #define HAZZARD_bit 6 ; ハザードビット 00066 #define HAZZARD PORTB,HAZZARD_bit ; ハザード 00067 #define PC_IN_bit 3 ; PC(5V)電源監視 00068 #define PC_IN PORTB,PC_IN_bit 00069 #define IGN_IN_bit 1 ; IGN(12V)監視(Hi/Lo) 00070 #define IGN_IN PORTB,IGN_IN_bit 00071 #define IGN_AD_bit 0 ; IGN(12V)A/D 00072 #define IGN_AD PORTA,IGN_AD_bit 00073 00074 00075 ;割込み関連 00076 #define gie INTCON,GIE ; 全体割込み (Bank0/1) 00077 #define peie INTCON,PEIE ; 全体割込み (Bank0/1) 00078 #define tmr0ie INTCON,TMR0IE ; Timer0 割込み (Bank0/1) 00079 #define rcie PIE1,RCIE ; RX 割込み (Bank1) 00080 00081 #define tmr0if INTCON,TMR0IF ; Timer0割込みフラグ (Bank0/1) 00082 #define rcif PIR1,RCIF ; RX割込みフラグ (Bank0) 00083 #define adif PIR1,RCIF ; A/D-Conv割込みフラグ (Bank0) gpasm-0.13.0 beta pad_rx_f88.asm4-20-2005 11:13:14 PAGE 3 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00084 00085 00086 00087 ; begin 0000 00088 org 0 0000 2805 00089 goto INIT 00090 0004 00091 org 4 0004 28C5 00092 goto INTR 00093 00094 0005 00095 INIT 0008 00096 org 8 00097 0008 1283 00098 BANK0 00099 0009 3000 00100 movlw B'00000000' ; PortA 5:- 4:- 3:low 2:low 1:low 0:A/D 000A 0085 00101 movwf PORTA ; 00102 000B 3020 00103 MOVLW B'00100000' ; PortB 7:- 6:low 5(TX):High 4:low 3:low 2(RX):- 1:low 0:low 000C 0086 00104 MOVWF PORTB ; RB5をHigh RB0,1,2,3,4,6,7をLo 00105 000D 1683 00106 BANK1 00107 000E 3007 00108 movlw B'00000111' ; Comparator Off 000F 009C 00109 movwf CMCON 00110 0010 3001 00111 movlw B'00000001' ; PortA 5:- 4:- 3:Out 2:Out 1:Out 0:In(A/D) 0011 0085 00112 movwf TRISA ; 00113 0012 300F 00114 movlw B'00001111' ; PortB 7:- 6:Out 5(TX):Out 4:Out 3:In 2(RX):In 1:In 0:In 0013 0086 00115 movwf TRISB ; RB0〜3を入力に 00116 0014 3007 00117 movlw B'00000111' ; PortBは内部プルアップ、PSは1/256 0015 0081 00118 movwf OPTION_REG ; 00119 0016 3001 00120 movlw B'00000001' ; PortA 5:- 4:- 3:- 2:- 1:- 0:A/D 0017 009B 00121 movwf ANSEL 00122 00123 00124 ;; USART設定(TXSTA:BANK1,RCSTA:BANK0) 0018 1518 00125 bsf TXSTA,BRGH ; 高速モード 0019 1698 00126 bsf TXSTA,TXEN ; 送信OK 001A 1218 00127 bcf TXSTA,SYNC ; 非同期 001B 3081 00128 movlw RS232_SPBRG ; ボーレート設定 001C 0099 00129 movwf SPBRG 001D 168C 00130 bsf rcie ; RX割込み許可 00131 001E 1283 00132 BANK0 001F 1798 00133 bsf RCSTA,SPEN ; USART Enable(RB2=RX,RB5=TX) 0020 1218 00134 bcf RCSTA,CREN ; 取りあえずクリア 00135 00136 ;; 割込み設定 0021 3000 00137 movlw B'00000000' ; まずは全部オフ gpasm-0.13.0 beta pad_rx_f88.asm4-20-2005 11:13:14 PAGE 4 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0022 008B 00138 movwf INTCON 0023 2824 00139 goto MAIN 00140 00141 00142 ;; メイン 0024 00143 MAIN 0024 01A7 00144 clrf FLAGS ; フラグリセット 0025 213A 00145 call wait_500ms ; 0.5秒待つ 00146 00147 ; 割込み許可 00148 ;bsf INTCON,TMR0IE ; タイマ0割込みOK 00149 0026 3000 00150 movlw 0 0027 00A5 00151 movwf RX_DATA ; RX_DATAクリア 0028 1027 00152 bcf IS_DATA ; IS_DATA初期化 00153 ; 0029 1118 00154 bcf RCSTA,FERR ; 取りあえずクリア 002A 1098 00155 bcf RCSTA,OERR ; 取りあえずクリア 002B 1218 00156 bcf RCSTA,CREN ; 取りあえずクリア 002C 0000 00157 nop 002D 1618 00158 bsf RCSTA,CREN ; 受信可能状態(継続受信OK) 00159 00160 ;; OK 002E 304F 00161 movlw 'O' ; 'O'を出力 002F 0099 00162 movwf TXREG 0030 2126 00163 call wait_1ms 0031 304B 00164 movlw 'K' ; 'K'を出力 0032 0099 00165 movwf TXREG 0033 2126 00166 call wait_1ms 0034 300D 00167 movlw 13 0035 0099 00168 movwf TXREG 0036 2126 00169 call wait_1ms 0037 300A 00170 movlw 10 0038 0099 00171 movwf TXREG 0039 2126 00172 call wait_1ms 00173 00174 ;; 割込み許可 00175 003A 170B 00176 bsf peie ; 周辺割込みOK 003B 178B 00177 bsf gie ; 全体割込みOK 00178 003C 00179 main_loop 003C 0806 00180 movf PORTB,W ; PortBをリード 003D 00A8 00181 movwf wrk1 00182 003E 00183 check_mode 003E 19A8 00184 btfsc wrk1,PC_IN_bit ; PC-INだったら(RB3=Low)skip 003F 2842 00185 goto normal_mode 00186 0040 00187 pc_mode 0040 14A7 00188 bsf IS_MODE ; PCモード成立 0041 2844 00189 goto rx_check 00190 0042 00191 normal_mode gpasm-0.13.0 beta pad_rx_f88.asm4-20-2005 11:13:14 PAGE 5 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0042 10A7 00192 bcf IS_MODE ; normalモード成立 0043 2844 00193 goto rx_check 00194 0044 00195 rx_check 0044 1827 00196 btfsc IS_DATA ; IS_DATAがLow(データなし)だったらSkip 0045 2847 00197 goto check_data ; 受信データチェックへ 00198 0046 283C 00199 goto main_loop 00200 00201 0047 00202 check_data 0047 1027 00203 bcf IS_DATA ; IS_DATA クリア 00204 00205 00206 ;; PWR(短)チェック 0048 00207 check_PWR 0048 3030 00208 movlw '0' ; PWR(短)チェック 0049 0225 00209 subwf RX_DATA,W 004A 1D03 00210 btfss STATUS,Z ; STATUSが0(RX_DATA=='0')だったらSkip 004B 2855 00211 goto check_PWR_L ; 次チェックへ 00212 004C 1CA7 00213 btfss IS_MODE ; IS_MODEがHighだったらSkip(PCモード) 004D 2851 00214 goto PWR_normal 00215 004E 00216 PWR_pc 004E 3030 00217 movlw '0' ; '0'を出力 004F 0099 00218 movwf TXREG 0050 283C 00219 goto main_loop 00220 00221 0051 00222 PWR_normal 0051 3001 00223 movlw B'001' ; 0052 00A6 00224 movwf IR_DATA 0053 210C 00225 call pulse_ir ; IrConに 1 を送出 0054 283C 00226 goto main_loop 00227 00228 00229 ;; PWR(長)チェック 0055 00230 check_PWR_L 0055 3050 00231 movlw 'P' 0056 0225 00232 subwf RX_DATA,W 0057 1D03 00233 btfss STATUS,Z ; STATUSが0(RX_DATA=='P')だったらSkip 0058 2860 00234 goto check_FM ; 次チェックへ 00235 0059 1CA7 00236 btfss IS_MODE ; IS_MODEがHighだったらSkip(PCモード) 005A 285E 00237 goto PWR_L_normal 00238 005B 00239 PWR_L_pc 005B 3050 00240 movlw 'P' ; 'P'を出力 005C 0099 00241 movwf TXREG 005D 283C 00242 goto main_loop 00243 005E 00244 PWR_L_normal 005E 20D6 00245 call pulse_pc_pwr_sw ; PCパワースイッチ制御(1パルス) gpasm-0.13.0 beta pad_rx_f88.asm4-20-2005 11:13:14 PAGE 6 LOC OBJECT CODE LINE SOURCE TEXT VALUE 005F 283C 00246 goto main_loop 00247 00248 00249 ;; FM(短)チェック 0060 00250 check_FM 0060 3031 00251 movlw '1' 0061 0225 00252 subwf RX_DATA,W 0062 1D03 00253 btfss STATUS,Z ; STATUSが0(RX_DATA=='1')だったらSkip 0063 286D 00254 goto check_FM_L ; 次チェックへ 00255 0064 1CA7 00256 btfss IS_MODE ; IS_MODEがHighだったらSkip(PCモード) 0065 2869 00257 goto FM_normal 00258 0066 00259 FM_pc 0066 3031 00260 movlw '1' ; '1'を出力 0067 0099 00261 movwf TXREG 0068 283C 00262 goto main_loop 00263 0069 00264 FM_normal 0069 3002 00265 movlw B'010' 006A 00A6 00266 movwf IR_DATA 006B 210C 00267 call pulse_ir ; IrConに 2 を送出 006C 283C 00268 goto main_loop 00269 006D 00270 check_FM_L 006D 3046 00271 movlw 'F' 006E 0225 00272 subwf RX_DATA,W 006F 1D03 00273 btfss STATUS,Z ; STATUSが0(RX_DATA=='1')だったらSkip 0070 287A 00274 goto check_AM ; 次チェックへ 00275 0071 1CA7 00276 btfss IS_MODE ; IS_MODEがHighだったらSkip(PCモード) 0072 2876 00277 goto FM_L_normal 00278 0073 00279 FM_L_pc 0073 3046 00280 movlw 'F' ; '1'を出力 0074 0099 00281 movwf TXREG 0075 283C 00282 goto main_loop 00283 0076 00284 FM_L_normal 0076 3003 00285 movlw B'011' 0077 00A6 00286 movwf IR_DATA 0078 210C 00287 call pulse_ir ; IrConに 3 を送出 0079 283C 00288 goto main_loop 00289 00290 ;; AM(短)チェック 007A 00291 check_AM 007A 3032 00292 movlw '2' 007B 0225 00293 subwf RX_DATA,W 007C 1D03 00294 btfss STATUS,Z ; STATUSが0(RX_DATA=='2')だったらSkip 007D 2885 00295 goto check_AM_L ; 次チェックへ 00296 007E 1CA7 00297 btfss IS_MODE ; IS_MODEがHighだったらSkip(PCモード) 007F 2883 00298 goto AM_normal 00299 gpasm-0.13.0 beta pad_rx_f88.asm4-20-2005 11:13:14 PAGE 7 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0080 00300 AM_pc 0080 3032 00301 movlw '2' ; '2'を出力 0081 0099 00302 movwf TXREG 0082 283C 00303 goto main_loop 00304 0083 00305 AM_normal 0083 20E9 00306 call pulse_hazzard ; ハザード制御(2パルス?) 0084 283C 00307 goto main_loop 00308 00309 00310 ;; AM(長)チェック 0085 00311 check_AM_L 0085 3041 00312 movlw 'A' 0086 0225 00313 subwf RX_DATA,W 0087 1D03 00314 btfss STATUS,Z ; STATUSが0(RX_DATA=='A')だったらSkip 0088 288F 00315 goto check_NEXT ; 次チェックへ 00316 0089 1CA7 00317 btfss IS_MODE ; IS_MODEがHighだったらSkip(PCモード) 008A 2883 00318 goto AM_normal 00319 008B 00320 AM_L_pc 008B 20E9 00321 call pulse_hazzard ; ハザード制御(2パルス?) 008C 283C 00322 goto main_loop 00323 008D 00324 AM_L_normal 008D 20E9 00325 call pulse_hazzard ; ハザード制御(2パルス?) 008E 283C 00326 goto main_loop 00327 00328 00329 ;; 選局(△)チェック 008F 00330 check_NEXT 008F 3033 00331 movlw '3' 0090 0225 00332 subwf RX_DATA,W 0091 1D03 00333 btfss STATUS,Z ; STATUSが0(RX_DATA=='3')だったらSkip 0092 289C 00334 goto check_PREV ; 次チェックへ 00335 0093 1CA7 00336 btfss IS_MODE ; IS_MODEがHighだったらSkip(PCモード) 0094 2898 00337 goto NEXT_normal 00338 0095 00339 NEXT_pc 0095 3033 00340 movlw '3' ; '3'を出力 0096 0099 00341 movwf TXREG 0097 283C 00342 goto main_loop 00343 0098 00344 NEXT_normal 0098 3004 00345 movlw B'100' 0099 00A6 00346 movwf IR_DATA 009A 210C 00347 call pulse_ir ; IrConに 4 を送出 009B 283C 00348 goto main_loop 00349 00350 00351 ;; 選局(▽)チェック 009C 00352 check_PREV 009C 3034 00353 movlw '4' gpasm-0.13.0 beta pad_rx_f88.asm4-20-2005 11:13:14 PAGE 8 LOC OBJECT CODE LINE SOURCE TEXT VALUE 009D 0225 00354 subwf RX_DATA,W 009E 1D03 00355 btfss STATUS,Z ; STATUSが0(RX_DATA=='4')だったらSkip 009F 28A9 00356 goto check_V_UP ; 次チェックへ 00357 00A0 1CA7 00358 btfss IS_MODE ; IS_MODEがHighだったらSkip(PCモード) 00A1 28A5 00359 goto PREV_normal 00360 00A2 00361 PREV_pc 00A2 3034 00362 movlw '4' ; '4'を出力 00A3 0099 00363 movwf TXREG 00A4 283C 00364 goto main_loop 00365 00A5 00366 PREV_normal 00A5 3005 00367 movlw B'101' 00A6 00A6 00368 movwf IR_DATA 00A7 210C 00369 call pulse_ir ; IrConに 5 を送出 00A8 283C 00370 goto main_loop 00371 00372 00373 ;; 音量(→) 00A9 00374 check_V_UP 00A9 3035 00375 movlw '5' 00AA 0225 00376 subwf RX_DATA,W 00AB 1D03 00377 btfss STATUS,Z ; STATUSが0(RX_DATA=='5')だったらSkip 00AC 28B6 00378 goto check_V_DOWN ; 次チェックへ 00379 00AD 1CA7 00380 btfss IS_MODE ; IS_MODEがHighだったらSkip(PCモード) 00AE 28B2 00381 goto V_UP_normal 00382 00AF 00383 V_UP_pc 00AF 3035 00384 movlw '5' ; '5'を出力 00B0 0099 00385 movwf TXREG 00B1 283C 00386 goto main_loop 00387 00B2 00388 V_UP_normal 00B2 3006 00389 movlw B'110' 00B3 00A6 00390 movwf IR_DATA 00B4 210C 00391 call pulse_ir ; IrConに 6 を送出 00B5 283C 00392 goto main_loop 00393 00394 00395 ;; 音量(←) 00B6 00396 check_V_DOWN 00B6 3036 00397 movlw '6' 00B7 0225 00398 subwf RX_DATA,W 00B8 1D03 00399 btfss STATUS,Z ; STATUSが0(RX_DATA=='6')だったらSkip 00B9 28C3 00400 goto check_END ; 次チェックへ 00401 00BA 1CA7 00402 btfss IS_MODE ; IS_MODEがHighだったらSkip(PCモード) 00BB 28BF 00403 goto V_DOWN_normal 00404 00BC 00405 V_DOWN_pc 00BC 3036 00406 movlw '6' ; '6'を出力 00BD 0099 00407 movwf TXREG gpasm-0.13.0 beta pad_rx_f88.asm4-20-2005 11:13:14 PAGE 9 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00BE 283C 00408 goto main_loop 00409 00BF 00410 V_DOWN_normal 00BF 3007 00411 movlw B'111' 00C0 00A6 00412 movwf IR_DATA 00C1 210C 00413 call pulse_ir ; IrConに 7 を送出 00C2 283C 00414 goto main_loop 00415 00416 00417 ;; 終了 00C3 00418 check_END 00C3 0000 00419 nop 00C4 283C 00420 goto main_loop 00421 00422 00423 ;; 割込み 00C5 00424 INTR 00425 ;; レジスタ退避 00C5 00A0 00426 movwf save_w ; Wレジスタ退避 00427 00C6 0803 00428 movf STATUS,W ; STATUS退避 00C7 00A1 00429 movwf save_status 00430 00C8 1A8C 00431 btfsc rcif ; USART受信あり?(rcif=lowならskip) 00C9 28CD 00432 goto RC_INTR 00433 00CA 190B 00434 btfsc tmr0if ; timer割り込み? 00CB 28D2 00435 goto T0_INTR 00436 00CC 28D2 00437 goto end_INTR 00438 00CD 00439 RC_INTR 00CD 081A 00440 movf RCREG,W ; 受信バッファ読み込み 00CE 00A5 00441 movwf RX_DATA 00CF 128C 00442 bcf rcif ; 割込みフラグクリア 00D0 1427 00443 bsf IS_DATA ; フラグセット 00D1 28D2 00444 goto end_INTR 00445 00D2 00446 T0_INTR 00447 00D2 00448 end_INTR 00449 ;; レジスタリストア 00D2 0821 00450 movf save_status,W 00D3 0083 00451 movwf STATUS 00452 00D4 0820 00453 movf save_w,W 00D5 0009 00454 RETFIE 00455 00456 ;; sub 00D6 00457 pulse_pc_pwr_sw 00D6 138B 00458 bcf gie ; 全体割込み禁止 00459 00D7 0806 00460 movf PORTB,W ; PortBを読み込み 00D8 00A8 00461 movwf wrk1 gpasm-0.13.0 beta pad_rx_f88.asm4-20-2005 11:13:14 PAGE 10 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00D9 1628 00462 bsf wrk1,PCSW_bit ; PCSWビットをセット 00DA 0828 00463 movf wrk1,W 00DB 0086 00464 movwf PORTB ; PCSW制御 00465 00DC 213A 00466 call wait_500ms 00DD 2134 00467 call wait_100ms 00DE 2134 00468 call wait_100ms 00469 00DF 0806 00470 movf PORTB,W ; PortBを読み込み 00E0 00A8 00471 movwf wrk1 00E1 1228 00472 bcf wrk1,PCSW_bit ; PCSWビットをクリア 00E2 0828 00473 movf wrk1,W 00E3 0086 00474 movwf PORTB ; PCSW制御 00475 00E4 1218 00476 bcf RCSTA,CREN ; 232Cリセット 00E5 0000 00477 nop 00E6 1618 00478 bsf RCSTA,CREN 00E7 178B 00479 bsf gie ; 全体割込み許可 00480 00E8 0008 00481 return 00482 00E9 00483 pulse_hazzard 00E9 138B 00484 bcf gie ; 全体割込み禁止 00485 00EA 0806 00486 movf PORTB,W ; PortBを読み込み 00EB 00A8 00487 movwf wrk1 00EC 1728 00488 bsf wrk1,HAZZARD_bit ; ハザードビットをセット 00ED 0828 00489 movf wrk1,W 00EE 0086 00490 movwf PORTB ; PCSW制御 00EF 2134 00491 call wait_100ms 00F0 2134 00492 call wait_100ms 00F1 2134 00493 call wait_100ms 00F2 0806 00494 movf PORTB,W ; PortBを読み込み 00F3 00A8 00495 movwf wrk1 00F4 1328 00496 bcf wrk1,HAZZARD_bit ; ハザードビットをクリア 00F5 0828 00497 movf wrk1,W 00F6 0086 00498 movwf PORTB ; PCSW制御 00F7 2134 00499 call wait_100ms 00F8 2134 00500 call wait_100ms 00F9 2134 00501 call wait_100ms 00502 00FA 0806 00503 movf PORTB,W ; PortBを読み込み 00FB 00A8 00504 movwf wrk1 00FC 1728 00505 bsf wrk1,HAZZARD_bit ; ハザードビットをセット 00FD 0828 00506 movf wrk1,W 00FE 0086 00507 movwf PORTB ; PCSW制御 00FF 2134 00508 call wait_100ms 0100 2134 00509 call wait_100ms 0101 2134 00510 call wait_100ms 0102 0806 00511 movf PORTB,W ; PortBを読み込み 0103 00A8 00512 movwf wrk1 0104 1328 00513 bcf wrk1,HAZZARD_bit ; ハザードビットをクリア 0105 0828 00514 movf wrk1,W 0106 0086 00515 movwf PORTB ; PCSW制御 gpasm-0.13.0 beta pad_rx_f88.asm4-20-2005 11:13:14 PAGE 11 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00516 0107 1218 00517 bcf RCSTA,CREN ; 232Cリセット 0108 0000 00518 nop 0109 1618 00519 bsf RCSTA,CREN 010A 178B 00520 bsf gie ; 全体割込み許可 00521 010B 0008 00522 return 00523 010C 00524 pulse_ir 010C 138B 00525 bcf gie 00526 010D 0826 00527 movf IR_DATA,W 010E 3907 00528 andlw B'00000111' 010F 00A9 00529 movwf wrk2 0110 0DA9 00530 rlf wrk2,F ; 1ビット左へシフト 00531 0111 0805 00532 movf PORTA,W 0112 39F1 00533 andlw B'11110001' 00534 0113 0429 00535 iorwf wrk2,W 00536 0114 0085 00537 movwf PORTA ; IR操作 00538 0115 2134 00539 call wait_100ms 00540 0116 0805 00541 movf PORTA,W 0117 39F1 00542 andlw B'11110001' 00543 0118 0085 00544 movwf PORTA ; IR操作 00545 0119 2134 00546 call wait_100ms 00547 011A 1218 00548 bcf RCSTA,CREN ; 232Cリセット 011B 0000 00549 nop 011C 1618 00550 bsf RCSTA,CREN 011D 178B 00551 bsf gie ; 全体割込み許可 00552 011E 0008 00553 return 00554 00555 00556 00557 ;; 100usec Wait 011F 00558 wait_100us 011F 30A5 00559 movlw 165 0120 00A2 00560 movwf count_100us 0121 0000 00561 nop 0122 0000 00562 nop 00563 0123 00564 loop_wait_100us 0123 0BA2 00565 decfsz count_100us,F 0124 2923 00566 goto loop_wait_100us 0125 0008 00567 return 00568 00569 gpasm-0.13.0 beta pad_rx_f88.asm4-20-2005 11:13:14 PAGE 12 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00570 ;; 1msec Wait about 1.001msec 0126 00571 wait_1ms 0126 300A 00572 movlw 10 0127 00A3 00573 movwf count_1ms 00574 0128 00575 loop_wait_1ms 0128 211F 00576 call wait_100us 0129 0BA3 00577 decfsz count_1ms,F 012A 2928 00578 goto loop_wait_1ms 012B 0008 00579 return 00580 00581 00582 ;; 10msec Wait 012C 00583 wait_10ms 012C 3063 00584 movlw 99 012D 00A3 00585 movwf count_10ms 012E 0000 00586 nop 012F 0000 00587 nop 00588 0130 00589 loop_wait_10ms 0130 211F 00590 call wait_100us 0131 0BA3 00591 decfsz count_10ms,F 0132 2930 00592 goto loop_wait_10ms 0133 0008 00593 return 00594 00595 00596 ;; 100msec Wait 0134 00597 wait_100ms 0134 300A 00598 movlw 10 0135 00A4 00599 movwf count_100ms 00600 0136 00601 loop_wait_100ms 0136 212C 00602 call wait_10ms 0137 0BA4 00603 decfsz count_100ms,F 0138 2936 00604 goto loop_wait_100ms 0139 0008 00605 return 00606 00607 ;; 500msec Wait 013A 00608 wait_500ms 013A 3032 00609 movlw 50 013B 00A4 00610 movwf count_100ms 00611 013C 00612 loop_wait_500ms 013C 212C 00613 call wait_10ms 013D 0BA4 00614 decfsz count_100ms,F 013E 293C 00615 goto loop_wait_500ms 013F 0008 00616 return 00617 MEMORY USAGE MAP ('X' = Used, '-' = Unused) 00000000 : X---X---XXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 00000040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX gpasm-0.13.0 beta pad_rx_f88.asm4-20-2005 11:13:14 PAGE 13 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 000000c0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 00000100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 00002000 : -------XX------- ---------------- ---------------- ---------------- 00002100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXX-- ---------------- All other memory blocks unused. Program Memory Words Used: 362 Errors : 0 Warnings : 0 reported, 0 suppressed Messages : 0 reported, 10 suppressed