Skip to content

Instantly share code, notes, and snippets.

@xiupos
Created February 6, 2018 01:33
Show Gist options
  • Save xiupos/4c50858909def3b57f053c17442f1b49 to your computer and use it in GitHub Desktop.
Save xiupos/4c50858909def3b57f053c17442f1b49 to your computer and use it in GitHub Desktop.
16F84A+YMZ294(きらきら星)
; きらきら星
; 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
TPC3 EQU B'0001'
TPc3 EQU B'11011001'
TPD3 EQU B'0001'
TPd3 EQU B'10100101'
TPE3 EQU B'0001'
TPe3 EQU B'01111011'
TPF3 EQU B'0001'
TPf3 EQU B'01100011'
TPG3 EQU B'0001'
TPg3 EQU B'00111100'
TPA4 EQU B'0001'
TPa4 EQU B'00011100'
TPB4 EQU B'0000'
TPb4 EQU B'11111101'
TPC4 EQU B'0000'
TPc4 EQU B'11101101'
;**********************************************************************
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
call C3
call TIMTIM
call Q
call TIMTIM
call C3
call TIMTIM
call Q
call TIMTIM
call G3
call TIMTIM
call Q
call TIMTIM
call G3
call TIMTIM
call Q
call TIMTIM
call A4
call TIMTIM
call Q
call TIMTIM
call A4
call TIMTIM
call Q
call TIMTIM
call G3
call TIMTIM
call TIMTIM
call Q
call TIMTIM
call TIMTIM
call F3
call TIMTIM
call Q
call TIMTIM
call F3
call TIMTIM
call Q
call TIMTIM
call E3
call TIMTIM
call Q
call TIMTIM
call E3
call TIMTIM
call Q
call TIMTIM
call D3
call TIMTIM
call Q
call TIMTIM
call D3
call TIMTIM
call Q
call TIMTIM
call C3
call TIMTIM
call TIMTIM
call Q
call TIMTIM
call TIMTIM
call G3
call TIMTIM
call Q
call TIMTIM
call G3
call TIMTIM
call Q
call TIMTIM
call F3
call TIMTIM
call Q
call TIMTIM
call F3
call TIMTIM
call Q
call TIMTIM
call E3
call TIMTIM
call Q
call TIMTIM
call E3
call TIMTIM
call Q
call TIMTIM
call D3
call TIMTIM
call TIMTIM
call Q
call TIMTIM
call TIMTIM
call G3
call TIMTIM
call Q
call TIMTIM
call G3
call TIMTIM
call Q
call TIMTIM
call F3
call TIMTIM
call Q
call TIMTIM
call F3
call TIMTIM
call Q
call TIMTIM
call E3
call TIMTIM
call Q
call TIMTIM
call E3
call TIMTIM
call Q
call TIMTIM
call D3
call TIMTIM
call TIMTIM
call Q
call TIMTIM
call TIMTIM
call C3
call TIMTIM
call Q
call TIMTIM
call C3
call TIMTIM
call Q
call TIMTIM
call G3
call TIMTIM
call Q
call TIMTIM
call G3
call TIMTIM
call Q
call TIMTIM
call A4
call TIMTIM
call Q
call TIMTIM
call A4
call TIMTIM
call Q
call TIMTIM
call G3
call TIMTIM
call TIMTIM
call Q
call TIMTIM
call TIMTIM
call F3
call TIMTIM
call Q
call TIMTIM
call F3
call TIMTIM
call Q
call TIMTIM
call E3
call TIMTIM
call Q
call TIMTIM
call E3
call TIMTIM
call Q
call TIMTIM
call D3
call TIMTIM
call Q
call TIMTIM
call D3
call TIMTIM
call Q
call TIMTIM
call C3
call TIMTIM
call TIMTIM
call Q
call TIMTIM
call TIMTIM
goto LOOP
MIXVOL movlw B'00000111' ; $07(ミキサーの設定)
movwf ADR
movlw B'00111110' ; 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
return
TONE movlw B'00000001' ; $01(チャンネルAの周波数)
movwf ADR
movf TP4 ,w ; 下位4bitがTPの上位4bit
movwf DAT
call SUB1
movlw B'00000000' ; $00(チャンネルAの周波数)
movwf ADR
movf TP8 ,w ; TPの下位8bit
movwf DAT
call SUB1
return
Q movlw N
movwf TP4
movlw N
movwf TP8
call TONE
return
C3 movlw TPC3
movwf TP4
movlw TPc3
movwf TP8
call TONE
return
D3 movlw TPD3
movwf TP4
movlw TPd3
movwf TP8
call TONE
return
E3 movlw TPE3
movwf TP4
movlw TPe3
movwf TP8
call TONE
return
F3 movlw TPF3
movwf TP4
movlw TPf3
movwf TP8
call TONE
return
G3 movlw TPG3
movwf TP4
movlw TPg3
movwf TP8
call TONE
return
A4 movlw TPA4
movwf TP4
movlw TPa4
movwf TP8
call TONE
return
B4 movlw TPB4
movwf TP4
movlw TPb4
movwf TP8
call TONE
return
C4 movlw TPC4
movwf TP4
movlw TPc4
movwf TP8
call TONE
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 0x099
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