⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 11.txt

📁 AT89C51单片机 音乐门铃的程序 共六首音乐
💻 TXT
字号:
ORG 00H             ;初始化程序
                AJMP START
                ORG 0BH
                LJMP TIM0
START:          MOV TMOD,#00000001B             ;主程序
  MOV IE,#10000010B
  JB P3.5, $              ;第一次有按键
  CALL DELAY1
  JNB P3.5, $
  MOV 31H,#00              ;按键次数指针赋初值
START0:         MOV 30H,#SONG1      ;取简谱码指针(第一首)
NEXT:    MOV A,30H
  MOV DPTR,#TABLE
  MOVC A,@A+DPTR
  MOV R2,A
  JZ END0        ;检查简谱码是否已结束
  ANL A,#0FH       ;取节拍码
  MOV R5,A
  MOV A,R2 
  SWAP A
  ANL A,#0FH       ;取音符码
  JNZ SING              ;是否为0,是0不发音
  CLR TR0
  AJMP D1
SING:           DEC A       ;因0不列入
  MOV 22H,A
  RL A
  MOV DPTR,#TABLE      ;至TABLE取定时器计数值
  MOVC A,@A+DPTR 
  MOV  TH0,A 
  MOV 21H,A
  MOV A,22H
  RL A
  INC A
  MOVC A,@A+DPTR
  MOV TL0,A
  MOV 20H,A
  SETB TR0
D1:  ACALL DELAY
  INC     30H
  AJMP NEXT        ;取下一简谱码
END0:         CLR TR0
  MOV A,31H        ;载入计次指针
  XRL A,#00H
  JNZ END1
  JB P3.5,$
  CALL DELAY1
  JNB P3.5,$
  INC 31H
  MOV 30H,#SONG2       ;按第二次放第二首歌
  JMP NEXT
END1:
  MOV A,31H
  XRL A,#01H
  JNZ END2
  JB P3.5,$
  CALL DELAY1
  JNB P3.5,$ 
  INC 31H
  MOV 30H,#SONG3         ;按第三次放第三首歌
  JMP NEXT
END2:
  MOV A,31H
  XRL A,#02H
  JNZ END3
  JB P3.5,$
  CALL DELAY1
  JNB P3.5,$ 
  INC 31H
  MOV 30H,#SONG4   ;按第四次放第四首歌
  JMP NEXT
END3:
  MOV A,31H
  XRL A,#03H
  JNZ END4
  JB P3.5,$
  CALL DELAY1
  JNB P3.5,$ 
  INC 31H
  MOV 30H,#SONG5   ;按第五次放第五首歌
  JMP NEXT
END4:
  MOV A,31H
  XRL A,#04H
  JNZ END5
  JB P3.5,$
  CALL DELAY1
  JNB P3.5,$ 
  INC 31H
  MOV 30H,#SONG6   ;按第六次次放第六首歌
  JMP NEXT
END5:
  JMP START

TIM0:         PUSH ACC    ;定时器T0子程序
  PUSH PSW
  SETB RS0
  CLR RS1
  MOV TL0,20H
  MOV TH0,21H
  CPL P2.7
  POP PSW
  POP ACC
  RETI
DELAY:         ;延时子程序
  MOV R7,#02
D2:  MOV R4,#125
D3:  MOV R3,#248
  DJNZ R3,$
  DJNZ  R4,D3
  DJNZ R7,D2
  DJNZ R5,DELAY
  RET
DELAY1:
  MOV R4,#20
D4:  MOV R3,#248
  DJNZ R3,$
  DJNZ R4,D4
  RET
  ORG 300H
  ;定时常数T值表
TABLE:
  DW 64260,64400,64524,64580
  DW 64684,64777,64820,64898
  DW 64968,65030,65058,65110
  DW 65157,65178,65217
  ;音符节拍码数据表

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -