光电隔离光电隔离光电隔离光电隔离光电隔离光电隔离光电隔离光电隔离光电隔离光电隔离光电隔离光电隔离光电隔离光电隔离光电隔离光电隔离电磁阀电磁阀电磁阀电磁阀电磁阀电磁阀电磁阀电磁阀电磁阀电磁阀电磁阀电磁阀电磁阀电磁阀电磁阀单片机及+5电源电磁阀及光电隔离电路电磁阀
电源开关电源保护
附录B:电气接线图
接地变频器整流电源 整流电源 单片机 变频器及电机+24直流电源水下灯及固态继电器
附录C:程序清单
控制程序:
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
相关推荐: