Dobrý den
Chtěl bych pomoct s generováním melodie. Program mám už napsaný ale chtěl bych si zjednodušit a vylepšit hraní daného tonů. V každé tabulce mám danou melodii, ale je to podle mě zbytečně dlouhý zápis. Chtěl bych to realizovat tak že bych měl např. Tabulku melody1: 8,2 atd.. kde 8 byl by např tón A a 2 by znamenala hraj 0,5s.Nevím jak to realizovat, tak kdyby byl někdo hodný a ukázal by mi to děkuju.
ukázka programu:
KL EQU P0
REP EQU P1
ORG 0
JMP HL_PR
ORG 0BH
MOV TH0, R6
MOV TL0, R7
CPL P1.0
RETI
HL_PR: MOV TMOD, #1
MOV TH0, #HIGH(-1047)
MOV TL0, #LOW(-1047)
SETB EA
SETB TR0
SETB ET0
ZNOVU1: CALL KLAV
CJNE A,#12,DAL
MOV R6,#0ffh
MOV R7,#0efh
JMP ZNOVU1
DAL: CJNE A,#1, ZNOVU2
MOV DPTR, #SONG1
MOV R1, #(SONG2-SONG1)
CALL RESTART
JMP ZNOVU1
ZNOVU2: CALL KLAV
CJNE A,#2, ZNOVU3
MOV DPTR, #SONG2
MOV R1, #(SONG3-SONG2)
CALL RESTART
JMP ZNOVU1
ZNOVU3: CALL KLAV
CJNE A,#3, ZNOVU1
MOV DPTR, #SONG3
MOV R1, #(pocet-SONG3)
CALL RESTART
JMP ZNOVU1
RESTART:MOV R2,#0
DALSI: MOV A,R2
MOVC A,@A+DPTR
MOV R6,A
INC R2
MOV A,R2
MOVC A,@A+DPTR
MOV R7,A
INC R2
MOV R3,#250
ZPET2: MOV R4,#100
ZPET1: MOV R5,#1
DJNZ R5,$
DJNZ R4,ZPET1
DJNZ R3,ZPET2
MOV A, R1
CJNE A, 2, DALSI
RET
SONG1: dw 0fe4dh ;TON_c
dw 0fe4dh ;TON_c
dw 0fe7ch ;TON_d
dw 0fe7ch ;TON_d
dw 0fea7h ;TON_e
dw 0fedfh ;TON_g
dw 0fedfh ;TON_g
dw 0fe7ch ;TON_d
dw 0fe7ch ;TON_d
dw 0fea7h ;TON_e
dw 0feffh ;TON_a
dw 0feffh ;TON_a
dw 0fe7ch ;TON_d
dw 0fe7ch ;TON_d
dw 0fea7h ;TON_e
dw 0febch ;TON_f
dw 0febch ;TON_f
dw 0fea7h ;TON_e
dw 0fea7h ;TON_e
dw 0fe7ch ;TON_d
dw 0ffefh ;mezera
dw 0ffefh ;mezera
dw 0fe4dh ;TON_c
dw 0fe4dh ;TON_c
dw 0fe7ch ;TON_d
dw 0fe7ch ;TON_d
dw 0fea7h ;TON_e
dw 0fedfh ;TON_g
dw 0fedfh ;TON_g
dw 0fe7ch ;TON_d
dw 0fe7ch ;TON_d
dw 0fea7h ;TON_e
dw 0feffh ;TON_a
dw 0feffh ;TON_a
dw 0fe7ch ;TON_d
dw 0fe7ch ;TON_d
dw 0fea7h ;TON_e
dw 0febch ;TON_f
dw 0febch ;TON_f
dw 0fea7h ;TON_e
dw 0fe7ch ;TON_d
dw 0ffefh ;mezera
dw 0ffefh ;mezera
dw 0fe4dh ;TON_c
dw 0fe4dh ;TON_c
dw 0fe7ch ;TON_d
dw 0fe7ch ;TON_d
dw 0fea7h ;TON_e
dw 0fedfh ;TON_g
dw 0fedfh ;TON_g
dw 0fe7ch ;TON_d
dw 0fe7ch ;TON_d
dw 0fea7h ;TON_e
dw 0feffh ;TON_a
dw 0feffh ;TON_a
dw 0fe7ch ;TON_d
dw 0fe7ch ;TON_d
dw 0fea7h ;TON_e
dw 0febch ;TON_f
dw 0febch ;TON_f
dw 0fea7h ;TON_e
dw 0fe7ch ;TON_d
SONG2: dw 0ff0eh ;TON_ais ;
dw 0fedfh ;TON_g
dw 0ff0eh ;TON_ais
dw 0fedfh ;TON_g
dw 0feffh ;TON_a
dw 0febch ;TON_f
dw 0feffh ;TON_a
dw 0febch ;TON_f
dw 0fedfh ;TON_g
dw 0fe7ch ;TON_d
dw 0fedfh ;TON_g
dw 0fe7ch ;TON_d
dw 0fedfh ;TON_g
dw 0fe7ch ;TON_d
dw 0ffefh ;mezera
dw 0ffefh ;mezera
dw 0ffefh ;mezera
dw 0ff0eh ;TON_ais
dw 0fedfh ;TON_g
dw 0ff0eh ;TON_ais
dw 0fedfh ;TON_g
dw 0feffh ;TON_a
dw 0febch ;TON_f
dw 0feffh ;TON_a
dw 0febch ;TON_f
dw 0fedfh ;TON_g
dw 0fe7ch ;TON_d
dw 0fedfh ;TON_g
dw 0fe7ch ;TON_d
dw 0fedfh ;TON_g
dw 0fe7ch ;TON_d
dw 0ffefh ;mezera
dw 0ffefh ;mezera
dw 0ffefh ;mezera
dw 0ff0eh ;TON_ais
dw 0ff0eh ;TON_ais
dw 0febch ;TON_f
dw 0febch ;TON_f
dw 0fe7ch ;TON_d
dw 0ffefh ;mezera
dw 0fe7ch ;TON_d
dw 0fe7ch ;TON_d
dw 0ffefh ;mezera
dw 0ffefh ;mezera
dw 0ff0eh ;TON_ais
dw 0ff0eh ;TON_ais
dw 0febch ;TON_f
dw 0febch ;TON_f
dw 0fe7ch ;TON_d
dw 0ffefh ;mezera
dw 0fe7ch ;TON_d
dw 0fe7ch ;TON_d
SONG3: dw 0feceh ;TON_fis ;
dw 0fea7h ;TON_e
dw 0fea7h ;TON_e
dw 0ffefh ;mezera
dw 0fea7h ;TON_e
dw 0fea7h ;TON_e
dw 0fea7h ;TON_e
dw 0fea7h ;TON_e
dw 0fe93h ;TON_dis
dw 0fe93h ;TON_dis
dw 0ffefh ;mezera
dw 0fe67h ;TON_cis
dw 0ff0eh ;TON_ais
dw 0fef0h ;TON_gis
dw 0febch ;TON_f
dw 0ffefh ;mezera
dw 0fe67h ;TON_cis
dw 0fe67h ;TON_cis
dw 0ff0eh ;TON_ais
dw 0ff0eh ;TON_ais
dw 0ffefh ;mezera
dw 0feceh ;TON_fis
dw 0fea7h ;TON_e
dw 0fea7h ;TON_e
dw 0ffefh ;mezera
dw 0fea7h ;TON_e
dw 0fea7h ;TON_e
dw 0fea7h ;TON_e
dw 0fea7h ;TON_e
dw 0fe93h ;TON_dis
dw 0fe93h ;TON_dis
dw 0ffefh ;mezera
dw 0fe67h ;TON_cis
dw 0ff0eh ;TON_ais
dw 0fef0h ;TON_gis
dw 0febch ;TON_f
dw 0ffefh ;mezera
dw 0fe67h ;TON_cis
dw 0fe67h ;TON_cis
dw 0ff0eh ;TON_ais
dw 0ff0eh ;TON_ais
pocet:
KLAV: MOV DPTR, #TABKL
MOV A, #01111111B
MOV R2, #0
ZPET: MOV KL, A
JNB KL.0,STISK
INC R2
JNB KL.1,STISK
INC R2
JNB KL.2,STISK
INC R2
JNB KL.3,STISK
INC R2
RR A
CJNE R2,#12,ZPET
MOV A,#12
JMP KONEC
STISK: MOV A, R2
MOVC A, @A+DPTR
KONEC: RETI
TABKL: DB 11,9,6,3,0,8,5,2,10,7,4,1
END