当前位置:首页 > 基于单片机的音乐喷泉控制毕业设计论文
邵阳学院毕业设计(论文)
0中断现场保护至速度表取速度控制字重置0计数值1.7恢复现场返回
图3.7中断子程序流程图
邵阳学院毕业设计(论文)
3.4.4 系统控制程序
控制程序:
ORG 0000H ;程序起始地址 AJMP CSH ;主程序进入点 ORG 000BH ;定时中断T0入口地址 LJMP TIM0 ;跳至TIMER0中断子程序
………………………………………………………………………
************ T0、8155、P1口初始化 ************ ………………………………………………………………………
ORG 0030H
CSH: MOV R0,#7FH ;内部RAM(00H~7FH)清零 CSH1: MOV @R0, #00H DJNZ R0, CSH1
MOV SP,#60H ;移开堆栈指针SP
MOV TMOD,#01H ;设TIMER0在MODE1作16位计数器 CLR TCON.1 ;T0禁止动作 SETB IE.1 ;T0允许中断 SETB PT0 ;T0中断优先 CLR P2.1 ;8155复位 SETB P2.1 CLR P2.1
SETB P2.0 ;8155 IO/M=1 选择使用在输入输出口 MOV DPTR,#100H ;命令/状态寄存器地址
MOV A,#0FH ;设定命令/状态寄存器地址PA,PB,
;PC为输出
MOVX @DPTR, A
………………………………………………………………………
***************** 扫键程序 *****************
邵阳学院毕业设计(论文)
………………………………………………………………………
WAIT: NOP
MOV P1,#0FH ;P1口初始化(低四位为输入、高四位
输出口)
JNB P1.0,JPZZ1 ;P1.0口为0 放第一曲 JNB P1.1,JPZZ2 ;P1.1口为0放第二曲 JNB P1.2,XUNHUAN ;P1.2口为0执行循环
MOV 5CH,#00H ;P1.2口为1顺序执行一次结束 AJMP MAIN ;放第一首歌曲
JPZZ1: MOV 5CH,#00H ;取第一首歌的简谱指针 MOV 20H,P1.0 ;将P1.0口的值暂存于20H单元 SETB P1.0 ;恢复P1.0的初值 AJMP MAIN ;执行循环
JPZZ2: MOV 5CH,#57H ;取第二首歌的简谱指针 MOV 20H,P1.1 ;将P1.1口的值暂存于20H单元 SETB P1.1 ;恢复P1.1的初值 AJMP MAIN ;执行循环 XUNHUAN: MOV 5CH,#00H
MOV 21H,P1.2 ;将P1.2口的值暂存于21H单元 SETB P1.2 ;恢复P1.2的初值 AJMP MAIN ;执行循环
………………………………………………………………………
*************** 主程序 ***************
………………………………………………………………………
MAIN: MOV 22H,#00H ;花形种数初值 MAIN0: LCALL DCF ;调用花形子程序 MSD: MOV A,5CH ;简谱码指针装入A
MOV DPTR,#TABLE ;至TABLE(简码表)取简码 MOVC A,@A+DPTR
邵阳学院毕业设计(论文)
MOV R5,A ;取到的简码存入R5 JZ END1 ;是否取到00(结束码)? ANL A,#0FH ;不是,则取低四位(节拍码) MOV R6,A ;将节拍码存入R6 MOV A,R5 ;将取到的简码再装入R5 SWAP A ;高低四位交换 ANL A,#0FH JNZ BQYU CLR TR0 AJMP D1 ;取低四位(音符码) ;取到的音符码是否为0? ;是,则不发音 ;跳到D1
共分享92篇相关文档