線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4586
推到 Plurk!
推到 Facebook!

電子琴和音樂盒程式整合

答題得分者是:penguin5
yha043027
一般會員


發表:2
回覆:11
積分:2
註冊:2007-05-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-05-19 09:21:29 IP:220.140.xxx.xxx 訂閱
我的程式分開時多可以動作,但整合起來就不行,請幫我看是哪裡有問題
按下P1.0~P1.7和P3.0~P3.2會發出DO,RO,MI的聲音,
我的電子琴還有在P0和P2加裝led按下時就會亮,按下P3.3時,會發出音樂盒的音樂

ORG 0000H START: MOV DPTR,#TEST

CONT: CLR A
MOVC A,@A DPTR
CJNE A,#40,CHK
AJMP START
CHK: CJNE A,#255,OK
STOP: AJMP STOP
OK: PUSH ACC
INC DPTR
CLR A
MOVC A,@A DPTR
MOV R4,A
POP ACC
CHK1: CJNE A,#01,CHK2
ACALL DOL
CHK2: CJNE A,#02,CHK3
ACALL REL
CHK3: CJNE A,#03,CHK4
ACALL MIL
CHK4: CJNE A,#04,CHK5
ACALL FAL
CHK5: CJNE A,#05,CHK6
ACALL SOL
CHK6: CJNE A,#06,CHK7
ACALL LAL
CHK7: CJNE A,#07,CHK11
ACALL SIL
CHK11: CJNE A,#11,CHK12
ACALL DO
CHK12: CJNE A,#12,CHK13
ACALL RE
CHK13: CJNE A,#13,CHK14
ACALL MI
CHK14: CJNE A,#14,CHK15
ACALL FA
CHK15: CJNE A,#15,CHK16
ACALL SO
CHK16: CJNE A,#16,CHK17
ACALL LA
CHK17: CJNE A,#17,CHK21
ACALL SI
CHK21: CJNE A,#21,CHK22
ACALL DOH
CHK22: CJNE A,#22,CHK23
ACALL REH
CHK23: CJNE A,#23,CHK24
ACALL MIH
CHK24: CJNE A,#24,CHK25
ACALL FAH
CHK25: CJNE A,#25,CHK26
ACALL SOH
CHK26: CJNE A,#26,CHK27
ACALL LAH
CHK27: CJNE A,#27,CHK0
ACALL SIH
CHK0: CJNE A,#00,CONT2
ACALL NON
CONT2: INC DPTR
AJMP CONT
ORL P1,#11111111B
ORL P3,#11111111B
TEST: JNB P3.3,MUSIC ;P3.3=0 ?
JNB P3.2,FAL ;P3.2=0 ?
JNB P3.1,SOL ;P3.1=0 ?
JNB P3.0,SIL ;P3.0=0 ?
JNB P1.7,DO ;P1.7=0 ?
JNB P1.6,RE ;P1.6=0 ?
JNB P1.5,MI ;P1.5=0 ?
JNB P1.4,FA ;P1.4=0 ?
JNB P1.3,SO ;P1.3=0 ?
JNB P1.2,LA ;P1.2=0 ?
JNB P1.1,SI ;P1.1=0 ?
JNB P1.0,DOH ;P1.0=0 ?
AJMP TEST
DOL: MOV R6,#254
MOV R5,#16
AJMP OUTPUT
REL: MOV R6,#226
MOV R5,#18
AJMP OUTPUT
MIL: MOV R6,#201
MOV R5,#21
AJMP OUTPUT
FAL: MOV R6,#190
MOV R5,#22
AJMP OUTPUT
SOL: MOV R6,#170
MOV R5,#25
MOV P2,#11111011B
AJMP OUTPUT
LAL: MOV R6,#150
MOV R5,#28
MOV P2,#11111101B
AJMP OUTPUT
SIL: MOV R6,#134
MOV R5,#31
MOV P2,#11111110B
AJMP OUTPUT
DO: MOV R6,#126
MOV R5,#33
MOV P0,#01111111B
AJMP OUTPUT
RE: MOV R6,#113
MOV R5,#37
MOV P0,#10111111B
AJMP OUTPUT
MI: MOV R6,#100
MOV R5,#41
MOV P0,#11011111B
AJMP OUTPUT
FA: MOV R6,#95
MOV R5,#44
MOV P0,#11101111B
AJMP OUTPUT
SO: MOV R6,#85
MOV R5,#49
MOV P0,#11110111B
AJMP OUTPUT
LA: MOV R6,#75
MOV R5,#55
MOV P0,#11111011B
AJMP OUTPUT
SI: MOV R6,#67
MOV R5,#62
MOV P0,#11111101B
AJMP OUTPUT
DOH: MOV R6,#63
MOV R5,#65
MOV P0,#11111110B
AJMP OUTPUT
REH: MOV R6,#56
MOV R5,#73
AJMP OUTPUT
MIH: MOV R6,#50
MOV R5,#82
AJMP OUTPUT
FAH: MOV R6,#47
MOV R5,#88
AJMP OUTPUT
SOH: MOV R6,#42
MOV R5,#98
AJMP OUTPUT
LAH: MOV R6,#37
MOV R5,#110
AJMP OUTPUT
SIH: MOV R6,#33
MOV R5,#124
AJMP OUTPUT
NON: MOV R6,#33
MOV R5,#124
AJMP OUTPUT
OUTPUT: PUSH 05
LOOP: CJNE A,#00,SOUND
AJMP MUTE
SOUND: CLR P3.7
MUTE: ACALL DELAY
SETB P3.7
ACALL DELAY
MOV P2,#11111111B
MOV P0,#11111111B
DJNZ R5,LOOP
POP 05
DJNZ R4,OUTPUT
AJMP TEST
;
REST: MOV R6,#170
MOV R5,#50
WAIT: ACALL DELAY
DJNZ R5,WAIT
RET

;
DELAY: MOV B,R6
DL: MOV R7,#6
DJNZ R7,$
DJNZ R6,DL
MOV R6,B
RET

MUSIC: DB 11,04,11,04,11,04
DB 13,06,12,02,11,04
DB 13,04,13,04,13,04
DB 15,06,14,02,13,04
DB 15,04,14,04,13,04
DB 12,08,00,04
DB 12,08,11,02,07,02
DB 11,04,12,04,13,04
DB 14,08,13,02,12,02
DB 13,04,14,04,15,04
DB 15,02,14,02,13,04,12,04
DB 11,08,00,04
DB 40
END



電子琴的程式
ORG 0000H
ORL P1,#11111111B
ORL P3,#11111111B
TEST: JNB P3.2,SOL ;P3.2=0 ?
JNB P3.1,LAL ;P3.1=0 ?
JNB P3.0,SIL ;P3.0=0 ?
JNB P1.7,DO ;P1.7=0 ?
JNB P1.6,RE ;P1.6=0 ?
JNB P1.5,MI ;P1.5=0 ?
JNB P1.4,FA ;P1.4=0 ?
JNB P1.3,SO ;P1.3=0 ?
JNB P1.2,LA ;P1.2=0 ?
JNB P1.1,SI ;P1.1=0 ?
JNB P1.0,DOH ;P1.0=0 ?
AJMP TEST
;
SOL: MOV R6,#170
MOV P2,#00100000B
AJMP OUTPUT
LAL: MOV R6,#150
MOV P2,#01000000B
AJMP OUTPUT
SIL: MOV R6,#134
MOV P2,#10000000B
AJMP OUTPUT
DO: MOV R6,#126
MOV P0,#00000001B
AJMP OUTPUT
RE: MOV R6,#113
MOV P0,#00000010B
AJMP OUTPUT
MI: MOV R6,#100
MOV P0,#00000100B
AJMP OUTPUT
FA: MOV R6,#95
MOV P0,#00001000B
AJMP OUTPUT
SO: MOV R6,#85
MOV P0,#00010000B
AJMP OUTPUT
LA: MOV R6,#75
MOV P0,#00100000B
AJMP OUTPUT
SI: MOV R6,#67
MOV P0,#01000000B
AJMP OUTPUT
DOH: MOV R6,#63
MOV P0,#10000000B
;
OUTPUT: CLR P3.7
ACALL DELAY
SETB P3.7
ACALL DELAY
MOV P2,#00000000B
MOV P0,#00000000B
AJMP TEST
;
DELAY: MOV B,R6
DL: MOV R7,#6
DJNZ R7,$
DJNZ R6,DL
MOV R6,B
RET
;
END


音樂盒的程式
ORG 0000H
START: MOV DPTR,#MUSIC
CONT: CLR A
MOVC A,@A DPTR
CJNE A,#40,CHK
AJMP START
CHK: CJNE A,#255,OK
STOP: AJMP STOP
OK: PUSH ACC
INC DPTR
CLR A
MOVC A,@A DPTR
MOV R4,A
POP ACC
CHK1: CJNE A,#01,CHK2
ACALL DOL
CHK2: CJNE A,#02,CHK3
ACALL REL
CHK3: CJNE A,#03,CHK4
ACALL MIL
CHK4: CJNE A,#04,CHK5
ACALL FAL
CHK5: CJNE A,#05,CHK6
ACALL SOL
CHK6: CJNE A,#06,CHK7
ACALL LAL
CHK7: CJNE A,#07,CHK11
ACALL SIL
CHK11: CJNE A,#11,CHK12
ACALL DO
CHK12: CJNE A,#12,CHK13
ACALL RE
CHK13: CJNE A,#13,CHK14
ACALL MI
CHK14: CJNE A,#14,CHK15
ACALL FA
CHK15: CJNE A,#15,CHK16
ACALL SO
CHK16: CJNE A,#16,CHK17
ACALL LA
CHK17: CJNE A,#17,CHK21
ACALL SI
CHK21: CJNE A,#21,CHK22
ACALL DOH
CHK22: CJNE A,#22,CHK23
ACALL REH
CHK23: CJNE A,#23,CHK24
ACALL MIH
CHK24: CJNE A,#24,CHK25
ACALL FAH
CHK25: CJNE A,#25,CHK26
ACALL SOH
CHK26: CJNE A,#26,CHK27
ACALL LAH
CHK27: CJNE A,#27,CHK0
ACALL SIH
CHK0: CJNE A,#00,CONT2
ACALL NON
CONT2: INC DPTR
AJMP CONT
DOL: MOV R6,#254
MOV R5,#16
AJMP OUTPUT
REL: MOV R6,#226
MOV R5,#18
AJMP OUTPUT
MIL: MOV R6,#201
MOV R5,#21
AJMP OUTPUT
FAL: MOV R6,#190
MOV R5,#22
AJMP OUTPUT
SOL: MOV R6,#170
MOV R5,#25
AJMP OUTPUT
LAL: MOV R6,#150
MOV R5,#28
AJMP OUTPUT
SIL: MOV R6,#134
MOV R5,#31
AJMP OUTPUT
DO: MOV R6,#126
MOV R5,#33
AJMP OUTPUT
RE: MOV R6,#113
MOV R5,#37
AJMP OUTPUT
MI: MOV R6,#100
MOV R5,#41
AJMP OUTPUT
FA: MOV R6,#95
MOV R5,#44
AJMP OUTPUT
SO: MOV R6,#85
MOV R5,#49
AJMP OUTPUT
LA: MOV R6,#75
MOV R5,#55
AJMP OUTPUT
SI: MOV R6,#67
MOV R5,#62
AJMP OUTPUT
DOH: MOV R6,#63
MOV R5,#65
AJMP OUTPUT
REH: MOV R6,#56
MOV R5,#73
AJMP OUTPUT
MIH: MOV R6,#50
MOV R5,#82
AJMP OUTPUT
FAH: MOV R6,#47
MOV R5,#88
AJMP OUTPUT
SOH: MOV R6,#42
MOV R5,#98
AJMP OUTPUT
LAH: MOV R6,#37
MOV R5,#110
AJMP OUTPUT
SIH: MOV R6,#33
MOV R5,#124
AJMP OUTPUT
NON: MOV R6,#33
MOV R5,#124
AJMP OUTPUT

OUTPUT: PUSH 05
LOOP: CJNE A,#00,SOUND
AJMP MUTE
SOUND: CLR P3.7
MUTE: ACALL DELAY
SETB P3.7
ACALL DELAY
DJNZ R5,LOOP
POP 05
DJNZ R4,OUTPUT

REST: MOV R6,#170
MOV R5,#50
WAIT: ACALL DELAY
DJNZ R5,WAIT
RET
DELAY: MOV B,R6
DL: MOV R7,#6
DJNZ R7,$
DJNZ R6,DL
MOV R6,B
RET
MUSIC: DB 11,04,11,04,11,04
DB 13,06,12,02,11,04
DB 13,04,13,04,13,04
DB 15,06,14,02,13,04
DB 15,04,14,04,13,04
DB 12,08,00,04
DB 12,08,11,02,07,02
DB 11,04,12,04,13,04
DB 14,08,13,02,12,02
DB 13,04,14,04,15,04
DB 15,02,14,02,13,04,12,04
DB 11,08,00,04
DB 40
END

編輯記錄
yha043027 重新編輯於 2007-05-22 09:30:58, 註解 無‧
penguin5
資深會員


發表:116
回覆:317
積分:431
註冊:2004-05-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-05-19 17:02:38 IP:61.217.xxx.xxx 訂閱
 MOV DPTR, #16位元位址碼

說明:
(1) .將16位元之位址碼值,載入到資料指標暫存器"DPTR"內去。
(2) .16位元位址碼載入到資料指標暫存器內時,其中高8位元 存放到DPH內,低8位元則存放到DPL內去。
(3). 此指令為"8051"指令集中唯一的16位元轉移指令。

編輯記錄
penguin5 重新編輯於 2007-05-19 17:05:17, 註解 無‧
penguin5 重新編輯於 2007-05-19 17:42:12, 註解 無‧
yha043027
一般會員


發表:2
回覆:11
積分:2
註冊:2007-05-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-05-21 11:24:45 IP:218.170.xxx.xxx 訂閱
penguin5 你說的太深了,我聽不太懂,可以解釋的清楚一點嗎
penguin5
資深會員


發表:116
回覆:317
積分:431
註冊:2004-05-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-05-21 17:32:12 IP:61.216.xxx.xxx 訂閱
程式分開時多可以動作,但整合起來就不行,
請貼出未整合的兩個程式,比較容易看出整後是哪裡有問題.
yha043027
一般會員


發表:2
回覆:11
積分:2
註冊:2007-05-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-05-27 10:46:10 IP:218.170.xxx.xxx 訂閱
我已經將兩個程式貼出來了,請問看的出來哪裡有問題嗎
penguin5
資深會員


發表:116
回覆:317
積分:431
註冊:2004-05-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-05-27 12:01:59 IP:59.115.xxx.xxx 訂閱

MOV DPTR, TEST 這行錯了

你的 TEST不是 16位元位址碼

==============================================
原來的程式是 MUSIC 是DB 11.04............

MOV DPTR,#MUSIC
MUSIC:
DB 11,04,11,04,11,04
==================================
整合後 TEST 是JNB P3.3,MUSIC

MOV DPTR, TEST
TEST:
JNB P3.3,MUSIC ;P3.3=0 ?

=============================================

MOV DPTR, #16位元位址碼

說明:
(1) .將16位元之位址碼值,載入到資料指標暫存器"DPTR"內去。
(2) .16位元位址碼載入到資料指標暫存器內時,其中高8位元 存放到DPH內,低8位元則存放到DPL內去。
(3). 此指令為"8051"指令集中唯一的16位元轉移指令。



