国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用單片機編寫的音樂程序

Wildesbeast ? 來源:福星電子網 ? 作者:福星電子網 ? 2020-01-21 12:18 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

使用單片機編寫的音樂程序


6=440Hz,#6=440*1.059463=466.2Hz,7=440*1.059463*1.059463=493.9Hz

#5=440÷1.059463=415.3Hz

5=440÷1.059463÷1.059463=392Hz

相鄰半音階的關系為1.059463倍,只要知道“A”=440Hz,即可算出其余半音階的頻率,比A高的用“*”,比A低的用“÷”

1.059463=12√2(即2開12次根)

440Hz為鋼琴中央C組的A(即“6”音)

ok

這是本人一個產品中的音樂單元,很完整,供愛好者參考。

ORG 0000H

AJMP CSH 主程序進入點

ORG 000BH

LJMP TIM0 定時中斷T0入口

;

;**********

;* 初始化 *

;**********

;

ORG 0020H

CSH: MOV R0,#7FH 內部RAM(00H~7FH)清零

CSH1: MOV @R0,#00H

DJNZ R0,CSH1

MOV SP,#60H 堆棧60H~7FH,【使用89C51】

MOV TMOD,#01H TMOD=11H,T0作16位計數器(4M晶振)

CLR TCON.4 T0禁止動作

SETB IE.1 T0允許中斷

SETB PT0 T0中斷優先

SETB IE.7 系統允許中斷

;

;**********

;* 主程序 *

;**********

;

MAIN: MOV 5CH,#00 取簡碼譜指針

LCALL MUSIC

MOV 5CH,#49 取簡碼譜指針

LCALL MUSIC

MOV 5CH,#66 取簡碼譜指針

LCALL MUSIC

MOV 5CH,#100 取簡碼譜指針

LCALL MUSIC

MOV 5CH,#108 取簡碼譜指針

LCALL MUSIC

MOV 5CH,#136 取簡碼譜指針

LCALL MUSIC

MOV 5CH,#174 取簡碼譜指針

LCALL MUSIC

AJMP MAIN

;

;*************************

;* 音樂子程序 MUSIC *

;* 入口: 5CH←簡碼譜指針 *

;*************************

;

MUSIC: MOV A,5CH 簡碼譜指針裝入A

MOV DPTR,#TABLE 至TABLE取簡碼

MOVC A,@A+DPTR

MOV R2,A 取到的簡碼暫存于R2

JZ END1 是否取到00(結束碼)?

ANL A,#0FH 不是,則取低四位(節拍碼)

MOV R6,A 將節拍碼存入R6

MOV A,R2 將取到的簡碼再裝入R2

SWAP A 高低四位交換

ANL A,#0FH 取低四位(音符碼)

JNZ SING 取到的音符碼是否為0?

CLR TR0 是,則不發音

AJMP D1 跳到D1

;

SING: DEC A 取到的音符碼減1

MOV 4BH,A 存入(4BH)

RL A 乘2

MOV DPTR,#TABLE1 至TABLE1取相對的高字節計數值

MOVC A,@A+DPTR

MOV TH0,A 取到的高字節存入TH0

MOV 4AH,A 取到的高字節存入(4AH)

MOV A,4BH 再裝入取到的音符碼

RL A 乘2

INC A 加1

MOVC A,@A+DPTR 至TABLE1取相對的低位

MOV TL0,A 取到的低字節存入TL0

MOV 49H,A 取到的低字節存入(49H)

SETB TR0 啟動TIMER0

D1: CALL DELAY 基本單位時間1/4拍187毫秒

INC 5CH 取簡碼譜指針加1

AJMP MUSIC 取下一個碼

DD1: RET

;

STOP: NOP

; JB P3.7,STOP1 在軟件延時中摻插做其他動作

; SETB P2.7 P2.7←“1”

NOP

NOP

STOP0: NOP

RET

STOP1: NOP

; JB P3.6,STOP0 在軟件延時中摻插做其他動作

; SETB P2.6 P2.6←“1”

RET

;

END1: CLR TR0 停止TIMER0

RET

;

TIM0: PUSH A 將A的值暫存于堆棧區

PUSH PSW 將PSW的值暫存于堆棧區

MOV TL0,49H 重設計數值

MOV TH0,4AH

CPL P1.7 將輸出端P1.1取反(P1.7接至無源蜂鳴器)

POP PSW 至堆棧區取回PSW的值

POP A 至堆棧區取回A的值

RETI 返回主程序

;

DELAY: MOV R7,#02 187毫秒

D2: MOV R4,#24

D3: MOV R3,#48

DJNZ R3,$

ACALL STOP 在軟件延時中摻插做其他動作

DJNZ R4,D3

DJNZ R7,D2

DJNZ R6,DELAY 決定節拍

RET

; .5 .6 .7 1

TABLE1: DW 65111,65150,65199,65217 4M晶振時的定時中斷時間常數

; 2 3 4 5 若采用其它頻率,則要根據樂音的

DW 65252,65283,65297,65323 頻率計算,例中央C的A音為440Hz,

; 6 7 1` 2` 440Hz=2.273ms,把T0設置為2.273ms

DW 65347,65367,65377,65394 中斷即可發出A音。

; 3` 4` #6

DW 65410,65417,65357

;

;***************************************************************

;* 音符代碼 1 2 3 4 5 6 7 8 9 A B C D E F 0 *

;* 音高 .5 .6 .7 1 2 3 4 5 6 7 1` 2` 3` 4` 5` 休止 *

;*-------------------------------------------------------------*

;* 節拍代碼 1 2 3 4 5 6 8 A C F *

;* 節拍 1/4 2/4 3/4 1 1(1/4) 1(1/2) 2 2(1/2) 3 3(3/4) *

;*-------------------------------------------------------------*

;* 結束代碼 00H *

;*-------------------------------------------------------------*

;* 樂譜格式 每字節的高字節為音符代碼,低字節為節拍代碼 *

;*-------------------------------------------------------------*

;* 例子: ⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ *

;* DB A4H,02H,84H,02H,A4H,02H,84H,02H,D8H,04H,00H *

;* ⑴ A→唱“7” , 4→ 1 拍 *

;* ⑵ 0→休止 , 2→2/4拍 *

;* ⑶ 8→唱“5” , 4→ 1 拍 *

;* ⑷ 0→休止 , 2→2/4拍 *

;* ⑸ A→唱“7” , 4→ 1 拍 *

;* ⑹ 0→休止 , 2→2/4拍 *

;* ⑺ 8→唱“5” , 4→ 1 拍 *

;* ⑻ 0→休止 , 2→2/4拍 *

;* ⑼ D→唱“3`”, 8→ 2 拍 *

;* ⑽ 0→休止 , 4→ 1 拍 *

;* ⑾ 00H→樂曲結束 *

;***************************************************************

;

TABLE:

;【00】

DB 98H,02H,B4H,01H,94H,01H,68H,02H,94H,01H

DB 64H,01H,48H,02H,64H,01H,44H,01H,28H,02H

DB 64H,01H,94H,01H,B4H,01H,94H,01H,B4H,01H

DB 94H,01H,B4H,01H,D4H,01H,94H,01H,64H,01H

DB 44H,01H,64H,01H,98H,02H,01H,01H,00H

;【49】

DB A4H,02H,84H,02H,A4H,02H,84H,02H,D8H,04H

DB C8H,01H,01H,01H,01H,01H,00H

;【66】

DB 42H,52H,62H,72H,82H,92H,A2H,B2H,42H,52H

DB 62H,72H,82H,92H,A2H,B2H,00H

;【100】

DB 61H,81H,B1H,D1H,B1H,81H,61H,00H

;【108】

DB 11H,41H,61H,81H,61H,41H,11H,00H

;【136】

DB 24H,04H,34H,04H,44H,04H,54H,04H,64H,04H,44H,04H,64H,04H,94H,04H

DB 83H,01H,93H,01H,83H,01H,63H,01H,46H,02H,66H,02H

DB 91H,21H,91H,21H,91H,21H,91H,21H,94H,00H

;【174】

DB 94H,04H,A4H,04H,B4H,04H,C4H,04H,D4H,04H

DB B4H,04H,D8H,08H,C4H,04H,F4H,04H,CCH,00H

;

END
責任編輯 LK

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6076

    文章

    45494

    瀏覽量

    670256
  • 程序
    +關注

    關注

    117

    文章

    3846

    瀏覽量

    85225
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    單片機程序跑飛死機的幾種原因分享

    在使用單片機過程中,經常會出現程序運行一段時間后,不能夠正常相應的情況。一般分為軟件原因和硬件原因,其中硬件原因比較容易查,軟件原因就較為復雜。 軟件導致單片機死機的原因 1、指針異常 指針未
    發表于 01-21 07:34

    單片機里的程序運行方式

    我們想要理解單片機是如何運行程序的,我們首先需要了解單片機的組成,我們這里以80C51單片機為例來理解程序
    發表于 01-16 06:57

    單片機如何燒錄程序

    單片機如何燒錄程序
    發表于 01-08 07:04

    單片機程序的執行

    更快的SRAM中,以得到更快的執行速度。而對于,單片機而言工作頻率也就幾M,幾十M,從Flash中與從RAM中讀的差異可能并不明顯,不會成為程序執行的瓶頸。 而對于PC而言,Flash的速度太慢
    發表于 12-04 06:20

    為什么單片機還在用C語言編程?

    說起單片機我們就會想到C語言,單片機為什么還在用C語言編程?現在有很多很好用的高級語言,如VC、PYTHON、PHP等等,為什么這些語言不能用來編寫單片機
    發表于 11-28 07:37

    編寫簡單高效單片機匯編程序

    的行數多并不一定意味著效率低。 關鍵在于寫代碼時避免冗余,靈活運用模塊化設計和單片機資源。 最終程序既要高效運轉,又不失結構清晰。 匯編語言的難點在于編寫簡短而高效的代碼,需要理解單片機
    發表于 11-24 07:00

    單片機的誤區

    任何單片機程序編寫。根本就不要學去C語言的高級用法,即使你用C語言的最基礎的語句能夠完成程序編寫,底層運行的機制是學習重中之重! 等你積
    發表于 11-14 07:46

    單片機燒錄原理是怎樣的?輝芒微單片機燒錄程序詳細步驟講解

    燒錄(Programming)就是把 .hex/.bin 文件里的機器碼搬運進單片機片內 Flash 的過程。輝芒微(FMD)單片機內部有一塊 自舉 BootROM,上電時會先跑這段程序;如果檢測
    的頭像 發表于 09-17 16:14 ?2300次閱讀
    <b class='flag-5'>單片機</b>燒錄原理是怎樣的?輝芒微<b class='flag-5'>單片機</b>燒錄<b class='flag-5'>程序</b>詳細步驟講解

    【老法師】多核異構處理器中M核程序的啟動、編寫和仿真

    有很多研究單片機的小伙伴在面對多核異構處理器時,可能會對多核的啟動流程感到困惑——因為不熟悉GCC編程和GDB調試,所以也無法確定多核異構處理器的程序是否能像單片機那樣方便地編寫和仿真
    的頭像 發表于 08-13 09:05 ?3985次閱讀
    【老法師】多核異構處理器中M核<b class='flag-5'>程序</b>的啟動、<b class='flag-5'>編寫</b>和仿真

    單片機的儲存優點是什么

    單片機作為嵌入式系統的核心,其儲存系統是實現數據存儲與程序運行的關鍵部分。與獨立存儲芯片相比,單片機的儲存單元在集成度、功耗、可靠性等方面具備獨特優勢,這些優點使其能適應從消費電子到工業控制的多樣化
    的頭像 發表于 07-31 10:09 ?691次閱讀

    怎么測單片機系統頻率

    單片機系統頻率是指單片機工作時的時鐘頻率,它直接影響單片機的運行速度和處理能力,準確測量系統頻率對單片機應用開發、程序調試和性能優化具有重要
    的頭像 發表于 07-25 11:39 ?783次閱讀

    單片機怎么燒程序

    單片機程序是將編寫好的程序代碼寫入單片機內部存儲單元,讓單片機按照預設邏輯工作的過程,是
    的頭像 發表于 07-23 11:47 ?1258次閱讀

    STC單片機范例程序

    電子發燒友網站提供《STC單片機范例程序.zip》資料免費下載
    發表于 06-04 16:27 ?10次下載

    2.4寸TFT彩屏配套測試程序-51單片機

    如題,2.4寸TFT彩屏配套測試程序-51單片機。
    發表于 06-04 16:26 ?0次下載

    C51單片機及C語言知識點必備秘籍

    設計 26:單片機矩陣式鍵盤接口技術及 27:關于單片機的一些基本概念 28:實際案例實踐——單片機音樂程序設計 純分享貼,有需要可以直接下載附件獲取完整資料! (如果內容有
    發表于 05-15 14:00