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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1446|回復(fù): 0
收起左側(cè)

電子音調(diào)發(fā)生器 單片機(jī)匯編語言程序

[復(fù)制鏈接]
ID:937420 發(fā)表于 2021-6-15 08:27 | 顯示全部樓層 |閱讀模式
ORG 0000H
        LJMP KEYP0
KEYP0: MOV R0,#00H   
      CLR TR0
      SETB P2.4     ;關(guān)蜂鳴器
     SETB P2.3                           ;關(guān)數(shù)碼管
WU:  MOV R0,P3  ;掃描鍵盤輸入
    CJNE R0,#0FFH,KEYPO1         ;有輸入時(shí)跳轉(zhuǎn)
          JMP WU
KEYPO1:CJNE R0,#0FBH,KEYPO2  ;輸入1音,非1音跳轉(zhuǎn)
  SETB P2.4     ;關(guān)閉蜂鳴器
    MOV R3,#200
MAIN01:MOV TMOD,#01H    ;初始化,定時(shí)器0,工作方式1
       MOV TL0,#21H     ;寫入計(jì)數(shù)初值
       MOV TH0,#0F9H
       SETB TR0         ;啟動(dòng)計(jì)數(shù)
                 
WAIT1:JNB TF0,WAIT1     
     CLR TF0         
     CPL P2.4             ;蜂鳴器響
          CLR P2.3             ;數(shù)碼管顯示1
          MOV A,#11111001B
                 MOV P0,A
     DJNZ R3,MAIN01
          LJMP KEYP0         ;返回程序KEYP0
         
KEYPO2:CJNE R0,#0F7H,KEYPO3  ; 輸入2音,非2音跳轉(zhuǎn)
SETB P2.4        ;蜂鳴器置于高電平
        MOV R3,#200  
MAIN02:MOV TMOD,#01H   
       MOV TL0,#0E1H         ;寫入計(jì)數(shù)初值
       MOV TH0,#0F9H
       SETB TR0
WAIT2:JNB TF0,WAIT2
     CLR TF0
     CPL P2.4            ;蜂鳴器響
          CLR P2.3            ;數(shù)碼管顯示2
          MOV A,#10100100B
                 MOV P0,A
     DJNZ R3,MAIN02
        LJMP KEYP0

KEYPO3:CJNE R0,#0EFH,KEYPO4  ; 輸入3音,非3音跳轉(zhuǎn)
SETB P2.4         ;蜂鳴器置于高電平
        MOV R3,#200
MAIN03:MOV TMOD,#01H      
       MOV TL0,#08CH
       MOV TH0,#0FAH
       SETB TR0
WAIT3:JNB TF0,WAIT3
     CLR TF0
     CPL P2.4
          CLR P2.3
          MOV A,#10110000B
                 MOV P0,A
     DJNZ R3,MAIN03
        LJMP KEYP0

KEYPO4:
CJNE R0,#0DFH,KEYPO5           ; 輸入4音,非4音跳轉(zhuǎn)
SETB P2.4
        MOV R3,#200
MAIN04:MOV TMOD,#01H            
       MOV TL0,#0D8H
       MOV TH0,#0FAH
       SETB TR0
WAIT4:JNB TF0,WAIT4
     CLR TF0
     CPL P2.4
          CLR P2.3
          MOV A,#10011001B
                 MOV P0,A
     DJNZ R3,MAIN04
        LJMP KEYP0

KEYPO5:        CJNE R0,#0F3H,KEYPO6        ; 輸入5音,非5音跳轉(zhuǎn)
SETB P2.4
        MOV R3,#200   
MAIN05:MOV TMOD,#01H           
       MOV TL0,#068H
       MOV TH0,#0FBH
       SETB TR0
WAIT5:JNB TF0,WAIT5
     CLR TF0
     CPL P2.4
          CLR P2.3
          MOV A,#10010010B
                 MOV P0,A
     DJNZ R3,MAIN05
        LJMP KEYP0

KEYPO6:CJNE R0,#0E7H,KEYPO7        ; 輸入6音,非6音跳轉(zhuǎn)
SETB P2.4
        MOV R3,#200            
MAIN06:MOV TMOD,#01H
       MOV TL0,#0E9H
       MOV TH0,#0FBH
       SETB TR0
WAIT6:JNB TF0,WAIT6
     CLR TF0
     CPL P2.4
          CLR P2.3
          MOV A,#10000010B
                 MOV P0,A
     DJNZ R3,MAIN06
        LJMP KEYP0

KEYPO7:CJNE R0,#0CFH,KEYPO8       ; 輸入7音,非7音跳轉(zhuǎn)
SETB P2.4
        MOV R3,#200         
MAIN07:MOV TMOD,#01H
       MOV TL0,#05BH
       MOV TH0,#0FCH
       SETB TR0
WAIT7:JNB TF0,WAIT7
     CLR TF0
     CPL P2.4
          CLR P2.3
          MOV A,#11111000B
                 MOV P0,A
     DJNZ R3,MAIN07
        LJMP KEYP0

KEYPO8:CJNE R0,#0DBH,KEYPO9      ; 輸入i音,非i音跳轉(zhuǎn)
       SETB P2.4
           MOV R3,#200      
MAIN08:MOV TMOD,#01H
       MOV TL0,#08FH
       MOV TH0,#0FCH
       SETB TR0
WAIT8:JNB TF0,WAIT8
     CLR TF0
     CPL P2.4
          CLR P2.3
          MOV A,#10000000B
                 MOV P0,A
     DJNZ R3,MAIN08
        LJMP KEYP0
KEYPO9:CJNE R0,#0EBH,KEYPO10    ;跳轉(zhuǎn)到第一首歌程序
       LJMP MUSTART1
KEYPO10:CJNE R0,#0D7H,JIELI     ;跳轉(zhuǎn)到第二首歌程序
       LJMP MUSTART2
JIELI:JMP KEYP0                 ;返回主程序

MUSTART1:                      ;歌曲1的播放程序
     MOV R0,#00H               ;節(jié)拍表指針置零
     MOV R1,#00H               ;音符表指針置零
RTAB:MOV A,R0
     MOV DPTR,#RYTH
     MOVC A,@A+DPTR            ;查表法將一個(gè)節(jié)拍數(shù)據(jù)取出放R2計(jì)數(shù)器中
     MOV R2,A
TTAB:MOV A,R1
     MOV DPTR,#TONE
     MOVC A,@A+DPTR
     MOV R3,A                  ;取出音符表高8位
     INC R1                    ;指針加1
     MOV A,R1
     MOV DPTR,#TONE
     MOVC A,@A+DPTR
     MOV R4,A                  ;取出低8位
     SETB P2.4                 ;準(zhǔn)備輸出相應(yīng)音調(diào)的方波,關(guān)閉蜂鳴器
LOOP:MOV R5,#3BH
MAIN:MOV TMOD,#01H             ;定時(shí)器0,工作方式1
     MOV TL0,R4                ;傳入音符,作為及時(shí)T0的初始值
     MOV TH0,R3
     SETB TR0                  ;允許定時(shí)器0計(jì)時(shí)
WAIT:JNB TF0,WAIT
     CLR TF0
     CPL P2.4
MAYA:JB P3.2,MAYB             ;判斷P3.2口是否有為1
     JB P3.4,MAYB             ;判斷P3.4口是否有為1
     LJMP RA                  ;P3.4口為0則跳轉(zhuǎn)到程序RA
MAYB:JB P3.3,JIELI            ;判斷P3.3口是否有為1
     JB P3.5,JIELI            ;判斷P3.5口是否有為1
     LJMP MUSTART2            ;P3.5口為0則放第二首歌
RA:  DJNZ R5,MAIN             ;無打斷則繼續(xù)放第一首歌
     DJNZ R2,LOOP
INC R0                        ;兩個(gè)表的指針都加1
INC R1
CJNE R1,#88,RTAB              ;判斷是否取完
LJMP KEYP0
TONE:
DB 0FBH,68H,0FDH,6EH,0FDH,45H,0FCH,0EFH,0FCH,8FH,0FCH,8FH,0FCH,8FH,0FCH,5BH,0FCH,8FH
DB 0FCH,0EFH,0FDH,45H,0FBH,68H,0FBH,68H,0FCH,8FH,0FCH,5BH,0FBH,0E9H,0FBH,68H,0FBH,68H
DB 0FAH,0DBH,0FAH,8CH,0F9H,21H,0FAH,8CH,0FAH,0D8H,0FBH,68H,0FBH,68H,0FBH,68H,0FBH,68H
DB 0FBH,0E9H,0FBH,0E9H,0FBH,68H,0FBH,0E9H,0FCH,5BH,0FAH,8CH,0FCH,8FH,0FCH,8FH,0FCH,5BH
DB 0FCH,8FH,0FCH,0EFH,0FCH,0EFH,0FCH,0EFH,0FCH,8FH,0FDH,45H,0FDH,6EH,0FCH,0EFH
RYTH:
DB 04,04,04,04,04,04,04,04,04,04
DB 04,05,04,04,04,04,04,04,04,04
DB 04,04,04,06,04,04,04,07,04,04
DB 04,04,04,06,04,04,04,07,04,04
DB 04,04,04,04
MUSTART2:         
     MOV R0,#00H
     MOV R1,#00H

