?? 2002.asm
字號:
;刀郎的<<2002年的第一場雪>>
SPK BIT P3.3
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP TIMER0
MAIN:
MOV TMOD,#01H ;置CT0定時(shí)工作方式1
MOV IE,#82H ;CPU開中斷,CT0開中斷
MOV R5,#00H
NEXT: MOV A,R5 ;R5存放取數(shù)的變地址
MOV DPTR,#TABLE ;DPTR置音高節(jié)拍表首地址
MOVC A,@A+DPTR ;從音高節(jié)拍表取中取音高高位參數(shù)
MOV R4,A ;R4存放音高高位參數(shù)
INC R5
MOV A,R5
MOVC A,@A+DPTR ;從音高節(jié)拍表取中取音高低位參數(shù)
MOV R3,A ;R3存放音高低位參數(shù)
INC R5
MOV A,R5
MOVC A,@A+DPTR ;從音高節(jié)拍表取中取節(jié)拍參數(shù)
JNZ NEXT1
MOV R5,#00H
JMP NEXT ;唱完后循環(huán)(節(jié)拍參數(shù)為#00H表示歌曲結(jié)束)
NEXT1: MOV R2,A ;R2存放節(jié)拍參數(shù)
LCALL SONG ;調(diào)用音符播放程序
INC R5
SJMP NEXT ;轉(zhuǎn)入調(diào)用下一個(gè)音符
SONG:
MOV TH0,R4
MOV TL0,R3
SETB TR0 ;啟動(dòng)CT0(開始唱某一音符)
DELAY: MOV R1,#85H ;節(jié)拍延時(shí)(即某一音符唱多長時(shí)間)
DEL1: MOV R0,#0FFH
DEL0: NOP
NOP
NOP
DJNZ R0,DEL0
DJNZ R1,DEL1
DJNZ R2,DELAY
CLR TR0 ;禁止CT0(某一音符唱完后停止)
RET
TIMER0: ;定時(shí)中斷程序(用于決定某一音符唱多高)
CPL SPK
MOV TH0,R4
MOV TL0,R3
RETI
TABLE: ; 音高節(jié)拍表,休止符用"FFH,FFH",結(jié)束用節(jié)拍為00H表示
DB 0FFH,0FFH,01H,0FDH, 08H,02H,0FDH, 08H,02H,0FDH, 08H,02H,0FDH, 08H,02H,0FDH, 08H,02H,0FDH, 08H,02H
DB 0FDH, 5BH,04H,0FDH, 08H,02H,0FCH,0ABH,02H,0FCH, 0BH,02H,0FCH, 0BH,02H,0FFH,0FFH,01H,0FCH, 0BH,02H
DB 0FCH,0ABH,02H,0FCH,0ABH,02H,0FCH,0ABH,02H,0FCH,0ABH,02H,0FCH,0ABH,04H,0FCH,0ABH,02H,0FCH,0ABH,02H
DB 0FBH, 8FH,02H,0FCH, 0BH,02H,0FCH, 0BH,04H,0FFH,0FFH,01H
DB 0FDH, 08H,02H,0FDH, 08H,02H,0FDH, 08H,02H,0FDH, 08H,04H,0FDH, 08H,02H,0FDH, 08H,02H
DB 0FDH, 5BH,04H,0FDH, 08H,02H,0FCH,0ABH,04H,0FDH, 08H,06H
DB 0FBH,08FH,02H,0FBH,08FH,02H,0FBH,08FH,02H,0FBH,08FH,02H,0FBH,08FH,02H,0FBH, 03H,02H,0FAH, 14H,02H
DB 0FCH,0ABH,04H,0FCH,0ABH,02H,0FCH,0ABH,02H,0FCH,0ABH,02H,0FCH, 0BH,02H,0FCH, 0BH,04H
DB 0FFH,0FFH,01H,0FDH, 08H,02H,0FDH, 08H,02H,0FDH, 08H,02H,0FDH, 08H,02H,0FDH, 08H,02H,0FDH, 08H,02H
DB 0FDH, 5BH,04H,0FDH, 08H,02H,0FCH,0ABH,04H,0FDH, 08H,06H
DB 0FBH,08FH,02H,0FBH,08FH,02H,0FBH,08FH,02H,0FBH,08FH,02H,0FBH,08FH,02H,0FBH, 03H,02H,0FAH, 14H,02H
DB 0FCH,0ABH,04H,0FCH,0ABH,02H,0FCH,0ABH,02H,0FCH,0ABH,02H,0FCH, 0BH,02H,0FCH, 0BH,04H, 00H, 00H,00H
END
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -