;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; #define _debug ;サウンド・テストルーチンを使用時 #ifdef _debug bcf INTCON,GIE ;全割り込み禁止 movlw d'250' call wait_xxms movlw d'250' call wait_xxms ; サウンド・テストルーチン movlw d'100' ;ループカウンタ(とりあえずの回数) movwf lpcnt bcf STATUS,RP1 ; bsf STATUS,RP0 ;バンク1 clrf EEADR ;書き込み先頭アドレスを設定 bcf STATUS,RP0 ;バンク0 ; movlw low d'1000' ;開始周波数(Hz) movlw low d'420' ;開始周波数(Hz) movwf cnt_low ; movlw high d'1000' movlw high d'420' 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,_BZ ;音出しの直前に出力ポートにする(雑音対策) bcf STATUS,RP0 ;バンク 0 call Sound_Play ;サウンドを鳴らす bsf STATUS,RP0 ;バンク 1 bsf TRISA,_BZ ;再び入力ポートにしておく(雑音対策) bcf STATUS,RP0 ;バンク 0 movlw d'100' call wait_xxms ; ; EEPROM へ 出力周波数の書き込み movlw d'02' movwf lpcnt2 movf cnt_high,W goto $+2 xx2 movf cnt_low,W bsf STATUS,RP0 ;バンク1 movwf EEDATA ;書き込みデータを設定 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 incf EEADR,F bcf STATUS,RP0 ;バンク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'0190' = d'400' Hz までOK ; 00 03 E8 03 DE 03 D4 03 CA ; 08 03 C0 03 B6 03 AC 03 A2 ; 10 03 98 03 8E 03 84 03 7A ; 18 03 70 03 66 03 5C 03 52 ; 20 03 48 03 3E 03 34 03 2A ; 28 03 20 03 16 03 0C 03 02 ; 30 02 F8 02 EE 02 E4 02 DA ; 38 02 D0 02 C6 02 BC 02 B2 ; 40 02 A8 02 9E 02 94 02 8A ; 48 02 80 02 76 02 6C 02 62 ; 50 02 58 02 4E 02 44 02 3A ; 58 02 30 02 26 02 1C 02 12 ; 60 02 08 01 FE 01 F4 01 EA ; 68 01 E0 01 D6 01 CC 01 C2 ; 70 01 B8 01 AE 01 A4 01 9A ; 78 01 90 FF FF FF FF FF FF ; ( テスト結果-2 (-1の時) ) ..... h'0187' = d'391' Hz までOK ; 00 01 A4 01 A3 01 A2 01 A1 ; 08 01 A0 01 9F 01 9E 01 9D ; 10 01 9C 01 9B 01 9A 01 99 ; 18 01 98 01 97 01 96 01 95 ; 20 01 94 01 93 01 92 01 91 ; 28 01 90 01 8F 01 8E 01 8D ; 30 01 8C 01 8B 01 8A 01 89 ; 38 01 88 01 87 FF FF FF FF ;f_mi equ d'330' ;ミ 329.63Hz ;f_fa equ d'349' ;ファ 349.23Hz ;f_fa_ equ d'370' ;ファ# 369.99Hz ;f_so equ d'392' ;ソ 392.00Hz <<<<< ;f_so_ equ d'415' ;ソ# 415.30Hz ;f_ra equ d'440' ;ラ 440.00Hz ;f_ra_ equ d'466' ;ラ# 466.16Hz #endif ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;