㈠ 在單片機匯編語言里,我用一個按鍵控制蜂鳴器控制播放音樂,請問,我該如何在用這個按鍵控制關斷
這個很容易的,一般而言,播放音樂都是通過定時器來控制旋律或節拍的,你只要根據按鍵狀態根據設計要求,改變TR0或TR1的值就可以關斷或開啟了。
㈡ 跪求基於51單片機的匯編語言音樂盒程序
OUT BIT P2.3 //該引腳接蜂鳴器
ORG 0000H
LJMP START
ORG 000BH
INC 20H ;中斷服務,中斷計數器加1
MOV TH0,#0D8H
MOV TL0,#0EFH ;12M晶振,形成10毫秒中斷
RETI
START:
MOV SP,#50H
MOV TH0,#0D8H
MOV TL0,#0EFH
MOV TMOD,#01H
MOV IE,#82H
MUSIC0:
NOP
MOV DPTR,#DAT ;表頭地址送DPTR
MOV 20H,#00H ;中斷計數器清0
MOV B,#00H ;表序號清0
MUSIC1:
NOP
CLR A
MOVC A,@A+DPTR ;查表取代碼
JZ END0 ;是00H,則結束
CJNE A,#0FFH,MUSIC5
LJMP MUSIC3
MUSIC5:
NOP
MOV R6,A
INC DPTR
MOV A,B
MOVC A,@A+DPTR ;取節拍代碼送R7
MOV R7,A
SETB TR0 ;啟動計數
MUSIC2:
NOP
CPL OUT
MOV A,R6
MOV R3,A
LCALL DEL
MOV A,R7
CJNE A,20H,MUSIC2 ;中斷計數器(20H)=R7否?
;不等,則繼續循環
MOV 20H,#00H ;等於,則取下一代碼
INC DPTR
; INC B
LJMP MUSIC1
MUSIC3:
NOP
CLR TR0 ;休止100毫秒
MOV R2,#0DH
MUSIC4:
NOP
MOV R3,#0FFH
LCALL DEL
DJNZ R2,MUSIC4
INC DPTR
LJMP MUSIC1
END0:
NOP
MOV R2,#64H ;歌曲結束,延時1秒後繼續
MUSIC6:
MOV R3,#00H
LCALL DEL
DJNZ R2,MUSIC6
LJMP MUSIC0
DEL:
NOP
DEL3:
MOV R4,#02H
DEL4:
NOP
DJNZ R4,DEL4
NOP
DJNZ R3,DEL3
RET
NOP
DAT:
db 26h,20h,20h,20h,20h,20h,26h,10h,20h,10h,20h,80h,26h,20h,30h,20h
db 30h,20h,39h,10h,30h,10h,30h,80h,26h,20h,20h,20h,20h,20h,1ch,20h
db 20h,80h,2bh,20h,26h,20h,20h,20h,2bh,10h,26h,10h,2bh,80h,26h,20h
db 30h,20h,30h,20h,39h,10h,26h,10h,26h,60h,40h,10h,39h,10h,26h,20h
db 30h,20h,30h,20h,39h,10h,26h,10h,26h,80h,26h,20h,2bh,10h,2bh,10h
db 2bh,20h,30h,10h,39h,10h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,20h
db 20h,10h,20h,10h,2bh,10h,26h,30h,30h,80h,18h,20h,18h,20h,26h,20h
db 20h,20h,20h,40h,26h,20h,2bh,20h,30h,20h,30h,20h,1ch,20h,20h,20h
db 20h,80h,1ch,20h,1ch,20h,1ch,20h,30h,20h,30h,60h,39h,10h,30h,10h
db 20h,20h,2bh,10h,26h,10h,2bh,10h,26h,10h,26h,10h,2bh,10h,2bh,80h
db 18h,20h,18h,20h,26h,20h,20h,20h,20h,60h,26h,10h,2bh,20h,30h,20h
db 30h,20h,1ch,20h,20h,20h,20h,80h,26h,20h,30h,10h,30h,10h,30h,20h
db 39h,20h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,10h,40h,10h,20h,10h
db 20h,10h,2bh,10h,26h,30h,30h,80h,00H
END
㈢ 如何從IDA(互動式反匯編)中提取音樂代碼一般情況下是怎麼判斷音樂代碼的入口地址
音樂來不會轉換成代碼。一般是playsound 類似源的API從文件中載入,所以IDA中 你如果要找playsound 調用音樂的這個代碼 可以查看引用到這個API的代碼。如果你想要那個音樂的MP3文件或者其他格式的文件,在IDA中是看不到了 用OD在內存中可能可以看到
一般你可以直接到那個文件目錄里查找吧。大多數軟體不會對這種音樂資源做加密。如果打成了個資源包了 那就又復雜了 OD 慢慢調試吧
㈣ 匯編 音樂 IN AL,61H MOV AH,AL OR AL,03H OUT 61H,AL 為什麼還要讀當前狀態 61H是誰的(8255還是8253)
61H是8255口PB口的地址,這主要是8253定時器的控制端由PB1和PB0控制,PB0控制GATE,PB1控制揚聲器的輸出,(圖太難畫了),只有版當權PB0和PB1為1的時候,由8253控制的揚聲器才能發生,先讀然後或上03從埠送出,主要是不破壞原8255其它口的狀態,因為這里修改主要是PB0,PB1
㈤ 匯編語言編寫一個能播一段音樂的程序
我建議你還是自己琢磨琢磨吧,推薦你一本書,你上網路文庫里搜一下,比你在網上要源代碼有收獲,是為了你好。《匯編入門秘訣》,除非你一點也不懂匯編,要不然你會自己解決的。