;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; #define _debug ;サウンド・テストルーチンを使用時 #ifdef _debug bcf INTCON,GIE ;全割り込み禁止 movlw d'250' call wait_1xms movlw d'250' call wait_1xms ; サウンド・テストルーチン movlw d'100' ;ループカウンタ(とりあえずの回数) movwf lpcnt bcf STATUS,RP0 ; bsf STATUS,RP1 ;バンク2 clrf EEADR ;書き込み先頭アドレスを設定 bcf STATUS,RP1 ;バンク0 ; movlw low d'1200' ;開始周波数(Hz) movlw low d'650' ;開始周波数(Hz) movwf cnt_low ; movlw high d'1200' movlw high d'650' movwf cnt_high xx1 movf cnt_low,W ;出力周波数(Hz) movwf freq_lo movf cnt_high,W movwf freq_hi movlw low d'1000' ;出力時間(ms) movwf time_lo movlw high d'1000' movwf time_hi bsf STATUS,RP0 ;バンク 1 bcf TRISA,speaker ;音出しの直前に出力ポートにする(雑音対策) bcf STATUS,RP0 ;バンク 0 call Sound_Play ;サウンドを鳴らす bsf STATUS,RP0 ;バンク 1 bsf TRISA,speaker ;再び入力ポートにしておく(雑音対策) bcf STATUS,RP0 ;バンク 0 movlw d'100' call wait_1xms ; ; EEPROM へ 出力周波数の書き込み movlw d'02' movwf lpcnt2 movf cnt_high,W goto $+2 xx2 movf cnt_low,W bsf STATUS,RP1 ;バンク2 movwf EEDATA ;書き込みデータを設定 bsf STATUS,RP0 ;バンク3 bcf EECON1,EEPGD ;データEEPROMメモリ bsf EECON1,WREN ;書き込みイネーブル = ON movlw h'55' movwf EECON2 ;h'55' を EECON2 に書き込む movlw h'aa' movwf EECON2 ;h'aa' を EECON2 に書き込む bsf EECON1,WR ;書き込み開始 btfsc EECON1,WR ;書き込み 終了か? goto $-1 ;No bcf EECON1,WREN ;書き込みイネーブル = OFF bcf STATUS,RP0 ;バンク2 incf EEADR,F bcf STATUS,RP1 ;バンク0 decfsz lpcnt2,F ;ループカウンタ - 1 = 0 か? goto xx2 ;No. ; movlw d'10' ;更新周波数 = -10Hz movlw d'01' ;更新周波数 = -1Hz subwf cnt_low,F btfss STATUS,C ;cnt_low >= 0 か? decf cnt_high,F ;No. decfsz lpcnt,F ;ループカウンタ - 1 = 0 か? goto xx1 ;No. ; ( テスト結果-1 (-10の時) ) ..... h'0276' = d'630' Hz までOK ; 00 04 B0 04 A6 04 9C 04 92 ; 08 04 88 04 7E 04 74 04 6A ; 10 04 60 04 56 04 4C 04 42 ; 18 04 38 04 2E 04 24 04 1A ; 20 04 10 04 06 03 FC 03 F2 ; 28 03 E8 03 DE 03 D4 03 CA ; 30 03 C0 03 B6 03 AC 03 A2 ; 38 03 98 03 8E 03 84 03 7A ; 40 03 70 03 66 03 5C 03 52 ; 48 03 48 03 3E 03 34 03 2A ; 50 03 20 03 16 03 0C 03 02 ; 58 02 F8 02 EE 02 E4 02 DA ; 60 02 D0 02 C6 02 BC 02 B2 ; 68 02 A8 02 9E 02 94 02 8A ; 70 02 80 02 76 FF FF FF FF ; ( テスト結果-2 (-1の時) ) ..... h'0272' = d'626' Hz までOK ; 00 02 8A 02 89 02 88 02 87 ; 08 02 86 02 85 02 84 02 83 ; 10 02 82 02 81 02 80 02 7F ; 18 02 7E 02 7D 02 7C 02 7B ; 20 02 7A 02 79 02 78 02 77 ; 28 02 76 02 75 02 74 02 73 ; 30 02 72 FF FF FF FF FF FF ;f_doh equ d'523' ;ド 523.26Hz ;f_doh_ equ d'554' ;ド# 554.36Hz ;f_reh equ d'587' ;レ 587.32Hz ;f_reh_ equ d'622' ;レ# 622.26Hz ;f_mih equ d'659' ;ミ 659.26Hz <<<<< ;f_fah equ d'698' ;ファ 698.46Hz ;f_fah_ equ d'740' ;ファ# 739.98Hz ;f_soh equ d'784' ;ソ 784.00Hz #endif ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;