c51单片机蜂鸣器汇编语言,51单片机控制蜂鸣器播放5首歌曲汇编程序

更新时间:2023-05-27 23:03:11 阅读: 评论:0

c51单⽚机蜂鸣器汇编语⾔,51单⽚机控制蜂鸣器播放5⾸歌曲
汇编程序
;机器⼈代码:(外部中断⽤来接红外传感器的)
ORG 0000H
JMP INIT
ORG 0003H
JMP INT_0
ORG 000BH
JMP INT_T
ORG 0023H
JMP INT_S
;
-------------------------------------
FLAG_F EQU 01H ;功能选择,0为播放,1为演奏
FLAG_L EQU 02H ;指⽰灯选择,0指⽰灯亮或1亮
FLAG_P EQU 03H ;是否播放标志,0停⽌,1播放
FLAG_CH EQU 04H ;演奏时是否换⾳符,1有效一清二白
FLAG_LAST EQU 05H ;播放时是否到最后64分⾳符
FLAG_PRESS EQU 06H ;是否有演奏按键
FLAG_GO EQU 07H ;是否⾏⾛标志位(1为⾏⾛,0为停⽌)
STAT_0 EQU 08H ;4位⾏⾛状态,对应P1.0--P1.3
STAT_1 EQU 09H
STAT_2 EQU 0AH
联合发文落款
STAT_3 EQU 0BH
FLAG_MUTE EQU 0CH
酸奶机做米酒
PERIOD_H  EQU 30H ;⾳长(定时器⾼位)
PERIOD_L  EQU 31H ;⾳长(定时器低位)
COUNTER    EQU 32H ;定时器计数(设定定时周期的倍数)
CU_COUNTER EQU 41H ;当前定时器计数
TONE      EQU 33H ;⾳⾼
SPEED      EQU 34H ;乐曲速度
D_1        EQU 35H
D_2        EQU 36H
P_2        EQU 38H
NUM        EQU 39H ;乐曲的位置(第⼏⾸)
POSITION  EQU 40H ;乐曲中⾳符的位置
TAB_H      EQU 42H ;当前乐曲的⾳长表⾸地址⾼⼋位
TAB_L      EQU 43H ;当前乐曲的⾳长表⾸地址低⼋位
TAB_TONE_H EQU 44H ;当前乐曲的⾳⾼表⾸地址⾼⼋位
TAB_TONE_L EQU 45H ;当前乐曲的⾳⾼表⾸地址低⼋位
THIS_NUM  EQU 46H ;存储当前按键号
PRE_NUM    EQU 47H ;存储上次按键号
COUNTER_1  EQU 48H ;判断是否为最后64分⾳符⽤,其值等于COUNTER-1 D_L1      EQU 49H
D_L2      EQU 4AH
D_L3      EQU 4BH
P_L1      EQU 4CH
P_L2      EQU 4DH
TAB_1      EQU 4EH ;查表时的⾼低字节序号存储
TAB_2      EQU 4FH
CMD        EQU 50H
;⾏⾛命令存储 (1:功能选择、2:加速、3:减速、4:原速、5:停⽌/前进、
;(6:左转、7:右转、8:朝前) )
COUNTER_LOOP EQU 51H ;定时器循环计数
; STATUS EQU 52H ;⾏⾛状态寄存
PERIOD_TEMP EQU 53H
;*****************主程序*************************
ORG 0030H
INIT: ; CALL LONG
CLR P3.7
; SETB P3.7
MOV SP, #54H
CLR FLAG_F ;初始化
CLR FLAG_L
CLR FLAG_P
CLR FLAG_LAST
CLR FLAG_PRESS
SETB FLAG_GO
CLR FLAG_MUTE
世界杯点球SETB STAT_0
SETB STAT_1
SETB STAT_2
SETB STAT_3
MOV CMD, #00H
MOV PERIOD_H, #00H
MOV PERIOD_L, #00H
单丛MOV TONE, #00H
MOV SPEED, #00H
MOV COUNTER, #00H
MOV NUM, #00H
MOV POSITION, #00H
;MOV STATUS, #0FFH
MOV D_1, #80
MOV D_2, #79
MOV P_L1, #01H
MOV P_L2, #0FFH
MOV TMOD, #21H ;定时器0为16位计数器定时 ,1为8位⾃动装载MOV TH0, #0FFH
MOV TL0, #0FFH
MOV TH1, #0CCH
MOV TL1, #0CCH
MOV SCON, #0D0H
SETB IT0 ;设定外部中断0为负跳变触发
SETB PX0 ;外部中断为⾼优先级
SETB PS
SETB EA
SETB ET0
SETB EX0 ;开外部中断
SETB ES
;-------------------------------------------
LOOP: JB FLAG_F, PLAY ;演奏功能跳转
OUT: JNB FLAG_P, LOOP ;播放部分
MOV A, TONE
JZ MUTE
JB FLAG_MUTE, MUTE_1
SETB P3.7
MUTE_1: CJNE A, #1FH, NO_OVER
CLR TR0 ;TONE值等于1FH,乐曲结束,重新赋初值开始CLR P3.7
ORL P1, #0FH
MOV POSITION, #00H
MOV CU_COUNTER, COUNTER
CALL LONG
MOV TONE, #00
MOV COUNTER_LOOP, #0
水晶头怎么接SETB TR0
JMP LOOP
NO_OVER:
MUTE: CALL DELAY
CLR P3.7
CALL DELAY
JMP LOOP
;------------------
PLAY: JNB FLAG_PRESS, OVER
SETB P3.7 ;演奏部分
CALL DELAY
CLR P3.7
OVER: CALL DELAY
JMP LOOP
;****************串⼝中断服务程序******************
;INT_S: PUSH ACC
;JB P, R_1
;R_0: JB RB8, TO_OVER
;JMP RIGHT
;R_1: JNB RB8, TO_OVER
;RIGHT: MOV NUM, A ;赋乐曲号;ANL A, #0FH
;
JNZ SELECT ;选曲跳转
;MOV A, NUM
;SWAP A
;MOV CMD, A
;----------------------------
;CJNE A, #01H, IF_2
;CLR P3.7
愤怒近义词;CPL FLAG_F
;ORL P1, #0FH
;JB FLAG_F, PLAY_SET
;SETB FLAG_GO
p45主板;
JMP INT_OVER
;PLAY_SET: CLR FLAG_P
;CLR TR0
;CLR FLAG_GO
;CLR FLAG_PRESS
;JMP INT_OVER
;IF_2: CJNE A, #02H, IF_3
;MOV A, PERIOD_H
;ADD A, #4
;MOV NUM, A
;CLR C
;
SUBB A, #240
;JC S_UP
;JMP INT_OVER
;S_UP: MOV PERIOD_H, NUM

本文发布于:2023-05-27 23:03:11,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/795412.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:乐曲   播放   是否   中断   演奏
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图