?? appearmusic.asm
字號:
RS EQU P2.0;確定具體硬件的連接方式
RW EQU P2.1 ;確定具體硬件的連接方式
E EQU P2.2 ;確定具體硬件的連接方式
ORG 0000H
JMP MAIN
ORG 0003H ;外部中斷0
AJMP PLAYM
ORG 000BH ;定時器t0
AJMP TIM0
ORG 0013H ;外部中斷1
AJMP PLAYM
ORG 0060H
MAIN:MOV TMOD,#01H
MOV IE,#10000111B
MOV IP,#00000010B
CLR TR0
MOV P0,#00000001B ;清屏并光標復位
ACALL ENABLE;調用寫入命令子程序
MOV P0,#00111000B ;設置顯示模式:8位2行5x7點陣
ACALL ENABLE ;調用寫入命令子程序
MOV P0,#00001111B ;顯示器開、光標開、光標允許閃爍
ACALL ENABLE ;調用寫入命令子程序
MOV P0,#0C0H ;寫入顯示起始地址(第二行第一個位置)
ACALL ENABLE ;調用寫入命令子程序
AJMP $
PLAYM :MOV 30H,#00H ;30H用于音樂播放控制
NEXT:JNB P3.2,MUSIC1
JNB P3.3,MUSIC2
AJMP EXT
MUSIC1:MOV DPTR,#TABLE1 ;TABLE1表頭
MOV P0,#0C0H ;寫入顯示起始地址(第二行第一個位置)
ACALL ENABLE ;調用寫入命令子程序
MOV P0,#4AH
ACALL XABLE
MOV P0,#49H
ACALL XABLE
MOV P0,#4EH
ACALL XABLE
MOV P0,#47H
ACALL XABLE
MOV P0,#31H
ACALL XABLE
JMP CON
MUSIC2:MOV DPTR,#TABLE2
MOV P0,#0C0H ;寫入顯示起始地址(第二行第一個位置)
ACALL ENABLE ;調用寫入命令子程序
MOV P0,#4AH
ACALL XABLE
MOV P0,#49H
ACALL XABLE
MOV P0,#4EH
ACALL XABLE
MOV P0,#47H
ACALL XABLE
MOV P0,#32H
ACALL XABLE
JMP CON
CON:MOV A,30H ;30H播放控制
MOVC A,@A+DPTR ;樂譜查表
MOV R2,A
JZ END0 ;曲譜結束控制
ANL A,#0FH ;tablex低4位
MOV R5,A ;R5低4位
MOV A,R2
SWAP A
ANL A,#0FH ;tablex高4位
JNZ SING
CLR TR0 ;靜音
JMP D1
SING:MOV DPTR,#TABLE0 ;TABLE0
DEC A
MOV 22H,A ;22H存放音符號序號
RL A
MOVC A,@A+DPTR
MOV TH0,A ;定時器高八位送值
MOV 21H,A ;21H存放高八位
MOV A,22H
RL A
INC A
MOVC A,@A+DPTR
MOV TL0,A ;定時器低八位送值
MOV 20H,A ;20H存放低八位
SETB TR0
D1:ACALL DELAY ;節拍
INC 30H ; @30H+1 播放控制
JMP NEXT
END0:CLR TR0 ;曲譜結束控制
JMP PLAYM
EXT:CLR TR0
RETI
TIM0:PUSH ACC ;計時中斷
PUSH PSW
MOV TL0,20H ;計時器,低八位重送
MOV TH0,21H ;計時器,高八位重送
CPL P1.6 ;信號輸出端
POP PSW
POP ACC
RETI
XABLE: SETB RS ;RS=1
CLR RW ;RW=0 準備寫入數據
CLR E ;E=0 ;執行顯示命令
ACALL MDELAY ;判斷液晶模塊是否忙?
SETB E ;E=1 顯示完成,程序停車
RET
ENABLE:
CLR RS ;寫入控制命令的子程序
CLR RW
CLR E
ACALL MDELAY
SETB E
RET
MDELAY:
MOV P0,#0FFH ;判斷液晶顯示器是否忙的子程序
CLR RS
SETB RW
CLR E
NOP
SETB E
JB P0.7,MDELAY ;如果P1.7為高電平表示忙就循環等待
RET
DELAY: MOV R7,#02 ;節拍延時產生
D2: MOV R4,#125
D3: MOV R3,#248
DJNZ R3,$
DJNZ R4,D3
DJNZ R7,D2
DJNZ R5,DELAY
RET
TABLE0:
DW 64260,64400,64524,64580
DW 64684,64777,64820,64898
DW 64968,65030,65058,65110
DW 65157,65178,65217
TABLE1: ; 高4位頻率選擇,低4位節拍選擇 三只小貓
DB 84H,02H,82H,64H,54h
DB 64H,54H,48H
DB 64H,02H,52H,44H,24H
DB 14H,24H,18H
DB 24H,02H,22H,42H,24H
DB 44H,54H,68H
DB 54H,02H,52H,84H,84H
DB 54H,64H,48H
DB 00H
TABLE2: ;不倒翁
DB 84H,94H,88H
DB 64H,54H,68H
DB 84H,64H,54H,44h
DB 62H,82H,42H,62H,58H
DB 84H,94H,88H
DB 64H,54H,68H
DB 84H,64H,54H,44h
DB 52H,42H,52H,62H,48H
DB 00H
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -