電子琴和音樂盒程式整合 |
答題得分者是:penguin5
|
yha043027
一般會員 發表:2 回覆:11 積分:2 註冊:2007-05-18 發送簡訊給我 |
我的程式分開時多可以動作,但整合起來就不行,請幫我看是哪裡有問題
按下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 發送簡訊給我 |
|
yha043027
一般會員 發表:2 回覆:11 積分:2 註冊:2007-05-18 發送簡訊給我 |
|
penguin5
資深會員 發表:116 回覆:317 積分:431 註冊:2004-05-09 發送簡訊給我 |
|
yha043027
一般會員 發表:2 回覆:11 積分:2 註冊:2007-05-18 發送簡訊給我 |
|
penguin5
資深會員 發表:116 回覆:317 積分:431 註冊:2004-05-09 發送簡訊給我 |
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 發送簡訊給我 |
已整合
;電子琴的程式
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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |