| Zeile 674: | Zeile 674: | ||
Daraus machen wir schnell eine Funktion: | Daraus machen wir schnell eine Funktion: | ||
| − | < | + | <c> |
void switch_on() | void switch_on() | ||
{ | { | ||
outp(0x61,inp(0x61) | 3); | outp(0x61,inp(0x61) | 3); | ||
} | } | ||
| − | </ | + | </c> |
Okay. In Assembler baue ich das schon alles mit in die _sound-Funktion ein. | Okay. In Assembler baue ich das schon alles mit in die _sound-Funktion ein. | ||
| Zeile 685: | Zeile 685: | ||
Port 0x61 auf 00b stehen, dann ist der Lautsprecher aus. Das geht also ganz leicht: | Port 0x61 auf 00b stehen, dann ist der Lautsprecher aus. Das geht also ganz leicht: | ||
| − | < | + | <c> |
void switch_off() | void switch_off() | ||
{ | { | ||
outp(0x61,inp(0x61) &~3); | outp(0x61,inp(0x61) &~3); | ||
} | } | ||
| − | </ | + | </c> |
Und in Assembler: | Und in Assembler: | ||
| − | < | + | <asm> |
_switch_off: | _switch_off: | ||
IN AL,61h | IN AL,61h | ||
| Zeile 699: | Zeile 699: | ||
OUT 61h,AL | OUT 61h,AL | ||
RET | RET | ||
| − | </ | + | </asm> |
Fertig. An und aus können wir ihn schon machen, aber das Herzstückt kommt noch! Einen Ton | Fertig. An und aus können wir ihn schon machen, aber das Herzstückt kommt noch! Einen Ton | ||
ausgeben. Das geht mit folgendem, diesmal zuerst in Assembler ;-): | ausgeben. Das geht mit folgendem, diesmal zuerst in Assembler ;-): | ||
| − | < | + | <asm> |
_sound: | _sound: | ||
MOV AX,34DDH ;Die Frequenz wird in BX übergeben. | MOV AX,34DDH ;Die Frequenz wird in BX übergeben. | ||
| Zeile 726: | Zeile 726: | ||
DONE1: | DONE1: | ||
RET | RET | ||
| − | </ | + | </asm> |
So, jetzt in C: | So, jetzt in C: | ||
| − | < | + | <c> |
void sound(unsigned frequenz) | void sound(unsigned frequenz) | ||
{ | { | ||
| Zeile 741: | Zeile 741: | ||
//switch_off aufgerufen werden. | //switch_off aufgerufen werden. | ||
} | } | ||
| − | </ | + | </c> |
===Schluss=== | ===Schluss=== | ||