⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 electronic_organ.asm

📁 电子琴 有简谱喇叭的驱动程序
💻 ASM
字号:
ORG 0000H;liu xiaotong 2008 11 2
LJMP START
ORG 001BH
LJMP TIME1

ORG 0100H
START:MOV SP,#50H ;初始化
MOV IE,#88H
MOV TMOD,#10H
MOV P2,#00H
BEGIN:MOV R6,#00H  ;扫描键盘子查询
MOV R0,#2
MOV P3,#11110111B
SETB C
BEG1:MOV A,P3	 
MOV R5,A
MOV R4,#4
BEG2:RLC A
JNC KEY_IN
INC R6
DJNZ R4,BEG2
DJNZ R0,BEG3
LJMP BEGIN
BEG3:MOV P3,#11111011B
LJMP BEG1
KEY_IN:LCALL DELAY30MS
MOV A,P3
XRL A,R5
JZ  MUSIC
LJMP BEGIN	 

MUSIC:CJNE R6,#4,K1_K7	  
SONGBIE:MOV 40H,#00H ;演奏送别曲的子程序
NEXT:MOV A,40H
MOV DPTR,#TAB_SONGBIE
MOVC A,@A+DPTR
CJNE A,#00H,PLAY
LJMP STOP
PLAY:MOV R1,A
ANL A,#0FH
MOV R2,A
MOV A,R1
ANL A,#0F0H
CJNE A,#00H,MUS1
CLR TR1
LJMP DEL
MUS1:SWAP A
DEC A
MOV 22H,A 
ADD A,22H
MOV R3,A
MOV DPTR ,#TAB_MUSIC
MOVC A,@A+DPTR
MOV TH1,A
MOV 21H,A
MOV A,R3
INC A
MOVC A,@A+DPTR
MOV TL1,A
MOV 20H,A
SETB TR1
DEL:LCALL DELAY
INC 40H
LJMP NEXT
STOP:CLR TR1
LJMP BEGIN

K1_K7:mov 23H,R6;奏响1-7的子程序
MOV DPTR,#TAB_KEY
MOV A,23H
ADD A,23H
MOV 23H,A
MOVC A,@A+DPTR
MOV TH1,A
MOV 21H,A
INC 23H
MOV A,23H
MOVC A,@A+DPTR
MOV TL1,A
MOV 20H,A
SETB TR1
MOV R2,#4
LCALL DELAY
CLR TR1
LJMP BEGIN

TIME1:PUSH Acc ;定时1中断服务程序
PUSH PSW
CPL P2.5
MOV TL1,20H
MOV TH1,21H	
POP PSW
POP Acc
RETI

DELAY:MOV 26H,#02H;4/4曲调延时125m子程序
DELA1:MOV 25H,#125
DELA2:MOV 24H,#248
DJNZ 24H,$
DJNZ 25H,DELA2
DJNZ 26H,DELA1
DJNZ R2,DELAY
RET

DELAY30MS:MOV 28H,#55;延时去抖动子程序
DELAY30MS1:MOV 27H,#250
DJNZ 27H,$
DJNZ 28H,DELAY30MS1
RET

TAB_KEY:DW 64820,64777,64680,64580,0FFFFH,65030,64970,64860
TAB_MUSIC:DW 64525,64580,64680,64777
DW 64820,64860,64970,65030,65055
TAB_SONGBIE:;第一行曲子
DB 64H,42H,62H,98H
DB 74H,92H,72H,68H
DB 64H,22H,32H,44H,32H,22H
DB 3CH
;第二行曲子
DB 64H,42H,62H,94H,04H,82H
DB 74H,94H,68H
DB 64H,32H,42H,54H,04H,12H
DB 2CH
;第三行曲子
DB 74H,94H,98H
DB 84H,72H,82H,98H
DB 72H,82H,92H,72H,72H,62H,42H,22H
DB 3CH
;第四行曲子
DB 64H,42H,62H,94H,04H,82H
DB 74H,94H,68H
DB 64H,32H,42H,54H,04H,12H
DB 2CH
;结束码
DB 00H
END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -