gpasm-0.13.0 beta pad_tx_f88.asm4-18-2005 18:09:45 PAGE 1 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00001 ; 00002 ; pad-tx for PIC16F88 00003 ; (old: new xmms Controller for 16F84A(PIC)+MAX232+PAD) 00004 ; 00005 ; by NaO 00006 00007 00008 ; OSC:20MHz(セラロック) 00009 00010 ; Version 0.1 2005/4/14 00011 ; 机上設計 00012 00013 ; Version 0.11 2005/4/16 00014 ; debug 00015 00016 ; Version 0.20 2005/4/16 00017 ; FM/AMも長押し判定追加 00018 00019 ; Version 0.21 2005/4/17 00020 ; ブザー対応 00021 00022 ; Version 0.22 2005/4/18 00023 ; 取りあえず完成版 00024 00025 LIST P=16F88,ST=OFF,R=DEC,F=INHX8M 00026 INCLUDE p16f88.inc 00001 LIST 00002 ; P16F88.INC Standard Header File, Version 1.00 Microchip Technology, Inc. 00400 LIST 00027 00028 ERRORLEVEL -207,-302,-306 00029 00030 ;Program Configuration Register 1 002007 3F42 00031 __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 00032 00033 ;Program Configuration Register 2 002008 3FFC 00034 __CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF 00035 00036 00037 #define BANK0 bcf STATUS,RP0 00038 #define BANK1 bsf STATUS,RP0 00039 00000020 00040 count_100us equ 0x20 ; wait count用 00000021 00041 count_1ms equ 0x21 ; wait count用 00000021 00042 count_10ms equ 0x21 ; wait count用 00000022 00043 count_100ms equ 0x22 ; wait count用 00044 00000023 00045 key_data equ 0x23 ; 入力キーデータバッファ 00000024 00046 long_key_count1 equ 0x24 ; 長押し判定用L 00000025 00047 long_key_count2 equ 0x25 ; 長押し判定用H 00048 00000026 00049 wrk1 equ 0x26 00000027 00050 wrk2 equ 0x27 00000028 00051 wrk3 equ 0x28 gpasm-0.13.0 beta pad_tx_f88.asm4-18-2005 18:09:45 PAGE 2 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00052 00000030 00053 flags equ 30h ; 各種フラグ 00054 #define long_key_flg flags,0 ; 長押し判定用 00055 00000031 00056 TX_BUF equ 0x31 ; 送信バッファ 00057 00000004 00058 pad_led_bit equ 4 00059 #define pad_led PORTB,4 ; LED0: RB4 00000007 00060 pad_bz_bit equ 7 00061 #define pad_bz PORTB,7 ; ブザー: RB7 00062 00063 00064 ; for WAIT VALUE 00000081 00065 RS232_SPBRG equ 129 ; 20MHz:9600bps 000000FF 00066 LONG_KEY_WAIT1 equ 255 00000008 00067 LONG_KEY_WAIT2 equ 8 00068 00069 ; for EEPROM(memo) 2100 00070 org 0x2100 2100 0050 0041 00071 de "PAD-TX(PIC16F88) Version 0.22 2005/04/18 19:30" 2102 0044 002D 2104 0054 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 0032 211C 0032 0020 211E 0032 0030 2120 0030 0035 2122 002F 0030 2124 0034 002F 2126 0031 0038 2128 0020 0031 212A 0039 003A 212C 0033 0030 00072 0000 00073 org 0 0000 2805 00074 goto INIT 00075 0004 00076 org 4 0004 29C6 00077 goto INTR 00078 00079 0005 00080 INIT 0008 00081 org 8 00082 0008 1283 00083 BANK0 gpasm-0.13.0 beta pad_tx_f88.asm4-18-2005 18:09:45 PAGE 3 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00084 0009 3000 00085 movlw B'00000000' ; PortA 5:- 4:low 3:low 2:low 1:- 0:- 000A 0085 00086 movwf PORTA ; 00087 000B 3030 00088 MOVLW B'00110000' ; PortB 7:- 6:- 5(TX):High 4:High 3:low 2(RX):- 1:low 0:low 000C 0086 00089 MOVWF PORTB ; RB4,5をHigh RB0,1,3,6,7をLo 00090 000D 1683 00091 BANK1 00092 000E 3007 00093 movlw B'00000111' ; Comparator Off 000F 009C 00094 movwf CMCON 00095 0010 3000 00096 movlw B'00000000' ; PortAは全部出力(RA1-3のみ使用) 0011 0085 00097 movwf TRISA ; 00098 0012 300F 00099 movlw B'00001111' ; PortB 7:Oit 6:- 5(TX):Out 4:- 3:Out 2(RX):In 1:In 0:In 0013 0086 00100 movwf TRISB ; RB0〜3を入力に 00101 0014 3007 00102 movlw B'00000111' ; PortBは内部プルアップ、PSは1/256 0015 0081 00103 movwf OPTION_REG ; 00104 0016 3000 00105 movlw B'00000000' ; PortAは、全部デジタル 0017 009B 00106 movwf ANSEL 00107 00108 ;; USART設定(BANK1) 0018 1518 00109 bsf TXSTA,BRGH ; 高速モード 0019 1698 00110 bsf TXSTA,TXEN ; 送信OK 001A 3081 00111 movlw RS232_SPBRG ; ボーレート設定 001B 0099 00112 movwf SPBRG 001C 1283 00113 BANK0 001D 1798 00114 bsf RCSTA,SPEN ; USART Enable(RB2=RX,RB5=TX) 00115 00116 ;; 割込み設定 001E 3000 00117 movlw B'00000000' ; まずは全部オフ 001F 008B 00118 movwf INTCON 0020 2821 00119 goto MAIN 00120 00121 00122 ;; メイン 0021 00123 MAIN 0021 2153 00124 call wait_100ms ; 100msec待つ 0022 2136 00125 call pad_led_on ; led on 0023 2192 00126 call beep0 ; ぴっ 0024 2153 00127 call wait_100ms 00128 00129 0025 00130 main_loop 00131 00132 ;; キー入力判定(入力待ち) 0025 00133 check_PWR 0025 0805 00134 movf PORTA,W 0026 00A6 00135 movwf wrk1 0027 10A6 00136 bcf wrk1,1 ; RA1-Low 0028 1126 00137 bcf wrk1,2 ; RA2-Low gpasm-0.13.0 beta pad_tx_f88.asm4-18-2005 18:09:45 PAGE 4 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0029 15A6 00138 bsf wrk1,3 ; RA3-High(P2 ON) 002A 0826 00139 movf wrk1,W 002B 0085 00140 movwf PORTA 00141 002C 0806 00142 movf PORTB,W ; RBを退避 002D 00A7 00143 movwf wrk2 00144 002E 1DA7 00145 btfss wrk2,3 ; RB3をチェック High(Off)だったらスキップ 002F 2873 00146 goto low_PWR ; Low(On)だったら、LOW_PWRへ 00147 00148 0030 00149 check_FM 0030 0805 00150 movf PORTA,W 0031 00A6 00151 movwf wrk1 0032 10A6 00152 bcf wrk1,1 ; RA1-Low 0033 1126 00153 bcf wrk1,2 ; RA2-Low 0034 15A6 00154 bsf wrk1,3 ; RA3-High(P2 ON) 0035 0826 00155 movf wrk1,W 0036 0085 00156 movwf PORTA 00157 0037 0806 00158 movf PORTB,W ; RBを退避 0038 00A7 00159 movwf wrk2 00160 0039 1CA7 00161 btfss wrk2,1 ; RB1をチェック High(Off)だったらスキップ 003A 2895 00162 goto low_FM ; Low(On)だったら、low_FMへ 00163 00164 003B 00165 check_AM 003B 0805 00166 movf PORTA,W 003C 00A6 00167 movwf wrk1 003D 10A6 00168 bcf wrk1,1 ; RA1-Low 003E 1126 00169 bcf wrk1,2 ; RA2-Low 003F 15A6 00170 bsf wrk1,3 ; RA3-High(P2 ON) 0040 0826 00171 movf wrk1,W 0041 0085 00172 movwf PORTA 00173 0042 0806 00174 movf PORTB,W ; RBを退避 0043 00A7 00175 movwf wrk2 00176 0044 1C27 00177 btfss wrk2,0 ; RB0をチェック High(Off)だったらスキップ 0045 28B6 00178 goto low_AM ; Low(On)だったら、low_AMへ 00179 00180 0046 00181 check_NEXT ; "選局(△)" 0046 0805 00182 movf PORTA,W 0047 00A6 00183 movwf wrk1 0048 10A6 00184 bcf wrk1,1 ; RA1-Low 0049 1526 00185 bsf wrk1,2 ; RA2-High(P1 ON) 004A 11A6 00186 bcf wrk1,3 ; RA3-Low 004B 0826 00187 movf wrk1,W 004C 0085 00188 movwf PORTA 00189 004D 0806 00190 movf PORTB,W ; RBを退避 004E 00A7 00191 movwf wrk2 gpasm-0.13.0 beta pad_tx_f88.asm4-18-2005 18:09:45 PAGE 5 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00192 004F 1CA7 00193 btfss wrk2,1 ; RB1をチェック High(Off)だったらスキップ 0050 28D7 00194 goto low_NEXT ; Low(On)だったら、low_NEXTへ 00195 00196 0051 00197 check_PREV ; "選局(▽)" 0051 0805 00198 movf PORTA,W 0052 00A6 00199 movwf wrk1 0053 10A6 00200 bcf wrk1,1 ; RA1-Low 0054 1526 00201 bsf wrk1,2 ; RA2-High(P1 ON) 0055 11A6 00202 bcf wrk1,3 ; RA3-Low 0056 0826 00203 movf wrk1,W 0057 0085 00204 movwf PORTA 00205 0058 0806 00206 movf PORTB,W ; RBを退避 0059 00A7 00207 movwf wrk2 00208 005A 1C27 00209 btfss wrk2,0 ; RB0をチェック High(Off)だったらスキップ 005B 28F8 00210 goto low_PREV ; Low(On)だったら、low_PREVへ 00211 00212 005C 00213 check_VOL_UP ; "音量(→)" 005C 0805 00214 movf PORTA,W 005D 00A6 00215 movwf wrk1 005E 14A6 00216 bsf wrk1,1 ; RA1-Hogh(P0 ON) 005F 1126 00217 bcf wrk1,2 ; RA2-Low 0060 11A6 00218 bcf wrk1,3 ; RA3-Low 0061 0826 00219 movf wrk1,W 0062 0085 00220 movwf PORTA 00221 0063 0806 00222 movf PORTB,W ; RBを退避 0064 00A7 00223 movwf wrk2 00224 0065 1CA7 00225 btfss wrk2,1 ; RB1をチェック High(Off)だったらスキップ 0066 2919 00226 goto low_VOL_UP ; Low(On)だったら、low_VOL_UPへ 00227 00228 0067 00229 check_VOL_DOWN ; "音量(←)" 0067 0805 00230 movf PORTA,W 0068 00A6 00231 movwf wrk1 0069 14A6 00232 bsf wrk1,1 ; RA1-Hogh(P0 ON) 006A 1126 00233 bcf wrk1,2 ; RA2-Low 006B 11A6 00234 bcf wrk1,3 ; RA3-Low 006C 0826 00235 movf wrk1,W 006D 0085 00236 movwf PORTA 00237 006E 0806 00238 movf PORTB,W ; RBを退避 006F 00A7 00239 movwf wrk2 00240 0070 1C27 00241 btfss wrk2,0 ; RB0をチェック High(Off)だったらスキップ 0071 2927 00242 goto low_VOL_DOWN ; Low(On)だったら、low_VOL_DOWNへ 00243 0072 2825 00244 goto main_loop 00245 gpasm-0.13.0 beta pad_tx_f88.asm4-18-2005 18:09:45 PAGE 6 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00246 ;; キーオン時判定 00247 0073 00248 low_PWR ; "電源"ボタン "0" or "P" 出力 0073 214D 00249 call wait_10ms 0074 0806 00250 movf PORTB,W 0075 00A7 00251 movwf wrk2 0076 19A7 00252 btfsc wrk2,3 ; Low(Onのまま)だったらスキップ 0077 2830 00253 goto check_FM ; 次のチェックへ 00254 0078 213C 00255 call pad_led_off ; LEDオフ 0079 21A2 00256 call beep1 00257 007A 00258 low_PWR_1 007A 30FF 00259 movlw LONG_KEY_WAIT1 ; カウント回数セット 007B 00A4 00260 movwf long_key_count1 ; 00261 007C 3008 00262 movlw LONG_KEY_WAIT2 007D 00A5 00263 movwf long_key_count2 00264 007E 1030 00265 bcf long_key_flg ; フラグリセット 00266 007F 00267 low_PWR_2 007F 0806 00268 movf PORTB,W 0080 00A7 00269 movwf wrk2 0081 19A7 00270 btfsc wrk2,3 ; Low(Onのまま)だったらスキップ 0082 2891 00271 goto low_PWR_3 ; キーオフ low_PWR_3へ 00272 0083 2147 00273 call wait_1ms 0084 1830 00274 btfsc long_key_flg ; フラグがセットされていなかったらSkip 0085 287F 00275 goto low_PWR_2 ; キーがはなされるまでループ 00276 0086 0BA4 00277 decfsz long_key_count1,F ; カウント1が0になったらSkip 0087 287F 00278 goto low_PWR_2 ; キーがはなされるまでループ 00279 0088 30FF 00280 movlw LONG_KEY_WAIT1 ; カウント1回数リセット 0089 00A4 00281 movwf long_key_count1 00282 008A 0BA5 00283 decfsz long_key_count2,F ; カウント2が0になったらSkip(出力処理へ) 008B 287F 00284 goto low_PWR_2 ; キーがはなされるまでループ 00285 008C 1C30 00286 btfss long_key_flg ; フラグがsetされていたらスキップ 008D 2162 00287 call send_code_P ; "P"を出力 008E 21BA 00288 call beep3 ; "ぴーー" 00289 008F 1430 00290 bsf long_key_flg ; フラグセット 0090 287F 00291 goto low_PWR_2 ; キーがはなされるまでループ 00292 0091 00293 low_PWR_3 0091 1C30 00294 btfss long_key_flg ; フラグがセットされてたら(長押し)スキップ 0092 2166 00295 call send_code_0 ; "0"を出力 00296 0093 2136 00297 call pad_led_on ; LED ON 0094 2830 00298 goto check_FM ; FMチェックへ 00299 gpasm-0.13.0 beta pad_tx_f88.asm4-18-2005 18:09:45 PAGE 7 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00300 0095 00301 low_FM ; "FM"ボタン "1"出力 0095 214D 00302 call wait_10ms 0096 0806 00303 movf PORTB,W 0097 00A7 00304 movwf wrk2 0098 18A7 00305 btfsc wrk2,1 ; Low(Onのまま)だったらスキップ 0099 283B 00306 goto check_AM ; 次のチェックへ 00307 009A 213C 00308 call pad_led_off ; LEDオフ 009B 21A2 00309 call beep1 00310 009C 216A 00311 call send_code_1 ; "1"を出力 00312 009D 00313 low_FM_1 009D 30FF 00314 movlw LONG_KEY_WAIT1 ; カウント回数セット 009E 00A4 00315 movwf long_key_count1 009F 3008 00316 movlw LONG_KEY_WAIT2 00A0 00A5 00317 movwf long_key_count2 00A1 1030 00318 bcf long_key_flg ; フラグリセット 00319 00A2 00320 low_FM_2 00A2 0806 00321 movf PORTB,W 00A3 00A7 00322 movwf wrk2 00A4 18A7 00323 btfsc wrk2,1 ; Low(Onのまま)だったらスキップ 00A5 28B4 00324 goto low_FM_3 ; キーがはなされるまでループ 00325 00A6 2147 00326 call wait_1ms 00A7 1830 00327 btfsc long_key_flg ; フラグがセットされていなかったらSkip 00A8 28A2 00328 goto low_FM_2 ; キーがはなされるまでループ 00329 00A9 0BA4 00330 decfsz long_key_count1,F ; カウント1が0になったらSkip 00AA 28A2 00331 goto low_FM_2 ; キーがはなされるまでループ 00332 00AB 30FF 00333 movlw LONG_KEY_WAIT1 ; カウント1リセット 00AC 00A4 00334 movwf long_key_count1 00335 00AD 0BA5 00336 decfsz long_key_count2,F ; カウント2が0になったらSkip(出力) 00AE 28A2 00337 goto low_FM_2 ; キーがはなされるまでループ 00338 00AF 1C30 00339 btfss long_key_flg ; フラグがsetされていたらskip 00B0 2182 00340 call send_code_F ; 'F'を出力 00B1 21AE 00341 call beep2 ; "ぴー" 00342 00B2 1430 00343 bsf long_key_flg ; フラグセット 00B3 28A2 00344 goto low_FM_2 ; キーがはなされるまでループ 00345 00B4 00346 low_FM_3 00B4 2136 00347 call pad_led_on 00B5 283B 00348 goto check_AM ; AMチェックへ 00349 00350 00B6 00351 low_AM ; "AM"ボタン "2"出力 00B6 214D 00352 call wait_10ms 00B7 0806 00353 movf PORTB,W gpasm-0.13.0 beta pad_tx_f88.asm4-18-2005 18:09:45 PAGE 8 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00B8 00A7 00354 movwf wrk2 00B9 1827 00355 btfsc wrk2,0 ; Low(Onのまま)だったらスキップ 00BA 2846 00356 goto check_NEXT ; 次のチェックへ 00357 00BB 213C 00358 call pad_led_off ; LEDオフ 00BC 21A2 00359 call beep1 00360 00BD 216E 00361 call send_code_2 ; "2"を出力 00362 00BE 00363 low_AM_1 00BE 30FF 00364 movlw LONG_KEY_WAIT1 ; カウント回数セット 00BF 00A4 00365 movwf long_key_count1 00C0 3008 00366 movlw LONG_KEY_WAIT2 00C1 00A5 00367 movwf long_key_count2 00C2 1030 00368 bcf long_key_flg ; フラグリセット 00369 00C3 00370 low_AM_2 00C3 0806 00371 movf PORTB,W 00C4 00A7 00372 movwf wrk2 00C5 1827 00373 btfsc wrk2,0 ; High(Onのまま)だったらスキップ 00C6 28D5 00374 goto low_AM_3 ; キーがはなされるまでループ 00375 00C7 2147 00376 call wait_1ms 00C8 1830 00377 btfsc long_key_flg ; フラグがセットされていなかったらSkip 00C9 28C3 00378 goto low_AM_2 ; キーがはなされるまでループ 00379 00CA 0BA4 00380 decfsz long_key_count1,F ; カウント1が0になったらSkip 00CB 28C3 00381 goto low_AM_2 ; キーがはなされるまでループ 00382 00CC 30FF 00383 movlw LONG_KEY_WAIT1 ; カウント1リセット 00CD 00A4 00384 movwf long_key_count1 00385 00CE 0BA5 00386 decfsz long_key_count2,F ; カウント2が0になったらSkip(出力) 00CF 28C3 00387 goto low_AM_2 ; キーがはなされるまでループ 00388 00D0 1C30 00389 btfss long_key_flg ; フラグがsetされていたらskip 00D1 2186 00390 call send_code_A ; 'A'を出力 00D2 21AE 00391 call beep2 ; "ぴー" 00392 00D3 1430 00393 bsf long_key_flg ; フラグセット 00D4 28C3 00394 goto low_AM_2 ; キーがはなされるまでループ 00395 00D5 00396 low_AM_3 00D5 2136 00397 call pad_led_on 00D6 2846 00398 goto check_NEXT ; NEXTチェックへ 00399 00400 00D7 00401 low_NEXT ; "選局(△)"ボタン "3"出力 00D7 214D 00402 call wait_10ms 00D8 0806 00403 movf PORTB,W 00D9 00A7 00404 movwf wrk2 00DA 18A7 00405 btfsc wrk2,1 ; Low(Onのまま)だったらスキップ 00DB 2851 00406 goto check_PREV ; 次のチェックへ 00407 gpasm-0.13.0 beta pad_tx_f88.asm4-18-2005 18:09:45 PAGE 9 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00DC 213C 00408 call pad_led_off ; LEDオフ 00DD 21A2 00409 call beep1 00410 00DE 2172 00411 call send_code_3 ; "3"を出力 00412 00DF 00413 low_NEXT_1 00DF 30FF 00414 movlw LONG_KEY_WAIT1 ; カウント回数セット 00E0 00A4 00415 movwf long_key_count1 00E1 3008 00416 movlw LONG_KEY_WAIT2 00E2 00A5 00417 movwf long_key_count2 00E3 1030 00418 bcf long_key_flg ; フラグリセット 00419 00E4 00420 low_NEXT_2 00E4 0806 00421 movf PORTB,W 00E5 00A7 00422 movwf wrk2 00E6 18A7 00423 btfsc wrk2,1 ; Low(Onのまま)だったらスキップ 00E7 28F6 00424 goto low_NEXT_3 ; キーがはなされるまでループ 00425 00E8 2147 00426 call wait_1ms 00E9 1830 00427 btfsc long_key_flg ; フラグがセットされていなかったらSkip 00EA 28E4 00428 goto low_NEXT_2 ; キーがはなされるまでループ 00429 00EB 0BA4 00430 decfsz long_key_count1,F ; カウント1が0になったらSkip 00EC 28E4 00431 goto low_NEXT_2 ; キーがはなされるまでループ 00432 00ED 30FF 00433 movlw LONG_KEY_WAIT1 ; カウント1リセット 00EE 00A4 00434 movwf long_key_count1 00435 00EF 0BA5 00436 decfsz long_key_count2,F ; カウント2が0になったらSkip(出力) 00F0 28E4 00437 goto low_NEXT_2 ; キーがはなされるまでループ 00438 00F1 1C30 00439 btfss long_key_flg ; フラグがsetされていたらskip 00F2 218A 00440 call send_code_N ; 'N'を出力 00F3 21AE 00441 call beep2 ; "ぴー" 00442 00F4 1430 00443 bsf long_key_flg ; フラグセット 00F5 28E4 00444 goto low_NEXT_2 ; キーがはなされるまでループ 00445 00446 00F6 00447 low_NEXT_3 00F6 2136 00448 call pad_led_on 00F7 2851 00449 goto check_PREV ; PREVチェックへ 00450 00451 00F8 00452 low_PREV ; "選局(▽)"ボタン "4"出力 00F8 214D 00453 call wait_10ms 00F9 0806 00454 movf PORTB,W 00FA 00A7 00455 movwf wrk2 00FB 1827 00456 btfsc wrk2,0 ; Low(Onのまま)だったらスキップ 00FC 285C 00457 goto check_VOL_UP ; 次のチェックへ 00458 00FD 213C 00459 call pad_led_off ; LEDオフ 00FE 21A2 00460 call beep1 00461 gpasm-0.13.0 beta pad_tx_f88.asm4-18-2005 18:09:45 PAGE 10 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00FF 2176 00462 call send_code_4 ; "4"を出力 00463 0100 00464 low_PREV_1 0100 30FF 00465 movlw LONG_KEY_WAIT1 ; カウント回数セット 0101 00A4 00466 movwf long_key_count1 0102 3008 00467 movlw LONG_KEY_WAIT2 0103 00A5 00468 movwf long_key_count2 0104 1030 00469 bcf long_key_flg ; フラグリセット 00470 0105 00471 low_PREV_2 0105 0806 00472 movf PORTB,W 0106 00A7 00473 movwf wrk2 0107 1827 00474 btfsc wrk2,0 ; High(キーオフ)だったらスキップ 0108 2917 00475 goto low_PREV_3 ; キーがはなされるまでループ 00476 0109 2147 00477 call wait_1ms 010A 1830 00478 btfsc long_key_flg ; フラグがセットされていなかったらSkip 010B 2905 00479 goto low_PREV_2 ; キーがはなされるまでループ 00480 010C 0BA4 00481 decfsz long_key_count1,F ; カウント1が0になったらSkip 010D 2905 00482 goto low_PREV_2 ; キーがはなされるまでループ 00483 010E 30FF 00484 movlw LONG_KEY_WAIT1 ; カウント1リセット 010F 00A4 00485 movwf long_key_count1 00486 0110 0BA5 00487 decfsz long_key_count2,F ; カウント2が0になったらSkip(出力) 0111 2905 00488 goto low_PREV_2 ; キーがはなされるまでループ 00489 0112 1C30 00490 btfss long_key_flg ; フラグがsetされていたらskip 0113 218E 00491 call send_code_R ; 'R'を出力 0114 21AE 00492 call beep2 ; "ぴー" 00493 0115 1430 00494 bsf long_key_flg ; フラグセット 0116 2905 00495 goto low_PREV_2 ; キーがはなされるまでループ 00496 0117 00497 low_PREV_3 0117 2136 00498 call pad_led_on 0118 285C 00499 goto check_VOL_UP ; PREVチェックへ 00500 00501 0119 00502 low_VOL_UP ; "音量(→)" "5"出力 0119 2147 00503 call wait_1ms 011A 0806 00504 movf PORTB,W 011B 00A7 00505 movwf wrk2 011C 18A7 00506 btfsc wrk2,1 ; Low(Onのまま)だったらスキップ 011D 2867 00507 goto check_VOL_DOWN ; 次のチェックへ 00508 011E 213C 00509 call pad_led_off ; LEDオフ 011F 21A2 00510 call beep1 00511 0120 217A 00512 call send_code_5 ; "5"を出力 00513 00514 0121 00515 low_VOL_UP_2 gpasm-0.13.0 beta pad_tx_f88.asm4-18-2005 18:09:45 PAGE 11 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0121 0806 00516 movf PORTB,W 0122 00A7 00517 movwf wrk2 0123 1CA7 00518 btfss wrk2,1 ; High(キーオフ)だったらスキップ 0124 2921 00519 goto low_VOL_UP_2 ; キーがはなされるまでループ 00520 0125 2136 00521 call pad_led_on 0126 2867 00522 goto check_VOL_DOWN ; PREVチェックへ 00523 00524 0127 00525 low_VOL_DOWN ; "音量(←)" "6"出力 0127 2147 00526 call wait_1ms 0128 0806 00527 movf PORTB,W 0129 00A7 00528 movwf wrk2 012A 1827 00529 btfsc wrk2,0 ; Low(Onのまま)だったらスキップ 012B 2825 00530 goto check_PWR ; 次のチェックへ 00531 012C 213C 00532 call pad_led_off ; LEDオフ 012D 21A2 00533 call beep1 00534 012E 217E 00535 call send_code_6 ; "6"を出力 00536 00537 012F 00538 low_VOL_DOWN_2 012F 0806 00539 movf PORTB,W 0130 00A7 00540 movwf wrk2 0131 1C27 00541 btfss wrk2,0 ; High(キーオフ)だったらスキップ 0132 292F 00542 goto low_VOL_DOWN_2 ; キーがはなされるまでループ 00543 0133 2136 00544 call pad_led_on 0134 2825 00545 goto check_PWR ; PWRチェックへ 00546 0135 2825 00547 goto main_loop 00548 00549 00550 ;; LED 0136 00551 pad_led_on 0136 0806 00552 movf PORTB,W 0137 00A6 00553 movwf wrk1 0138 1626 00554 bsf wrk1,pad_led_bit 0139 0826 00555 movf wrk1,W 013A 0086 00556 movwf PORTB 013B 0008 00557 return 00558 013C 00559 pad_led_off 013C 0806 00560 movf PORTB,W 013D 00A6 00561 movwf wrk1 013E 1226 00562 bcf wrk1,pad_led_bit 013F 0826 00563 movf wrk1,W 0140 0086 00564 movwf PORTB 0141 0008 00565 return 00566 00567 00568 ;; 100usec Wait 0142 00569 wait_100us gpasm-0.13.0 beta pad_tx_f88.asm4-18-2005 18:09:45 PAGE 12 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0142 30A7 00570 movlw 167 0143 00A0 00571 movwf count_100us 00572 0144 00573 loop_wait_100us 0144 0BA0 00574 decfsz count_100us,F 0145 2944 00575 goto loop_wait_100us 0146 0008 00576 return 00577 00578 ;; 1msec Wait 0147 00579 wait_1ms 0147 300A 00580 movlw 10 0148 00A1 00581 movwf count_1ms 00582 0149 00583 loop_wait_1ms 0149 2142 00584 call wait_100us 014A 0BA1 00585 decfsz count_1ms,F 014B 2949 00586 goto loop_wait_1ms 014C 0008 00587 return 00588 00589 ;; 10msec Wait 014D 00590 wait_10ms 014D 3064 00591 movlw 100 014E 00A1 00592 movwf count_10ms 00593 014F 00594 loop_wait_10ms 014F 2142 00595 call wait_100us 0150 0BA1 00596 decfsz count_10ms,F 0151 294F 00597 goto loop_wait_10ms 0152 0008 00598 return 00599 00600 00601 ;; 100msec Wait 0153 00602 wait_100ms 0153 300A 00603 movlw 10 0154 00A2 00604 movwf count_100ms 00605 0155 00606 loop_wait_100ms 0155 214D 00607 call wait_10ms 0156 0BA2 00608 decfsz count_100ms,F 0157 2955 00609 goto loop_wait_100ms 0158 0008 00610 return 00611 00612 ;; 500msec Wait 0159 00613 wait_500ms 0159 3032 00614 movlw 50 015A 00A2 00615 movwf count_100ms 00616 015B 00617 loop_wait_500ms 015B 214D 00618 call wait_10ms 015C 0BA2 00619 decfsz count_100ms,F 015D 295B 00620 goto loop_wait_500ms 015E 0008 00621 return 00622 00623 ;; output gpasm-0.13.0 beta pad_tx_f88.asm4-18-2005 18:09:45 PAGE 13 LOC OBJECT CODE LINE SOURCE TEXT VALUE 015F 00624 output_data 015F 0831 00625 movf TX_BUF,W 0160 0099 00626 movwf TXREG 0161 0008 00627 return 00628 00629 00630 ;; outputs 0162 00631 send_code_P 0162 3050 00632 movlw 'P' 0163 00B1 00633 movwf TX_BUF 0164 215F 00634 call output_data 0165 0008 00635 return 00636 0166 00637 send_code_0 0166 3030 00638 movlw '0' 0167 00B1 00639 movwf TX_BUF 0168 215F 00640 call output_data 0169 0008 00641 return 00642 016A 00643 send_code_1 016A 3031 00644 movlw '1' 016B 00B1 00645 movwf TX_BUF 016C 215F 00646 call output_data 016D 0008 00647 return 00648 016E 00649 send_code_2 016E 3032 00650 movlw '2' 016F 00B1 00651 movwf TX_BUF 0170 215F 00652 call output_data 0171 0008 00653 return 00654 0172 00655 send_code_3 0172 3033 00656 movlw '3' 0173 00B1 00657 movwf TX_BUF 0174 215F 00658 call output_data 0175 0008 00659 return 00660 0176 00661 send_code_4 0176 3034 00662 movlw '4' 0177 00B1 00663 movwf TX_BUF 0178 215F 00664 call output_data 0179 0008 00665 return 00666 017A 00667 send_code_5 017A 3035 00668 movlw '5' 017B 00B1 00669 movwf TX_BUF 017C 215F 00670 call output_data 017D 0008 00671 return 00672 017E 00673 send_code_6 017E 3036 00674 movlw '6' 017F 00B1 00675 movwf TX_BUF 0180 215F 00676 call output_data 0181 0008 00677 return gpasm-0.13.0 beta pad_tx_f88.asm4-18-2005 18:09:45 PAGE 14 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00678 0182 00679 send_code_F 0182 3046 00680 movlw 'F' 0183 00B1 00681 movwf TX_BUF 0184 215F 00682 call output_data 0185 0008 00683 return 00684 0186 00685 send_code_A 0186 3041 00686 movlw 'A' 0187 00B1 00687 movwf TX_BUF 0188 215F 00688 call output_data 0189 0008 00689 return 00690 018A 00691 send_code_N 018A 304E 00692 movlw 'N' 018B 00B1 00693 movwf TX_BUF 018C 215F 00694 call output_data 018D 0008 00695 return 00696 018E 00697 send_code_R 018E 3052 00698 movlw 'R' 018F 00B1 00699 movwf TX_BUF 0190 215F 00700 call output_data 0191 0008 00701 return 00702 00703 ;; ブザー 0192 00704 beep0 0192 0806 00705 movf PORTB,W 0193 00A6 00706 movwf wrk1 0194 17A6 00707 bsf wrk1,pad_bz_bit 0195 0826 00708 movf wrk1,W 0196 0086 00709 movwf PORTB 00710 0197 2147 00711 call wait_1ms 0198 2147 00712 call wait_1ms 0199 2147 00713 call wait_1ms 019A 2147 00714 call wait_1ms 019B 2147 00715 call wait_1ms 00716 019C 0806 00717 movf PORTB,W 019D 00A6 00718 movwf wrk1 019E 13A6 00719 bcf wrk1,pad_bz_bit 019F 0826 00720 movf wrk1,W 01A0 0086 00721 movwf PORTB 00722 01A1 0008 00723 return 00724 01A2 00725 beep1 01A2 0806 00726 movf PORTB,W 01A3 00A6 00727 movwf wrk1 01A4 17A6 00728 bsf wrk1,pad_bz_bit 01A5 0826 00729 movf wrk1,W 01A6 0086 00730 movwf PORTB 00731 gpasm-0.13.0 beta pad_tx_f88.asm4-18-2005 18:09:45 PAGE 15 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01A7 214D 00732 call wait_10ms 00733 01A8 0806 00734 movf PORTB,W 01A9 00A6 00735 movwf wrk1 01AA 13A6 00736 bcf wrk1,pad_bz_bit 01AB 0826 00737 movf wrk1,W 01AC 0086 00738 movwf PORTB 00739 01AD 0008 00740 return 00741 01AE 00742 beep2 01AE 0806 00743 movf PORTB,W 01AF 00A6 00744 movwf wrk1 01B0 17A6 00745 bsf wrk1,pad_bz_bit 01B1 0826 00746 movf wrk1,W 01B2 0086 00747 movwf PORTB 00748 01B3 2153 00749 call wait_100ms 00750 01B4 0806 00751 movf PORTB,W 01B5 00A6 00752 movwf wrk1 01B6 13A6 00753 bcf wrk1,pad_bz_bit 01B7 0826 00754 movf wrk1,W 01B8 0086 00755 movwf PORTB 00756 01B9 0008 00757 return 00758 01BA 00759 beep3 01BA 0806 00760 movf PORTB,W 01BB 00A6 00761 movwf wrk1 01BC 17A6 00762 bsf wrk1,pad_bz_bit 01BD 0826 00763 movf wrk1,W 01BE 0086 00764 movwf PORTB 00765 01BF 2159 00766 call wait_500ms 00767 01C0 0806 00768 movf PORTB,W 01C1 00A6 00769 movwf wrk1 01C2 13A6 00770 bcf wrk1,pad_bz_bit 01C3 0826 00771 movf wrk1,W 01C4 0086 00772 movwf PORTB 00773 01C5 0008 00774 return 00775 00776 00777 01C6 00778 INTR 00779 00780 01C6 00781 INTR 01C6 0000 00782 nop 01C7 0000 00783 nop 01C8 0000 00784 nop 01C9 0009 00785 RETFIE gpasm-0.13.0 beta pad_tx_f88.asm4-18-2005 18:09:45 PAGE 16 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00786 00787 MEMORY USAGE MAP ('X' = Used, '-' = Unused) 00000000 : X---X---XXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 00000040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 00000080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 000000c0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 00000100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 00000140 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 00000180 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 000001c0 : XXXXXXXXXX------ ---------------- ---------------- ---------------- 00002000 : -------XX------- ---------------- ---------------- ---------------- 00002100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXX-- ---------------- All other memory blocks unused. Program Memory Words Used: 500 Errors : 0 Warnings : 0 reported, 0 suppressed Messages : 0 reported, 8 suppressed