实验仿真图
源程序代码:(弹奏部分代码暂时去掉,见谅,需要的留言,转载请注明出处,谢谢!)
DUAN EQU 0c000H
WEI EQU 0a000H
LED0 EQU 8000H
ORG 0000H ;复位地址
LJMP MAIN ;跳转到主程序
ORG 0003H ;外部中断0入口地址
LJMP INT00 ;跳转到外部中断0服务程序
ORG 000BH ;T0中断入口
LJMP TIM0 ;跳转到T0中断服务程序
ORG 0030H ;主程序入口地址
MAIN:
MOV DPTR,#LED0
MOV A,#00H
MOVX @DPTR,A
MOV TMOD,#01H ;写入T0控制字, 16位定时方式
SETB IT0 ;外部中断为下降沿触发
MOV IE,#83H ;开中断
MOV 30H,#00H ;取简谱码指针
MOV R6,#0FFH ;选择音乐节奏灯循环次数
CLR 23H ;功能选择标志 00:键盘 01:音乐
NEXT: CLR TR0
JNB 23H,KEYPLAY ;若标志位是0则转到键盘程序
SETB P2.2
MOV A,30H ;简谱码指针装入A
JNB P0.1,STAR
源程序代码:(弹奏部分代码暂时去掉,见谅,需要的留言,转载请注明出处,谢谢!)
DUAN EQU 0c000H
WEI EQU 0a000H
LED0 EQU 8000H
ORG 0000H ;复位地址
LJMP MAIN ;跳转到主程序
ORG 0003H ;外部中断0入口地址
LJMP INT00 ;跳转到外部中断0服务程序
ORG 000BH ;T0中断入口
LJMP TIM0 ;跳转到T0中断服务程序
ORG 0030H ;主程序入口地址
MAIN:
MOV DPTR,#LED0
MOV A,#00H
MOVX @DPTR,A
MOV TMOD,#01H ;写入T0控制字, 16位定时方式
SETB IT0 ;外部中断为下降沿触发
MOV IE,#83H ;开中断
MOV 30H,#00H ;取简谱码指针
MOV R6,#0FFH ;选择音乐节奏灯循环次数
CLR 23H ;功能选择标志 00:键盘 01:音乐
NEXT: CLR TR0
JNB 23H,KEYPLAY ;若标志位是0则转到键盘程序
SETB P2.2
MOV A,30H ;简谱码指针装入A
JNB P0.1,STAR