SPEAKER EQU P2.0 ;定義喇叭驅動口
ORG 0000H ;偽地址
LJMP MAIN ;長跳轉,執行Main函數
ORG 000BH
LJMP DSQT0
MAIN: MOV SP,#50H ;向SP寫入50
MOV TMOD,#01H ;定時器設置
MOV TH0,#0F8H ;低音1-261HZ;定時器高位初值裝入
MOV TL0,#39H ;定時器低位初值裝入
SETB EA ;允許中斷
SETB ET0 ;在EA打開的前提下,打開T0定時器中斷
CLR TR0 ;不啟用T0計數器/定時器LOOP: NOP ;開始循環播放了。程序不完整
; -------------------------------
; 1-|6. 5 3 5 | ;第壹段
LCALL DY6 ;長跳轉到低音6標號那裏,程序不完整,沒有寫出來。以下同理
SETB TR0 ;開始啟用T0計數器/定時器
LCALL DEL11
LCALL DEL12
LCALL ZY5
LCALL DEL12
LCALL ZY3
LCALL DEL11
LCALL ZY5
LCALL DEL11
; -----------------------
; 2-|1 6 5 6- | ;第二段
LCALL GY1
SETB TR0
LCALL DEL11
LCALL ZY6
LCALL DEL12
LCALL ZY5
LCALL DEL12
LCALL ZY6
LCALL DEL11
LCALL DEL11
; -----------------------
; 3-|3 5 6 5 3 |
LCALL ZY3
SETB TR0
LCALL DEL11
LCALL ZY5
LCALL DEL12
LCALL ZY6
LCALL DEL12
LCALL ZY5
LCALL DEL11
LCALL ZY3
LCALL DEL11
; -----------------------
; 4-|1 6 5 3 2- |
LCALL ZY1
SETB TR0
LCALL DEL12
LCALL DY6
LCALL DEL12
LCALL ZY5
LCALL DEL12
LCALL ZY3
LCALL DEL12
LCALL ZY2
LCALL DEL11
LCALL DEL11
; -----------------------
; 5-|2. 3 5 5 6 |
LCALL ZY2
SETB TR0
LCALL DEL11
LCALL DEL12
LCALL ZY3
LCALL DEL12
LCALL ZY5
LCALL DEL11
LCALL ZY5
LCALL DEL12
LCALL ZY6
LCALL DEL12
; -----------------------
; 6-|3 2 1 -|
LCALL ZY3
SETB TR0
LCALL DEL11
LCALL ZY2
LCALL DEL11
LCALL ZY1
LCALL DEL11
LCALL DEL11
; -----------------------
; 7-|5. 3 2 1 6 1 |
LCALL ZY5
SETB TR0
LCALL DEL11
LCALL ZY3
LCALL DEL12
LCALL ZY2
LCALL DEL12
LCALL ZY1
LCALL DEL12
LCALL DY6
LCALL DEL12
LCALL ZY1
LCALL DEL12
; -----------------------
; 8-|5 - - - |
LCALL DY5
SETB TR0
LCALL DEL11
LCALL DEL11
LCALL DEL11
LCALL DEL11
LJMP LOOP 跳轉到loop那裏重新播放
; ===========================================
; 低音音符頻率對應16位定時器初值裝置子程序
DY1: MOV 30H,#0F8H ;低音1-262HZ 把F8放在30的地址裏面
MOV 40H,#89H
NOP
RET
DY2: MOV 30H,#0F9H ;低音2-294HZ
MOV 40H,#59H
RET
NOP