有编程高手能提供一个汇编语言实现的简易电子琴程序吗?急!谢谢
发布网友
发布时间:2023-08-08 14:53
我来回答
共5个回答
热心网友
时间:2023-09-24 09:18
T0HEQU 30H
T0L EQU 31H
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV SP,#5FH
MOV TMOD,#01H
SETB ET0
SETB EA
LOOP:
MOV DPTR,#FREQ
MOV A,P2;控制高中低音区
MOV R1,#0
ANL A,#03H
JB ACC.0,LOOP01
MOV R1,#14
SJMP LOOP0
LOOP01:
JB ACC.1,LOOP0
MOV R1,#28
LOOP0:
JB P0.0,LOOP1;控制音频1234567
MOV A,R1
MOVC A,@A+DPTR
MOV T0H,A
INC DPTR
MOV A,R1
MOVC A,@A+DPTR
MOV T0L,A
LJMP LOOP
LOOP1:
JB P0.1,LOOP2
MOV A,R1
ADD A,#2
MOVC A,@A+DPTR
MOV T0H,A
INC DPTR
MOV A,R1
ADD A,#2
MOVC A,@A+DPTR
MOV T0L,A
LJMP LOOP
LOOP2:
JB P0.2,LOOP3
MOV A,R1
ADD A,#4
MOVC A,@A+DPTR
MOV T0H,A
INC DPTR
MOV A,R1
ADD A,#4
MOVC A,@A+DPTR
MOV T0L,A
LJMP LOOP
LOOP3:
JB P0.3,LOOP4
MOV A,R1
ADD A,#6
MOVC A,@A+DPTR
MOV T0H,A
INC DPTR
MOV A,R1
ADD A,#6
MOVC A,@A+DPTR
MOV T0L,A
LJMP LOOP
LOOP4:
JB P0.4,LOOP5
MOV A,R1
ADD A,#8
MOVC A,@A+DPTR
MOV T0H,A
INC DPTR
MOV A,R1
ADD A,#8
MOVC A,@A+DPTR
MOV T0L,A
LJMP LOOP
LOOP5:
JB P0.5,LOOP6
MOV A,R1
ADD A,#10
MOVC A,@A+DPTR
MOV T0H,A
INC DPTR
MOV A,R1
ADD A,#10
MOVC A,@A+DPTR
MOV T0L,A
LJMP LOOP
LOOP6:
JB P0.6,LOOP7
MOV A,R1
ADD A,#12
MOVC A,@A+DPTR
MOV T0H,A
INC DPTR
MOV A,R1
ADD A,#12
MOVC A,@A+DPTR
MOV T0L,A
LJMP LOOP
LOOP7:
CLR TR0
LJMP LOOP
;-----------------------------
T0ISR:
CLR TR0
MOV TH0,T0H
MOV TL0,T0L
SETB TR0
CPL P3.0
RETI
;-----------------------------
FREQ:
DB 0F2H,03DH;低音1
DB 0F3H,0BDH;低音2
DB 0F5H,014H;低音3
DB 0F5H,0B1H;低音4
DB 0F6H,0D0H;低音5
DB 0F7H,0D1H;低音6
DB 0F8H,0B5H;低音7
DB 0F9H,01EH;中音1
DB 0F9H,0DEH;中音2
DB 0FAH,08AH;中音3
DB 0FAH,0D8H;中音4
DB 0FBH,068H;中音5
DB 0FBH,0E8H;中音6
DB 0FCH,05AH;中音7
DB 0FCH,08FH;高音1
DB 0FCH,0EFH;高音2
DB 0FDH,045H;高音3
DB 0FDH,06CH;高音4
DB 0FDH,0B4H;高音5
DB 0FDH,0F4H;高音6
DB 0FEH,029H;高音7
;-----------------------------
END
热心网友
时间:2023-09-24 09:18
两个步骤
1要用中断程序16读到键盘的状态,
2要利用8253控制输出频率,发出声音来。
假如读取中断16不够信息的话,就改造中断9,把相关键盘状态记录到特定位置。
这个程序的水平好高啊,这个可是俺们当时的梦想啊
热心网友
时间:2023-09-24 09:19
是不是,小写时,低音,大写时,高音?追问是同时按下左shift和数字键发出低音,同时按下右shift和数字键发出低音
追答难到不难,就是麻烦点。
读出左、右shift,需要读出两个字节。
一般,键盘上,上、下排列了四行按键,输出不同的音调,也够用了。
每个按键,读出一个字节,就行了,没有弄过读出两个字节的。
如果这样深入要求,左右Ctrl,还可以升降半音,或者加上颤音,
太麻烦了,大概没有人会弄的。
热心网友
时间:2023-09-24 09:19
没有追问不带这样欺负人的
热心网友
时间:2023-09-24 09:20
要求真