標題:
8051電子琴
發問:
- acer,apple,三星 的平板電腦比較
- iphone5 台灣轉遠傳@1@
- minecraft
- RX110EFI全方位評價如何- SYM的車好嗎-@1@
- CNC銑床程式碼求助 20點@1@
- 20點電腦blue screen 一直重開機....急阿><
- HTC one V@1@
- EPDM的低壓縮變形
- sony x8網路問題@1@
- SAO突襲分級
- acer,apple,三星 的平板電腦比較
- iphone5 台灣轉遠傳@1@
- minecraft
- RX110EFI全方位評價如何- SYM的車好嗎-@1@
- CNC銑床程式碼求助 20點@1@
- 20點電腦blue screen 一直重開機....急阿><
- HTC one V@1@
- EPDM的低壓縮變形
- sony x8網路問題@1@
- SAO突襲分級
此文章來自奇摩知識+如有不便請留言告知
;********************************************; 主程式; 利用鍵盤做模擬電子琴;********************************************ORG0000H;==========鍵盤掃描第一列==========LOOP: MOV P3,#11101111B; ╗JNB P3.0,KEY0; ║JNB P3.1,KEY1; ║偵測KEY0~KEY3是否按下JNB P3.2,KEY2; ║JNB P3.3,KEY3; ╝;==========鍵盤掃描第二列==========MOV... 顯示更多 ;******************************************** ; 主程式 ; 利用鍵盤做模擬電子琴 ;******************************************** ORG0000H ;==========鍵盤掃描第一列========== LOOP: MOV P3,#11101111B; ╗ JNB P3.0,KEY0; ║ JNB P3.1,KEY1; ║偵測KEY0~KEY3是否按下 JNB P3.2,KEY2; ║ JNB P3.3,KEY3; ╝ ;==========鍵盤掃描第二列========== MOV P3,#11011111B; ╗ JNB P3.0,KEY4; ║ JNB P3.1,KEY5; ║偵測KEY4~KEY7是否按下 JNB P3.2,KEY6; ║ JNB P3.3,KEY7; ╝ AJMPLOOP;重複不斷掃描 ;===鍵盤相對應的程式,音階的設定=== KEY0: MOV R6,#189; ╗DO AJMP OUTPUT; ╝ KEY1: MOV R6,#169; ╗RE AJMP OUTPUT; ╝ KEY2: MOV R6,#150; ╗ME AJMP OUTPUT; ╝ KEY3: MOV R6,#142; ╗FA AJMP OUTPUT; ╝ KEY4: MOV R6,#126; ╗SO AJMP OUTPUT; ╝ KEY5: MOV R6,#112; ╗LA AJMP OUTPUT; ╝ KEY6: MOV R6,#100; ╗SI AJMP OUTPUT; ╝ KEY7: MOV R6,#94; ╗Hi_DO AJMP OUTPUT; ╝ ;=========令頻率輸出一週========= OUTPUT:SETBP1.6; ╗設定正半週延遲時間 ACALLDELAY; ╝ CLRP1.6; ╗設定負半週延遲時間 ACALLDELAY; ╝ AJMPLOOP;跳回鍵盤掃描 ;********************************************** ;副程式 ;依R6的值做延遲 ;********************************************** DELAY:MOVA,R6 D1:MOVR7,#5 DJNZR7,$ DJNZR6,D1 MOVR6,A RET END 我看不懂音階是如何算出來的誰能交我算拜託??? 例如: 程式的音階部份為啥 189 是DO
最佳解答:
程式的音階部份, 主要在 OUTPUT 副程式, 他應是一個頻率輸出的副程式. DO RE ME 就是設定頻率 , 你須知道那 OUTPUT 副程式, 的頻率是如何計算的 ! 頻率音階供你參考 : DO = 523.25Hz RE = 587.33Hz ME = 659.25Hz FA = 698.46Hz SO = 783.98Hz LA = 880.00Hz Si = 987.77Hz Hi_DO = 1046.5Hz 程式的音階部份為 189 就是設定 DO 頻率輸出為 523.25HZ 2010-04-23 20:19:48 補充: 我看一下 OUTPUT 是輸出 P1.6 正反向一次, 時間是用 DELAY 控制 ! 這方法較不準確, 如果用 TIMER 而直接輸出會比較準確 ! DELAY 的時間由 CPU 的震盪頻率及 DELAY 指令的次數, 推算出來 !
其他解答:BFC66BE0445C3814