久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7017|回復: 3
收起左側

51單片機八音盒源程序(匯編語言)

[復制鏈接]
ID:254677 發表于 2017-11-28 15:01 | 顯示全部樓層 |閱讀模式
八種聲音:友誼天長地久、梁祝、蘭花草、小草、千里之外、救護車、叮咚門鈴、嘀嘀聲。

單片機源程序如下:
  1. ;//*****************************************************
  2. ;文件名:  八音盒.asm
  3. ;描  述:  八音盒,P1選擇音樂,低電平有效,P3.0音樂輸出口。
  4. ;         本程序使用的寄存器有R1至R7,40H,41H,42H單元。
  5. ;         標號TAB1處為T0的定時常數數據表。         
  6. ;//*****************************************************

  7.         Speaker     BIT   P3.4
  8.         FLAG1       BIT   20H
  9.         FLAG2       BIT   21H

  10.         ORG        0000H
  11.         LJMP        Start
  12.         
  13.         ORG        0003H
  14.         LJMP    EXINT0

  15.         ORG        000BH
  16.         LJMP    INT_T0
  17.         ORG        0013H
  18.         LJMP    EXINT1

  19.         ORG        001BH
  20.         DJNZ        R4,GOON                ;中斷次數不夠,繼續。
  21.         CLR     ET1                ;持續時間到,該音符停止。
  22.         CLR     ET0  
  23.         SJMP        RE01
  24. GOON:        MOV        TL1,40H
  25.         MOV        TH1,41H
  26. RE01:        RETI

  27. INT_T0: MOV     C,FLAG1
  28.         JC      TORET  
  29.         DJNZ    R0,TORET
  30.         MOV     R0,#6
  31.         MOV     C,FLAG2
  32.         JC      TOADD  
  33.         SJMP    TOSUB
  34. TOADD:  MOV     A,R3        
  35.         CJNE    A,#0FEH,ADD1
  36.         CLR     FLAG2
  37.         SJMP    TORET
  38. ADD1:  MOV     A,R2
  39.         ADD     A,#1
  40.         MOV     R2,A
  41.         MOV     A,R3
  42.         ADDC    A,#0
  43.         MOV     R3,A
  44.         SJMP    TORET
  45. TOSUB:  MOV     A,R3      
  46.         CJNE    A,#0FBH,SUB1
  47.         SETB    FLAG2      
  48.         SJMP    TORET   
  49. SUB1:  MOV     A,R2
  50.         SUBB    A,#1
  51.         MOV     R2,A
  52.         MOV     A,R3
  53.         SUBB    A,#0
  54.         MOV     R3,A
  55. TORET:        MOV        TL0,R2
  56.         MOV        TH0,R3       
  57.         CPL        Speaker         ;音樂輸出口.
  58.         RETI



  59.         ORG        0080H
  60. EXINT0:
  61.         CLR     ET0
  62.         CLR     ET1
  63.         CLR     A
  64.         PUSH    ACC
  65.         PUSH    ACC
  66.         RETI
  67. EXINT1:
  68.         CLR     ET0
  69.         CLR     ET1
  70.         CLR     A
  71.         PUSH    ACC
  72.         PUSH    ACC
  73.         RETI
  74. Start:       
  75.         mov     TCON, #05h      ; 外部中斷0下降沿觸發
  76.         SETB    EX0             ; 打開外部中斷允許位(EX0)及總中斷允許位(EA)
  77.         SETB    EX1
  78.         SETB    EA
  79.   
  80.         MOV     A,P1
  81.         JNB     ACC.0,Voice0
  82.         JNB     ACC.1,Voice1
  83.         JNB     ACC.2,Voice2
  84.         JNB     ACC.3,Voice3
  85.         JNB     ACC.4,Voice4
  86.         JNB     ACC.5,Voice5
  87.         JNB     ACC.6,Voice6
  88.         JNB     ACC.7,Voice7
  89.         Sjmp    Start

  90. Voice0: MOV        DPTR,#tab_0       ;樂曲數據表的表頭
  91.         Sjmp    Main
  92. Voice1: MOV        DPTR,#tab_1       ;樂曲數據表的表頭
  93.         Sjmp    Main  
  94. Voice2: MOV        DPTR,#tab_2       ;樂曲數據表的表頭
  95.         Sjmp    Main      
  96. Voice3: MOV        DPTR,#tab_3       ;樂曲數據表的表頭
  97.         Sjmp    Main
  98. Voice4: LJMP    Main2
  99.         ;MOV        DPTR,#tab_4       ;樂曲數據表的表頭
  100.         ;Sjmp    Main     
  101. Voice5: MOV        DPTR,#tab_5       ;樂曲數據表的表頭
  102.         Sjmp    Main  
  103. Voice6: MOV        DPTR,#tab_6       ;樂曲數據表的表頭
  104.         Sjmp    Main      
  105. Voice7: MOV        DPTR,#tab_7       ;樂曲數據表的表頭

  106. Main:        MOV        TMOD,#11H
  107.         MOV        IP,#02H
  108.         MOV        41H,#4CH        ;T1初值放在41H,40H單元
  109.         MOV        40H,#0B0H        ;值越大,演奏越快
  110.         SETB        EA
  111.         SETB    FLAG1
  112.         CLR        A
  113.         MOV        R1,A                ;R1作為音符指針
  114. L1:        MOVC        A,@A+DPTR
  115.         INC        R1                ;指向音符的拍數字節
  116.         MOV        R6,A                ;音級字節暫存入R6
  117.         JZ        L3
  118.         ACALL        TONE               
  119.         MOV        TH0,R3
  120.         MOV        TL0,R2
  121.         SETB        TR0
  122.         SETB        ET0
  123.         MOV        A,R1
  124.         MOVC        A,@A+DPTR
  125.         INC        R1
  126.         CJNE        R1,#00H,L2
  127.         MOV        DPTR,#0400H     ;表指針溢出,更改表頭
  128. L2:        ACALL        LONG                ;
  129.         MOV        A,R1
  130.         AJMP        L1                ;
  131. L3:        MOV        A,R1
  132.         MOVC        A,@A+DPTR
  133.         MOV        R7,A
  134.         INC        R1
  135.         CJNE        R1,#00H,L4
  136.         MOV        DPTR,#0400H
  137. L4:        ACALL        LONG                ;
  138.         MOV        A,R1
  139.         CJNE        R7,#0FH,L1
  140.         LJMP        Main            ;重復播放


  141.         ORG        0200H
  142. TONE:        MOV        A,R6                ;取出音級字節
  143.         RL        A                ;乘2,定時常數為雙字節
  144.         MOV        42H,A                ;暫存入42H單元
  145.         ADD        A,#05H                ;距離數表有7個字節,使查表正確
  146.         MOVC        A,@A+PC                ;取出TH0
  147.         MOV        R3,A
  148.         MOV        A,42H               
  149.         INC        A
  150.         MOVC        A,@A+PC                ;取出TL0
  151.         MOV        R2,A                ;
  152.         RET
  153.        
  154. TAB1:        DB        0F8H,8EH,0F8H,0F9H,0F9H,5EH       
  155.         DB        0F9H,0BEH,0FAH,18H,0FAH,6DH       
  156.         DB        0FAH,0BEH,0FBH,09H,0FBH,51H       
  157.         DB        0FBH,95H,0FBH,0D4H,0FCH,11H       
  158.         DB        0FCH,49H,0FCH,7FH,0FCH,0B2H       
  159.         DB        0FCH,0E1H,0FDH,0FH,0FDH,39H
  160.         DB        0FDH,61H,0FDH,87H,0FDH,0ABH
  161.         DB        0FDH,0CDH,0FDH,0EDH,0FEH,0BH
  162.         DB        0FEH,27H,0FEH,42H,0FEH,5BH
  163.         DB        0FEH,73H,0FEH,8AH,0FEH,9FH
  164.         DB        0FEH,0B3H,0FEH,0C6H,0FEH,0D8H
  165.         DB        0FEH,0E9H,0FEH,0F9H,0FFH,08H
  166.         DB        0FFH,16H,0FFH,24H,0FFH,30H
  167.         DB        0FFH,3CH,0FFH,47H,0FFH,52H
  168.         DB        0FFH,5CH,0FFH,66H,0FFH,6FH
  169.         DB        0FFH,77H,0FFH,7FH,0FFH,86H

  170.         ORG        0300H                ;音長子程序
  171. LONG:        ADD        A,#0FH                ;使查表正確
  172.         MOVC        A,@A+PC                ;取出定時器T1應中斷的次數
  173.         MOV        R4,A                ;T1應中斷的次數存入R4中
  174.         MOV        TH1,41H
  175.         MOV        TL1,40H
  176.         SETB        TR1
  177.         SETB        ET1
  178.         CJNE        R4,#00H,$       
  179.         RET
  180.                                    ;音長子程序結束
  181. TAB2:        DB        01,02,04,06                ;應中斷的次數
  182.         DB        08,10,12,14
  183.         DB        16,20,24,28
  184.         DB        32,40,48,64

  185. Main2:  CLR     FLAG1
  186.           MOV        TMOD,#01H
  187.         MOV        R3,#0FCH        ; T1初值放在41H,40H單元
  188.         MOV        R2,#000H        ;值越大,演奏越快
  189.         MOV        TL0,R2
  190.         MOV        TH0,R3       
  191.         SETB    FLAG2
  192.         SETB        ET0
  193.         SETB        EA       
  194.         SETB        TR0
  195.         MOV     R0,#6
  196.         sjmp    $

  197. TAB_0:       ;《友誼天長地久》     
  198.         DB        00H,04H,00H,04H,08H,04H,0DH,08H,0DH,04H
  199.         DB        0DH,08H,11H,04H,0FH,08H,0DH,04H
  200.         DB        0FH,08H,11H,02H,0FH,02H,0DH,08H,0DH,04H
  201.         DB        11H,08H,14H,04H,16H,0DH,16H,04H
  202.        

  203. TAB_4:    ;《千里之外》
  204. ……………………

  205. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
