' Cabecera******************************************************
program example_13 ' Nombre de programa
sub procedure Tone1() ' g
PORTA.0=1
Sound_Play(196, 700) ' Frecuencia = 659Hz, duración = 250ms
PORTA.0=0
end sub
sub procedure Tone2() ' d
PORTA.6=1
Sound_Play(293, 1200) ' Frecuencia = 698Hz, duración = 250ms
PORTA.6=0
end sub
sub procedure Tone3() ' c
PORTA.5=1
Sound_Play(261, 450) ' Frecuencia = 784Hz, duración = 250ms
PORTA.5=0
end sub
sub procedure Tone4() ' b
PORTA.4=1
Sound_Play(246, 450) ' Frecuencia = 784Hz, duración = 250ms
PORTA.4=0
end sub
sub procedure Tone5() ' a
PORTA.3=1
Sound_Play(220, 450) ' Frecuencia = 784Hz, duración = 250ms
PORTA.3=0
end sub
sub procedure Tone6() 'g
PORTA.7=1
Sound_Play(392, 1200) ' Frecuencia = 784Hz, duración = 250ms
PORTA.7=0
end sub
sub procedure Tone7() 'd
PORTA.6=1
Sound_Play(293, 1200) ' Frecuencia = 784Hz, duración = 250ms
PORTA.6=0
end sub
sub procedure Tone8() 'd
PORTA.3=1
Sound_Play(220, 1200) ' Frecuencia = 784Hz, duración = 250ms
PORTA.3=0
end sub
sub procedure Melody() ' Tocar una melodía divertida 1
Tone1() Tone2() Tone3() Tone4() Tone5() Tone6() Tone7() Tone3()
Tone4() Tone5() Tone6() Tone7() Tone3() Tone4() Tone3() Tone8()
end sub
sub procedure ToneA() ' Tonos utilizados en la función Melody2
Sound_Play( 880, 50)
end sub
sub procedure ToneC()
Sound_Play(1046, 50)
end sub
sub procedure ToneE()
Sound_Play(1318, 50)
end sub
sub procedure Melody2() ' Tocar Melody2
dim counter as byte
for counter = 9 to 1 step -1
ToneA()
ToneC()
ToneE()
next counter
end sub
main: ' Inicio de programa
ANSEL = 0 ' Configurar pines analógicos como digitales de E/S
ANSELH = 0
TRISB = 0xF0 ' Configurar los pines RB7..RB4 como entradas y RB3 como salida
TRISA =0x00
porta = 0x00
C1ON_bit = 0 ' Deshabilitar los comparadores
C2ON_bit = 0
Sound_Init(PORTD, 3)
'Sound_Play(880, 5000)
while TRUE ' Bucle infinito
if (Button(PORTB,7,1,1)) then ' Si se presiona PORTB.7 tocar Tone1
Tone1()
while (RB7_bit <> 0)
nop ' Esperar que se suelte el botón
wend
end if
if (Button(PORTB,6,1,1)) then ' Si se presiona PORTB.6 tocar Tone1
Tone2()
while (RB6_bit <> 0)
nop ' Esperar que se suelte el botón
wend
end if
if (Button(PORTB,5,1,1)) then ' Si se presiona PORTB.5 tocar Tone1
Melody2()
while (RB5_bit <> 0)
nop ' Esperar que se suelte el botón
wend
end if
if (Button(PORTB,4,1,1)) then ' Si se presiona PORTB.4 tocar Tone1
Melody()
while (RB4_bit <> 0)
nop ' Esperar que se suelte el botón
wend
end if
wend
end. ' Final de programa