Last active
February 6, 2018 01:31
-
-
Save xiupos/a4c3d3396ceaa2aeb02f63ac9f5ae67f to your computer and use it in GitHub Desktop.
16F84A+YMZ294(喜びの歌)
This file contains 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 ; 書き込みデータ | |
TP4 EQU 0x10 | |
TP8 EQU 0x11 | |
N EQU 0x00 | |
B3 EQU B'0001' | |
b3 EQU B'11111001' | |
C3 EQU B'0001' | |
c3 EQU B'11011001' | |
D3 EQU B'0001' | |
d3 EQU B'10100101' | |
E3 EQU B'0001' | |
e3 EQU B'01111011' | |
F3 EQU B'0001' | |
f3 EQU B'01100011' | |
G3 EQU B'0001' | |
g3 EQU B'00111100' | |
A4 EQU B'0001' | |
a4 EQU B'00011100' | |
A4s EQU B'0001' | |
a4s EQU B'00001100' | |
B4 EQU B'0000' | |
b4 EQU B'11111101' | |
C4 EQU B'0000' | |
c4 EQU B'11101101' | |
D4 EQU B'0000' | |
d4 EQU B'11010010' | |
E4 EQU B'0000' | |
e4 EQU B'10111101' | |
F4 EQU B'0000' | |
f4 EQU B'10110010' | |
G4 EQU B'0000' | |
g4 EQU B'10011110' | |
A5 EQU B'0000' | |
a5 EQU B'10001110' | |
B5 EQU B'0000' | |
b5 EQU B'01111110' | |
C5 EQU B'0000' | |
c5 EQU B'01110110' | |
D5 EQU B'0000' | |
d5 EQU B'01101001' | |
E5 EQU B'0000' | |
e5 EQU B'01011111' | |
F5 EQU B'0000' | |
f5 EQU B'01011001' | |
G5 EQU B'0000' | |
g5 EQU B'01001111' | |
A6 EQU B'0000' | |
a6 EQU B'01000111' | |
B6 EQU B'0000' | |
b6 EQU B'00111111' | |
C6 EQU B'0000' | |
c6 EQU B'00111011' | |
;********************************************************************** | |
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 ; 音量の設定 | |
movlw E4 | |
movwf TP4 | |
movlw e4 | |
movwf TP8 | |
call TONEA | |
movlw C4 | |
movwf TP4 | |
movlw c4 | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call QA | |
call QB | |
call TIMTIM | |
movlw E4 | |
movwf TP4 | |
movlw e4 | |
movwf TP8 | |
call TONEA | |
movlw C4 | |
movwf TP4 | |
movlw c4 | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call QA | |
call QB | |
call TIMTIM | |
movlw F4 | |
movwf TP4 | |
movlw f4 | |
movwf TP8 | |
call TONEA | |
movlw D4 | |
movwf TP4 | |
movlw d4 | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call QA | |
call QB | |
call TIMTIM | |
movlw G4 | |
movwf TP4 | |
movlw g4 | |
movwf TP8 | |
call TONEA | |
movlw E4 | |
movwf TP4 | |
movlw e4 | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call QA | |
call QB | |
call TIMTIM | |
; -- | |
movlw G4 | |
movwf TP4 | |
movlw g4 | |
movwf TP8 | |
call TONEA | |
movlw E4 | |
movwf TP4 | |
movlw e4 | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call QA | |
call QB | |
call TIMTIM | |
movlw F4 | |
movwf TP4 | |
movlw f4 | |
movwf TP8 | |
call TONEA | |
movlw D4 | |
movwf TP4 | |
movlw d4 | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call QA | |
call QB | |
call TIMTIM | |
movlw E4 | |
movwf TP4 | |
movlw e4 | |
movwf TP8 | |
call TONEA | |
movlw C4 | |
movwf TP4 | |
movlw c4 | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call QA | |
call QB | |
call TIMTIM | |
movlw D4 | |
movwf TP4 | |
movlw d4 | |
movwf TP8 | |
call TONEA | |
movlw B4 | |
movwf TP4 | |
movlw b4 | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call QA | |
call QB | |
call TIMTIM | |
; -- | |
movlw C4 | |
movwf TP4 | |
movlw c4 | |
movwf TP8 | |
call TONEA | |
movlw A4 | |
movwf TP4 | |
movlw a4 | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call QA | |
call QB | |
call TIMTIM | |
movlw C4 | |
movwf TP4 | |
movlw c4 | |
movwf TP8 | |
call TONEA | |
movlw A4 | |
movwf TP4 | |
movlw a4 | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call QA | |
call QB | |
call TIMTIM | |
movlw D4 | |
movwf TP4 | |
movlw d4 | |
movwf TP8 | |
call TONEA | |
movlw B4 | |
movwf TP4 | |
movlw b4 | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call QA | |
call QB | |
call TIMTIM | |
movlw E4 | |
movwf TP4 | |
movlw e4 | |
movwf TP8 | |
call TONEA | |
movlw C4 | |
movwf TP4 | |
movlw c4 | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call QA | |
call QB | |
call TIMTIM | |
; -- | |
movlw E4 | |
movwf TP4 | |
movlw e4 | |
movwf TP8 | |
call TONEA | |
movlw C4 | |
movwf TP4 | |
movlw c4 | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call QA | |
call QB | |
call TIMTIM | |
call TIMTIM | |
movlw D4 | |
movwf TP4 | |
movlw d4 | |
movwf TP8 | |
call TONEA | |
movlw B4 | |
movwf TP4 | |
movlw b4 | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call QA | |
call QB | |
call TIMTIM | |
movlw D4 | |
movwf TP4 | |
movlw d4 | |
movwf TP8 | |
call TONEA | |
movlw B4 | |
movwf TP4 | |
movlw b4 | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call QA | |
call QB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
; -- | |
; -- | |
movlw E4 | |
movwf TP4 | |
movlw e4 | |
movwf TP8 | |
call TONEA | |
movlw C4 | |
movwf TP4 | |
movlw c4 | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call QA | |
call TIMTIM | |
movlw E4 | |
movwf TP4 | |
movlw e4 | |
movwf TP8 | |
call TONEA | |
movlw C4 | |
movwf TP4 | |
movlw c4 | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call QA | |
call TIMTIM | |
movlw F4 | |
movwf TP4 | |
movlw f4 | |
movwf TP8 | |
call TONEA | |
movlw A4s | |
movwf TP4 | |
movlw a4s | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call QA | |
call TIMTIM | |
movlw G4 | |
movwf TP4 | |
movlw g4 | |
movwf TP8 | |
call TONEA | |
movlw A4s | |
movwf TP4 | |
movlw a4s | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call QA | |
call TIMTIM | |
; -- | |
movlw G4 | |
movwf TP4 | |
movlw g4 | |
movwf TP8 | |
call TONEA | |
movlw A4 | |
movwf TP4 | |
movlw a4 | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call QA | |
call TIMTIM | |
movlw F4 | |
movwf TP4 | |
movlw f4 | |
movwf TP8 | |
call TONEA | |
movlw A4 | |
movwf TP4 | |
movlw a4 | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call QA | |
call TIMTIM | |
movlw E4 | |
movwf TP4 | |
movlw e4 | |
movwf TP8 | |
call TONEA | |
movlw G3 | |
movwf TP4 | |
movlw g3 | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call QA | |
call TIMTIM | |
movlw D4 | |
movwf TP4 | |
movlw d4 | |
movwf TP8 | |
call TONEA | |
movlw G3 | |
movwf TP4 | |
movlw g3 | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call QA | |
call TIMTIM | |
; -- | |
movlw C4 | |
movwf TP4 | |
movlw c4 | |
movwf TP8 | |
call TONEA | |
movlw E3 | |
movwf TP4 | |
movlw e3 | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call QA | |
call TIMTIM | |
movlw C4 | |
movwf TP4 | |
movlw c4 | |
movwf TP8 | |
call TONEA | |
movlw E3 | |
movwf TP4 | |
movlw e3 | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call QA | |
call TIMTIM | |
movlw D4 | |
movwf TP4 | |
movlw d4 | |
movwf TP8 | |
call TONEA | |
movlw F3 | |
movwf TP4 | |
movlw f3 | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call QA | |
call TIMTIM | |
movlw E4 | |
movwf TP4 | |
movlw e4 | |
movwf TP8 | |
call TONEA | |
movlw G3 | |
movwf TP4 | |
movlw g3 | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call QA | |
call TIMTIM | |
; -- | |
movlw D4 | |
movwf TP4 | |
movlw d4 | |
movwf TP8 | |
call TONEA | |
movlw F3 | |
movwf TP4 | |
movlw f3 | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call QA | |
call QB | |
call TIMTIM | |
call TIMTIM | |
movlw C4 | |
movwf TP4 | |
movlw c4 | |
movwf TP8 | |
call TONEA | |
movlw E3 | |
movwf TP4 | |
movlw e3 | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call QA | |
call QB | |
call TIMTIM | |
movlw C4 | |
movwf TP4 | |
movlw c4 | |
movwf TP8 | |
call TONEA | |
movlw E3 | |
movwf TP4 | |
movlw e3 | |
movwf TP8 | |
call TONEB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call QA | |
call QB | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
call TIMTIM | |
; -- | |
LOOP goto LOOP | |
MIXVOL movlw B'00000111' ; $07(ミキサーの設定) | |
movwf ADR | |
movlw B'00111000' ; C B A C B A | |
movwf DAT ; ノイズ トーン | |
call SUB1 ; 0 = 出力 | |
movlw B'00001000' ; $08(チャンネルAの音量) | |
movwf ADR | |
movlw B'00001111' ; 下位4bitが音量 | |
movwf DAT | |
call SUB1 | |
movlw B'00001001' ; $09(チャンネルBの音量) | |
movwf ADR | |
movlw B'00001111' ; 下位4bitが音量 | |
movwf DAT | |
call SUB1 | |
movlw B'00001010' ; $0A(チャンネルCの音量) | |
movwf ADR | |
movlw B'00001111' ; 下位4bitが音量 | |
movwf DAT | |
call SUB1 | |
return | |
TONEA movlw B'00000001' ; $01(チャンネルAの周波数) | |
call TOU | |
movlw B'00000000' ; $00(チャンネルAの周波数) | |
goto TOD | |
TONEB movlw B'00000011' ; $03(チャンネルBの周波数) | |
call TOU | |
movlw B'00000010' ; $02(チャンネルBの周波数) | |
goto TOD | |
TONEC movlw B'00000101' ; $05(チャンネルCの周波数) | |
call TOU | |
movlw B'00000100' ; $04(チャンネルCの周波数) | |
goto TOD | |
TOU movwf ADR | |
movf TP4 ,w ; 下位4bitがTPの上位4bit | |
movwf DAT | |
call SUB1 | |
return | |
TOD movwf ADR | |
movf TP8 ,w ; TPの下位8bit | |
movwf DAT | |
call SUB1 | |
return | |
QA clrf TP4 | |
clrf TP8 | |
call TONEA | |
return | |
QB clrf TP4 | |
clrf TP8 | |
call TONEB | |
return | |
QC clrf TP4 | |
clrf TP8 | |
call TONEC | |
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