Code : Tout sélectionner
ORG 2000H
T0 DB 07H ; VOLUME
T1 DW 0000H ; DUREE
T2 DW 0000H ; HAUTEUR
MAIN: MOV AH,T0
MOV CX,T1
MOV DX,T2
BEEP: PUSH DX
CMP AH,0
JZ B_1 ; VOLUME A 0
MOV AL,3
MOV DX,0206H
OUT DX,AL ; OUT 206H,3 actionne le buzzer
; out 206H,0 coupe le buzzer
CMP AH,7
JZ B_1
MOV AL,AH
B_LOOP: DEC AL ; petite boucle, qui conditionne le volume
JNZ B_LOOP
OUT DX,AL ; on arrete le buzzer
B_1: POP DX
PUSH CX
MOV CX,DX
B_WAIT: LOOP B_WAIT
POP CX
LOOP BEEP ; selon duree
IRET ; fin
Déja, faire un CLEAR 4096,512
Taper le code sous ASMBL, compiler.
Pour l'utiliser en BASIC:
&H2000 (0 à 7) pour le volume
&H2001 contient l'octet faible de la durée voulue
&H2002 contient l'octet fort de la durée
&H2003 contient l'octet faible de la note
&H2004 contient l'octet fort de la note
Code : Tout sélectionner
10 POKE &H2000,7
20 POKE &H2001,0
30 POKE &H2002,10
40 POKE &H2003,10
50 POKE &H2004,10
60 CALL &H2000



