Created
February 6, 2018 01:34
-
-
Save xiupos/c1dec1d97346c81cb67e6b92d18dd158 to your computer and use it in GitHub Desktop.
16F84A+YMZ294(ドラム風)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; ドラム風 | |
; ha2zakura | |
list p=16F84A ; 使用するPICの種類の定義 | |
#include <p16F84A.inc> ; 設定ファイルの指定 | |
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC | |
; _CP_OFF プログラムコードプロテクト無効 | |
; _WDT_OFF ウォッチドドック・タイマ無効 | |
; _PWRTE_ON パワーアップタイム有効 | |
; _HS_OSC 外部クロック(4MHz-20MHz) | |
;***** 定数の定義 ** | |
TIM1 EQU 0x0C ; タイマー用 | |
TIM2 EQU 0x0D ; タイマー用 | |
ADR EQU 0x0E ; 書き込みアドレス | |
DAT EQU 0x0F ; 書き込みデータ | |
NP EQU 0x10 | |
;********************************************************************** | |
ORG 0x000 ; リセット | |
BSF STATUS, RP0 | |
CLRF TRISA ; 0 : 出力, 1 : 入力 | |
CLRF TRISB ; bit0 -> RA0(RB0) | |
BCF STATUS, RP0 | |
call TIMTIM ; YMZ294が起動するまで待つ | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
goto MAIN ; MAINへ移動 | |
;********************************************************************** | |
; メイン | |
MAIN call MIXVOL ; 音量の設定 | |
LOOP movlw B'00011111' | |
movwf NP | |
call NOISE | |
call TIMTIM | |
call Q | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
movlw B'00000001' | |
movwf NP | |
call NOISE | |
call TIMTIM | |
call Q | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
movlw B'00011111' | |
movwf NP | |
call NOISE | |
call TIMTIM | |
call Q | |
call TIMTIM | |
movlw B'00011111' | |
movwf NP | |
call NOISE | |
call TIMTIM | |
call Q | |
call TIMTIM | |
movlw B'00000001' | |
movwf NP | |
call NOISE | |
call TIMTIM | |
call Q | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
goto LOOP | |
MIXVOL movlw B'00000111' ; $07(ミキサーの設定) | |
movwf ADR | |
movlw B'00110111' ; C B A C B A | |
movwf DAT ; ノイズ トーン | |
call SUB1 ; 0 = 出力 | |
return | |
NOISE movlw B'00000110' ; $06(ミキサーの設定) | |
movwf ADR | |
movf NP, w ; 下位5bitが周波数 | |
movwf DAT | |
call SUB1 | |
movlw B'00001000' ; $08(チャンネルAの音量) | |
movwf ADR | |
movlw B'00001111' ; 下位4bitが音量 | |
movwf DAT | |
call SUB1 | |
return | |
Q movlw B'00001000' ; $08(チャンネルAの音量) | |
movwf ADR | |
movlw B'00000000' ; 下位4bitが音量 | |
movwf DAT | |
call SUB1 | |
return | |
; 書き込み ; WR CS AC Data | |
SUB1 movlw B'00001000' ; 0 0 0 | |
movwf PORTA | |
movf ADR, W ; 0 0 0 ADR | |
movwf PORTB | |
movlw B'00001011' ; 1 1 0 | |
movwf PORTA ; ADRを書き込む | |
movlw B'00001100' ; 0 0 1 | |
movwf PORTA | |
movf DAT, W ; 0 0 1 DAT | |
movwf PORTB | |
movlw B'00001111' ; 1 1 1 | |
movwf PORTA ; DATを書き込む | |
return | |
; タイマー | |
TIM movlw 0x0FF | |
movwf TIM1 | |
TIMLP nop | |
decfsz TIM1, F | |
goto TIMLP | |
return | |
TIMTIM movlw 0x066 | |
movwf TIM2 | |
TIMLP2 call TIM | |
decfsz TIM2, F | |
goto TIMLP2 | |
return | |
END | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment