<dfn id="wmg72"><strong id="wmg72"></strong></dfn>

<thead id="wmg72"><b id="wmg72"><em id="wmg72"></em></b></thead>
    <ul id="wmg72"><b id="wmg72"></b></ul>
    <th id="wmg72"></th>
    <dfn id="wmg72"><source id="wmg72"></source></dfn>

        設為首頁收藏本站
        開啟輔助訪問 切換到寬版
        請 登錄 后使用快捷導航
        沒有帳號?立即注冊

         找回密碼
         立即注冊

        QQ登錄

        只需一步,快速開始

        快捷導航
        • 論壇
        • 問答區(qū)
        • 單片機教程
        • 單片機DIY
        • 電子DIY
        • 幫助

        熱門: 51單片機 | 24小時必答區(qū) | 單片機教程 | 單片機DIY制作 | STM32 | Cortex M3 | 模數電子 | 電子DIY制作 | 音響/功放 | 拆機樂園 | Arduino | 嵌入式OS | 程序設計

        帖子
        • 本版
        • 帖子
        • 群組
        • 用戶
        »論壇 › 電子技術分類討論區(qū) › 資料共享 › 《小星星》單片機匯編程序
        返回列表 發(fā)新帖
        查看: 5364|回復: 0
        打印 上一主題 下一主題
        收起左側

        《小星星》單片機匯編程序

        [復制鏈接]
        ID:433984 當前離線
        積分
        44
        查看詳細資料
        跳轉到指定樓層
        樓主
        ID:433984 發(fā)表于 2018-11-27 10:19 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
        1. 只有音樂發(fā)聲匯編程序,沒有加入LED燈,供參考。數據代碼已改為小星星發(fā)聲
        2. ;**********************************************
        3. ORG 0000H
        4. SJMP MAIN
        5. ORG 0BH
        6. AJMP TIME0

        7. ;*************主程序************************

        8. MAIN:        MOV SP,#60
        9. MOV TMOD,#01H        ;T0定時工作方式
        10. MOV IE,#82H        ;CPU 中斷允許,T0中斷允許

        11. START0:        MOV 30H,#00H        ;TABLE 相對地址指針
        12. NEXT:        MOV A,30H
        13.         MOV DPTR,#TABLE        ;到TABLE處取 簡譜碼  節(jié)拍 碼
        14. MOVC A,@A+DPTR
        15. MOV R2,A        ;取到的簡譜碼  節(jié)拍碼 暫存于R2中

        16. JZ ENDF        ;取到 00 結束

        17. ANL A,#0FH        ;否,取低四位 節(jié)拍 碼
        18. MOV R5,A        ;將節(jié)拍碼存于R5中
        19. MOV A,R2        ;簡譜碼  節(jié)拍 碼 給A
        20. SWAP A        ;高4位 與 低4位 交換
        21. ANL A,#0FH        ;取簡譜 碼
        22. JNZ SING        ;取到的簡譜 碼不是0,則去發(fā)聲
        23. CLR TR0        ;取到0 則不發(fā)聲
        24. SJMP DLY1        ;節(jié)拍延時子程序( 隨節(jié)拍碼變化,延時時間不同)

        25. ;---------------發(fā)聲-----------------------
        26. SING:        DEC A        ;取到的簡譜碼減1
        27. ;(簡譜碼計數值16位數據存儲首地址從TABLE1 《相對地址》0處開始放起,所以要減1)
        28. MOV 22H,A        ;存入(22H)中
        29. RL A        ;乘2 因為取的數據占兩字節(jié)(16位)
        30. ;所以指針增加量要乘2

        31. MOV DPTR,#TABLE1
        32. ;...........簡譜碼轉換為相應定時器16位計數值.............
        33. MOVC A,@A+DPTR        ;到TABLE1取相應的高字節(jié)計數值
        34. MOV TH0,A        ;高字節(jié)計數值存入TH0和(21H)中
        35. MOV 21H,A
        36. MOV A,22H        ;減1的簡譜碼給A
        37. RL A        ;乘2 因為取的數據占兩字節(jié)(16位)
        38. ;所以指針增加量要乘2
        39. INC A        ;A 增加 取下一個字節(jié)計數值

        40. ;...........簡譜碼轉換為相應定時器16位計數值.............
        41. MOVC A,@A+DPTR        ;到TABLE1取相應的低字節(jié)計數值
        42. MOV TL0,A        ;低字節(jié)計數值存入TL0和(20H)中
        43. MOV 20H,A
        44. SETB TR0        ;啟動T0定時器讓喇叭發(fā)出不同頻率聲音

        45. ;---------------節(jié)拍延時-------------------
        46. DLY1:        ACALL DELAY        ;基本單位時間為1/4拍 187ms
        47. INC 30H        ;取下一個簡譜碼  節(jié)拍 碼
        48. SJMP NEXT

        49. ;---------------歌放完結束---------------
        50. ENDF:        CLR TR0        ;關閉T0定時器
        51. AJMP START0        ;反復循環(huán)


        52. ;****T0中斷子程序(用來驅動喇叭發(fā)出不同頻率聲音)**************
        53. TIME0:        PUSH ACC
        54. PUSH PSW
        55. MOV TL0,20H        ;重裝計數值
        56. MOV TH0,21H
        57. CPL P3.7        ;驅動發(fā)聲
        58. POP PSW
        59. POP ACC
        60. RETI


        61. ;******************節(jié)拍延時187ms****************************
        62. DELAY: MOV R7,#187        ;187ms延時子程序
        63. DLY2:        MOV R4,#02
        64. DLY3:        MOV R3,#248
        65. DJNZ R3,$
        66. DJNZ R4,DLY3
        67. DJNZ R7,DLY2
        68. DJNZ R5,DELAY
        69. RET


        70. ;*******音符T值表(用來讓定時器發(fā)出不同的頻率)**DW 表示一個 計數值 占兩個字節(jié)存儲單元***************

        71. TABLE1:        DW 64260,64400,64524,64580,64684 ;低音SO 低音LA 低音SI  /中音DO 中音RE
        72. DW 64777,64820,64898,64968,65030 ;中音MI 中音FA 中音SO 中音LA 中音SI
        73. DW 65058,65110,65157,65178,65217 ;高音DO 高音RE 高音MI 高音FA 高音SO


        74. ;*********簡譜碼  節(jié)拍碼(高4位簡譜碼 ,低4位節(jié)拍碼)*************

        75. TABLE:        DB 44H,44H,84H,84H          ; 1 1 5 5        
        76. DB 094H,094H,88h                           ; 6 6 5 -        

        77. DB 74H,74H,63H,63H                ;  4 4 3 3
        78. DB 52H,52H,48h                               ;  2 2 1-

        79. DB 84H,84H,74H,74H                        ; 5 5 4 4
        80. DB 64H,64H,58h                         ; 3 3 2-

        81. DB 84H,84H,74H,74H                        ; 5 5 4 4
        82. DB 64H,64H,58h                                ; 3 3 2-

        83. DB 44H,44H,84H,84H                 ; 1 1 5 5         
        84. DB 094H,094H,88h                     ; 6 6 5 -   

        85. DB 74H,74H,63H,63H                 ;  4 4 3 3
        86. DB 52H,52H,48h                         ;  2 2 1-

        87. END
        復制代碼


        分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
        收藏收藏0 分享淘帖0 頂頂0 踩踩0
        回復

        使用道具 舉報

        返回列表 發(fā)新帖
        高級模式
        B Color Image Link Quote Code Smilies
        您需要登錄后才可以回帖 登錄 | 立即注冊

        本版積分規(guī)則

        手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

        Powered by 單片機教程網

        快速回復 返回頂部 返回列表

        感谢您访问我们的网站,您可能还对以下资源感兴趣:

        国内精品视频在线播放不卡
        少妇厨房愉情理9伦片视频 欧美麻豆久久久久久中文 午夜dv内射一区二区 久久久久国产精品人妻