电子琴电路设计及程序设计 第3页
MU_1: MOV R1,#19 ;如果第一个按键按下,则R1=19,同时程序转NEXT
SJMP NEXT
MU_2: MOV R1,#17
SJMP NEXT
MU_3: MOV R1,#15
SJMP NEXT
MU_4: MOV R1,#14
SJMP NEXT
MU_5: MOV R1,#13
SJMP NEXT
MU_6: MOV R1,#11
SJMP NEXT
MU_7: MOV R1,#10
SJMP NEXT
NEXT: MOV A,R1
MOV R0,A
SETB TR0 ;启动定时器0
NEXT_1:MOV A,P2 ; 没键按下继续执行,有键按下,返回读引脚
CJNE A,#0FFH,NEXT_1
ACALL DELAY
MOV A,P2 ;真的没键按下?
CJNE A,#0FFH,NEXT_1
CLR TR0 ;不响
AJMP SCAN ;扫描键盘去
INT_0: ;中断程序
DJNZ R0,RE ;R0不等于0时,返回
CPL P1.0
MOV A,R1
MOV R0,A
RE: RETI
DELAY:MOV R7,#100 ;延长时间等待,键盘消抖
D1: MOV R6,#10
D2: DJNZ R6,D2
DJNZ R7,D1
RET
END
生日快乐歌:(扩展功能部分程序)
ORG 0000H
JMP MAIN
ORG 000BH
JMP TT0
MAIN: MOV TMOD,#01H ;设置定时器0工作方式
MOV IE,#82H ;设置中断
MAIN0:MOV 30H,#00H
NEXT: MOV A,30H
MOV DPTR,#TABLE ;查表
MOVC A,@A+DPTR
MOV R2,A
JZ STOP
ANL A,0FH
MOV R5,A
MOV A,R2
SWAP A
ANL A,#0FH
JNZ SING
CLR TR0
JMP W1
SING: DEC A
MOV 22H,A
RL A
MOV DPTR,#TABLE1 ;查表
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
W1: CALL DELAY
INC 30H
JMP NEXT
STOP: CLR TR0
JMP MAIN0
TT0: PUSH ACC ;中断服务程序
PUSH PSW
MOV TL0,20H
MOV TH0,21H
CPL P1.0
POP PSW
POP ACC
RETI
DELAY:MOV R7,#2 ;延时187ms
W2: MOV
www.751com.cn DJNZ R5,DELAY
RET
TABLE1:DW 64260,64400,64524,64580 ;音符计数植
DW 64684,64777,64820,64898
DW 64968,65030,65058,65110
DW 65157,65178,65217
TABLE:DB 82H,01H,81H,94H,84H ;节拍表
DB 0B4H,0A4H,04H
DB 82H,01H,81H,94H,84H
DB 0C4H,0B4H,04H
DB 82H,01H,81H,0F4H,0D4H
DB 0B4H,0A4H,94H
DB 0E2H,01H,0E1H,0D4H,0B4H
DB 0C4H,0B4H,04H
DB 82H,01H,81H,94H,84H
DB 0B4H,0A4H,04H
DB 82H,01H,81H,94H,84H
DB 0C4H,0B4H,04H
DB 82H,01H,81H,0F4H,0D4H
DB 0B4H,0A4H,94H
DB 0E2H,01H,0E1H,0D4H,0B4H
DB 0C4H,0B4H,04H
DB 00H
END
上一页 [1] [2] [3] [4] 下一页
电子琴电路设计及程序设计 第3页下载如图片无法显示或论文不完整,请联系qq752018766