RTAB2:
     MOV A,R1
     MOV DPTR,#TABLE1
     MOVC A,@A+DPTR
     MOV R2,A
TTAB2: MOV A,R1
     MOV DPTR,#TONE2
     MOVC A,@A+DPTR
     MOV R3,A
     INC R1
          MOV A,R1
          MOV DPTR,#TONE2
          MOVC A,@A+DPTR
          MOV R4,A
     SETB P2.4
LOOP2: MOV R5,#9BH
MAIN2:
      MOV TMOD,#01H
     MOV TL0,R4
     MOV TH0,R3
     SETB TR0
WAITR:JNB TF0,WAITR
     CLR TF0
     CPL P2.4
MAYA1:JB P3.3,MAYB1
      JB P3.5,MAYB1
      LJMP RB
MAYB1:JB P3.2,BACK
      JB P3.4,BACK
      LJMP MUSTART1
BACK:LJMP JIELI
RB:  DJNZ R5,MAIN2
     DJNZ R2,LOOP2

INC R0
INC R1
CJNE R1,#64,RTAB2
LJMP KEYP0
TONE2:
DB 0FBH,68H,0FDH,6EH,0FDH,45H,0FCH,0EFH,0FCH,8FH,0FCH,8FH,0FCH,8FH,0FCH,5BH,0FCH,8FH
DB 0FCH,0EFH,0FDH,45H,0FBH,68H,0FBH,68H,0FCH,8FH,0FCH,5BH,0FBH,0E9H,0FBH,68H,0FBH,68H
DB 0FAH,0DBH,0FAH,8CH,0F9H,21H,0FAH,8CH,0FAH,0D8H,0FBH,68H,0FBH,68H,0FBH,68H,0FBH,68H
DB 0FBH,0E9H,0FBH,0E9H,0FBH,68H,0FBH,0E9H,0FCH,5BH,0FAH,8CH,0FCH,8FH,0FCH,8FH,0FCH,5BH
DB 0FCH,8FH,0FCH,0EFH,0FCH,0EFH,0FCH,0EFH,0FCH,8FH,0FDH,45H,0FDH,6EH,0FCH,0EFH
TABLE1:
DB 04,04,04,04,04,04,04,04,04,04
DB 04,05,04,04,04,04,04,04,04,04
DB 04,04,04,06,04,04,04,07,04,04
DB 04,04,04,06,04,04,04,07,04,04
DB 04,04,04,04

END


回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲人成在线观看 | 色婷婷久久久亚洲一区二区三区 | 国产一区二区视频免费在线观看 | 成人精品一区二区 | 日韩欧美在线不卡 | 欧美成人综合 | 成人在线观看免费爱爱 | 夜夜干夜夜操 | 久久久精品国产 | 精品熟人一区二区三区四区 | 一级免费视频 | 日本在线一二 | 精品一区二区三区91 | 国产色爽| 九九九视频 | 亚洲精品九九 | 国产伊人精品 | 午夜成人免费电影 | 日韩午夜网站 | 精品久久久久久久久久久久 | 久久亚洲国产精品 | 国产精品免费一区二区三区四区 | 欧美日韩综合精品 | 中文字幕91 | 在线播放国产一区二区三区 | 国产精品视频一二三区 | 国产视频久久久 | 精品小视频 | 热久久久| 日韩av免费在线观看 | 日本三级网址 | 日韩不卡一二区 | 欧美精品在欧美一区二区少妇 | 国产成人精品免费视频大全最热 | 国产我和子的乱视频网站 | 日韩一区二区黄色片 | 亚洲一区二区av在线 | 欧美精品在线播放 | 欧美日本韩国一区二区 | 337p日本欧洲亚洲大胆精蜜臀 | 精品一区二区三区免费毛片 |