===================引 用 yha043027 文 章===================
我已經將兩個程式貼出來了,請問看的出來哪裡有問題嗎
penguin5
資深會員


發表:116
回覆:317
積分:431
註冊:2004-05-09

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-05-27 13:04:10 IP:59.115.xxx.xxx 訂閱
已整合 ;電子琴的程式
ORG 0000H
ORL P1,#11111111B
ORL P3,#11111111B
TEST:
JNB P3.3,MUSIC_11 ;P3.3=0 ?
JNB P3.2,SOL_1 ;P3.2=0 ?
JNB P3.1,LAL_1 ;P3.1=0 ?
JNB P3.0,SIL_1 ;P3.0=0 ?
JNB P1.7,DO_1 ;P1.7=0 ?
JNB P1.6,RE_1 ;P1.6=0 ?
JNB P1.5,MI_1 ;P1.5=0 ?
JNB P1.4,FA_1 ;P1.4=0 ?
JNB P1.3,SO_1 ;P1.3=0 ?
JNB P1.2,LA_1 ;P1.2=0 ?
JNB P1.1,SI_1 ;P1.1=0 ?
JNB P1.0,DOH_1 ;P1.0=0 ?
AJMP TEST
;
SOL_1:
MOV R6,#170
MOV P2,#00100000B
AJMP OUTPUT_1
LAL_1:
MOV R6,#150
MOV P2,#01000000B
AJMP OUTPUT_1
SIL_1:
MOV R6,#134
MOV P2,#10000000B
AJMP OUTPUT_1
DO_1:
MOV R6,#126
MOV P0,#00000001B
AJMP OUTPUT_1
RE_1:
MOV R6,#113
MOV P0,#00000010B
AJMP OUTPUT_1
MI_1:
MOV R6,#100
MOV P0,#00000100B
AJMP OUTPUT_1
FA_1:
MOV R6,#95
MOV P0,#00001000B
AJMP OUTPUT_1
SO_1:
MOV R6,#85
MOV P0,#00010000B
AJMP OUTPUT_1
LA_1:
MOV R6,#75
MOV P0,#00100000B
AJMP OUTPUT_1
SI_1:
MOV R6,#67
MOV P0,#01000000B
AJMP OUTPUT_1
DOH_1:
MOV R6,#63
MOV P0,#10000000B

;===========================================================================
;音樂盒的程式

MUSIC_11:

MOV DPTR,#MUSIC
CONT:
CLR A
MOVC A,@A DPTR
CJNE A,#40,CHK
AJMP MUSIC_11

CHK:
CJNE A,#255,OK
STOP:
AJMP STOP

OK:
PUSH ACC
INC DPTR
CLR A
MOVC A,@A DPTR
MOV R4,A
POP ACC
CHK1:
CJNE A,#01,CHK2
ACALL DOL
CHK2:
CJNE A,#02,CHK3
ACALL REL
CHK3:
CJNE A,#03,CHK4
ACALL MIL
CHK4:
CJNE A,#04,CHK5
ACALL FAL
CHK5:
CJNE A,#05,CHK6
ACALL SOL
CHK6:
CJNE A,#06,CHK7
ACALL LAL
CHK7:
CJNE A,#07,CHK11
ACALL SIL
CHK11:
CJNE A,#11,CHK12
ACALL DO
CHK12:
CJNE A,#12,CHK13
ACALL RE
CHK13:
CJNE A,#13,CHK14
ACALL MI
CHK14:
CJNE A,#14,CHK15
ACALL FA
CHK15:
CJNE A,#15,CHK16
ACALL SO
CHK16:
CJNE A,#16,CHK17
ACALL LA
CHK17:
CJNE A,#17,CHK21
ACALL SI
CHK21:
CJNE A,#21,CHK22
ACALL DOH
CHK22:
CJNE A,#22,CHK23
ACALL REH
CHK23:
CJNE A,#23,CHK24
ACALL MIH
CHK24:
CJNE A,#24,CHK25
ACALL FAHH
CHK25:
CJNE A,#25,CHK26
ACALL SOH
CHK26:
CJNE A,#26,CHK27
ACALL LAH
CHK27:
CJNE A,#27,CHK0
ACALL SIH
CHK0:
CJNE A,#00,CONT2
ACALL NON
CONT2:
INC DPTR
AJMP CONT
DOL: MOV R6,#254
MOV R5,#16
AJMP OUTPUT
REL:
MOV R6,#226
MOV R5,#18
AJMP OUTPUT
MIL:
MOV R6,#201
MOV R5,#21
AJMP OUTPUT
FAL:
MOV R6,#190
MOV R5,#22
AJMP OUTPUT
SOL:
MOV R6,#170
MOV R5,#25
AJMP OUTPUT
LAL:
MOV R6,#150
MOV R5,#28
AJMP OUTPUT
SIL:
MOV R6,#134
MOV R5,#31
AJMP OUTPUT
DO:
MOV R6,#126
MOV R5,#33
AJMP OUTPUT
RE:
MOV R6,#113
MOV R5,#37
AJMP OUTPUT
MI:
MOV R6,#100
MOV R5,#41
AJMP OUTPUT
FA:
MOV R6,#95
MOV R5,#44
AJMP OUTPUT
SO: MOV R6,#85
MOV R5,#49
AJMP OUTPUT
LA:
MOV R6,#75
MOV R5,#55
AJMP OUTPUT
SI:
MOV R6,#67
MOV R5,#62
AJMP OUTPUT
DOH:
MOV R6,#63
MOV R5,#65
AJMP OUTPUT
REH:
MOV R6,#56
MOV R5,#73
AJMP OUTPUT
MIH:
MOV R6,#50
MOV R5,#82
AJMP OUTPUT
FAHH:
MOV R6,#47
MOV R5,#88
AJMP OUTPUT
SOH:
MOV R6,#42
MOV R5,#98
AJMP OUTPUT
LAH:
MOV R6,#37
MOV R5,#110
AJMP OUTPUT
SIH:
MOV R6,#33
MOV R5,#124
AJMP OUTPUT
NON:
MOV R6,#33
MOV R5,#124
AJMP OUTPUT

OUTPUT:
PUSH 05
LOOP:
CJNE A,#00,SOUND
AJMP MUTE
SOUND:
CLR P3.7
MUTE:
ACALL DELAY
SETB P3.7
ACALL DELAY
DJNZ R5,LOOP
POP 05
DJNZ R4,OUTPUT

REST:
MOV R6,#170
MOV R5,#50
WAIT:
ACALL DELAY
DJNZ R5,WAIT
RET
DELAY:
MOV B,R6
DL:
MOV R7,#6
DJNZ R7,$
DJNZ R6,DL
MOV R6,B
RET
MUSIC:
DB 11,04,11,04,11,04
DB 13,06,12,02,11,04
DB 13,04,13,04,13,04
DB 15,06,14,02,13,04
DB 15,04,14,04,13,04
DB 12,08,00,04
DB 12,08,11,02,07,02
DB 11,04,12,04,13,04
DB 14,08,13,02,12,02
DB 13,04,14,04,15,04
DB 15,02,14,02,13,04,12,04
DB 11,08,00,04
DB 40
RET
OUTPUT_1:
CLR P3.7
ACALL DELAY
SETB P3.7
ACALL DELAY
MOV P2,#00000000B
MOV P0,#00000000B
AJMP TEST
;
DELAY_1:
MOV B,R6
DL_1:
MOV R7,#6
DJNZ R7,$
DJNZ R6,DL_1
MOV R6,B
RET

END

yha043027
一般會員


發表:2
回覆:11
積分:2
註冊:2007-05-18

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-06-01 09:19:30 IP:218.170.xxx.xxx 訂閱
謝謝,已經可以動作了,原來是要有2個副程式
系統時間:2024-05-19 23:01:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!