これでも食らえーーーーー。
とりゃーーーーー!
寝るのだ!
;PIC16F84A サンプル <<<3和音>>>
;RB0 = OUTPUT MIX TONE ___ 200Ω ___ +100μF ___ >>SPERKER
;RB1 = OUTPUT TONE1 >>SPERKER
;RB2 = OUTPUT TONE2 >>SPERKER
;RB3 = OUTPUT TONE3 >>SPERKER
;OTHER PINS = NOT USE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
list p=16F84A ; 翻訳時にリストファイルを作ります。 ;;ここでどんなPICを使うか指定します。
#include <p16F84A.inc> ; 16F84A用定義ファイルを読み込みます。 ;;
;ASMファイルでは「;」より右側は読み取りませんので注意書きなり落書きが可能です。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC ;セラロック (_HS_OSCは外部にクロックという意味)
;↑↑動かす条件です。機種によっていろいろ取り決めはありますが、これらは理屈抜きに覚えてください。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
errorlevel -302 ; 翻訳時に302エラーが出ないようにします。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;初期設定
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;プログラムは「GOTO」などの命令がない限り下へ下へと降りて行きます。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BSF STATUS,RP0 ;BANK1に切り替え STATUS,RP0を1にするという意味
MOVLW B'000000' ;RA0~5すべて出力 (1は入力、 0が出力の意味)
MOVWF TRISA ;上記の情報をTRISA(RA側の管理)へ格納
MOVLW B'00000000' ;RB0~7すべて出力 (1は入力、 0が出力の意味)
MOVWF TRISB ;上記の情報をTRISB(RB側の管理)へ格納
BCF STATUS,RP0 ;BANK0に切り替え STATUS,RP0を0にするという意味
;PICには設定する箇所がBANK0とBANK1と2箇所あります。入出力情報はBANK1にありますのでSTATUS,RP0というところで
;BANK1に切り替えて設定完了後BANK0に戻します。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DOL EQU D'240' ;DOL=240と言う意味。(以下同文)
DOSL EQU D'227'
REL EQU D'214'
RESL EQU D'202'
MIL EQU D'190'
FAL EQU D'180'
FASL EQU D'170'
SOL EQU D'160'
SOSL EQU D'151'
RAL EQU D'143'
RASL EQU D'135'
SIL EQU D'127'
DO EQU D'120'
DOS EQU D'113'
RE EQU D'107'
RE_S EQU D'101'
MI EQU D'95'
FA EQU D'90'
FAS EQU D'85'
SO EQU D'80'
SOS EQU D'76'
RA EQU D'71'
RAS EQU D'67'
SI EQU D'64'
DOH EQU D'60'
DOSH EQU D'57'
REH EQU D'53'
RESH EQU D'50'
MIH EQU D'48'
FAH EQU D'45'
FASH EQU D'43'
SOH EQU D'40'
SOSH EQU D'38'
RAH EQU D'36'
RASH EQU D'34'
SIH EQU D'32'
DOHH EQU D'30'
DOSHH EQU D'29'
REHH EQU D'27'
RESHH EQU D'25'
MIHH EQU D'24'
FAHH EQU D'23'
FASHH EQU D'22'
SOHH EQU D'20'
SOSHH EQU D'19'
RAHH EQU D'18'
RASHH EQU D'17'
SIHH EQU D'16'
DOHHH EQU D'15'
SOHHH EQU D'10'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TONE1 EQU 20H ;1音目決定
TONE2 EQU 21H ;2音目決定
TONE3 EQU 22H ;3音目決定
TONE1A EQU 23H ;1音目代入
TONE2A EQU 24H ;2音目代入
TONE3A EQU 25H ;3音目代入
FLAG EQU 26H ;各フラグ
MOVLW DOH ;<1音目>
MOVWF TONE1
MOVLW MIH ;<2音目>
MOVWF TONE2
MOVLW SOH ;<3音目>
MOVWF TONE3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MAIN0 ;<<動作前>>
MOVF TONE1,W
MOVWF TONE1A
MOVF TONE2,W
MOVWF TONE2A
MOVF TONE3,W
MOVWF TONE3A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MAIN1 ;<<1音目>>
BCF PORTB,0
BCF PORTB,1
BTFSS FLAG,1 ;FLAG,1 ON?
GOTO MAIN1_0 ;NO
;YES
BSF PORTB,0
BSF PORTB,1
MAIN1_0
CALL WAIT
DECFSZ TONE1A,F
GOTO MAIN2
MOVF TONE1,W
MOVWF TONE1A
BTFSC FLAG,1 ;FLAG,1 OFF?
GOTO MAIN1_1 ;YES
;NO
BSF PORTB,0
BSF PORTB,1
BSF FLAG,1
GOTO MAIN1
MAIN1_1
BCF PORTB,0
BCF PORTB,1
BCF FLAG,1
GOTO MAIN1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MAIN2 ;<<2音目>>
BCF PORTB,0
BCF PORTB,2
BTFSS FLAG,2 ;FLAG,2 OFF?
GOTO MAIN2_0 ;YES
;NO
BSF PORTB,0
BSF PORTB,2
MAIN2_0
CALL WAIT
DECFSZ TONE2A,F
GOTO MAIN3
MOVF TONE2,W
MOVWF TONE2A
BTFSC FLAG,2 ;FLAG,2 OFF?
GOTO MAIN2_1 ;YES
;NO
BSF PORTB,0
BSF PORTB,2
BSF FLAG,2
GOTO MAIN2
MAIN2_1
BCF PORTB,0
BCF PORTB,2
BCF FLAG,2
GOTO MAIN2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MAIN3 ;<<3音目>>
BCF PORTB,0
BCF PORTB,3
BTFSS FLAG,3 ;FLAG,3 OFF?
GOTO MAIN3_0 ;YES
;NO
BSF PORTB,0
BSF PORTB,3
MAIN3_0
CALL WAIT
DECFSZ TONE3A,F
GOTO MAIN1
MOVF TONE3,W
MOVWF TONE3A
BTFSC FLAG,3 ;FLAG,3 ON?
GOTO MAIN3_1 ;YES
;NO
BSF PORTB,0
BSF PORTB,3
BSF FLAG,3
GOTO MAIN3
MAIN3_1
BCF PORTB,0
BCF PORTB,3
BCF FLAG,3
GOTO MAIN3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WAIT
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
END ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;