八音盒.zip (2.46 KB, 下載次數: 66)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:273535 發表于 2018-1-9 09:59 | 顯示全部樓層
有Proteus仿真圖嗎
回復

使用道具 舉報

ID:1069211 發表于 2023-3-31 11:08 | 顯示全部樓層
有仿真圖卡
回復

使用道具 舉報

ID:1064915 發表于 2023-3-31 19:28 | 顯示全部樓層
有keil c的嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 男女视频91| 国产精品视频一二三区 | 国产精品99久久久久久宅男 | 中文字幕国产一区 | 国产精品无码久久久久 | 99综合网 | 天天操夜夜操 | 国产欧美日韩久久久 | 欧美视频一级 | 亚洲精品乱码久久久久久久久 | 亚洲一区二区三区四区五区中文 | 欧美在线激情 | 天堂中文字幕av | 成人久久久| 岛国毛片在线观看 | 99视频在线免费观看 | 国产精品久久久一区二区三区 | 成人av播放| 精品国产一区二区三区免费 | 国产精品久久亚洲7777 | 成人午夜免费福利视频 | 欧美在线精品一区 | 国产激情第一页 | 又黄又爽的网站 | 国产精品久久二区 | 日韩精品免费播放 | 嫩草国产 | 伊人网伊人 | 久久国产精品视频 | 天天色天天色 | 中文字幕精品一区 | 婷婷综合 | 三级av免费 | 日韩欧美在线免费观看 | 国产精品无 | 99爱国产 | 色橹橹欧美在线观看视频高清 | 鸡毛片| 毛片网在线观看 | 欧美中文字幕一区二区 | 亚洲精品久久久久久国产精华液 |