bueno es mi primer post asi que espero que sea en la seccion correcta, bueno escontre este codigo para reproducir el tamborillero, y bueno no entiendo como se conecta la bocina al pic o que otro dispocitivo se le puede conectar para utilizar este codigo, espero que alguien pueda ayudarme tal ves subiendo un esquema o dando algunas recomendacion.
creo que fue hecho por Elena2000 si laguien sabe como cambiar la cancion seria grandioso. gracias
; PIC MUSICAL PARA CANTAR VILLANCICOS ESTA NAVIDAD!!!
;LAS 8 SALIDAS DEL PUERTO B CONECTAR LAS LUCES O LED+R SERIE A MASA
;DEL PUERTO A , RESISTENCIAS pull up ,Y uno de los pin 0,2,4 extremo del piezo, 1,3 el otro extremo
list P=16f628a
include "p16f628a.inc"
; ERRORLEVEL -302, -307 ;(NO FIGURAN LOS ERRORES DE CAMBIO DE PAGINA)
;configuración de los fuses esos...
__CONFIG _XT_OSC & _CP_OFF & _WDT_ON & _PWRTE_ON
;La escala musical en frecuencias (1 y 2 octava)
constant notaC2 =.523
constant notaDb2 =.554
constant notaD2 =.587
constant notaEb2 =.622
constant notaE2 =.659
constant notaF2 =.698
constant notaGb2 =.740
constant notaG2 =.784
constant notaAb2 =.831
constant notaA2 =.880
constant notaBb2 =.923
constant notaB2 =.988
constant notaC3 =.1047
constant notaDb3 =.1109
constant notaD3 =.1175
constant notaEb3 =.1245
constant notaE3 =.1329
constant notaF3 =.1397
constant notaGb3 =.1480
constant notaG3 =.1568
constant notaAb3 =.1661
constant notaA3 =.1760
constant notaBb3 =.1865
constant notaB3 =.1976
;Duración de las notas
constant A_FREC =.152
constant B_FREC =.155
constant C_FREC =.156
constant D_FREC =.157
constant E_FREC =.228
constant F_FREC =.307
constant G_FREC =.308
constant H_FREC =.309
constant I_FREC =.604
constant J_FREC =.912
constant K_FREC =.1835
constant L_FREC =.1836
NOTA macro frec,duracion
retlw frec/10
retlw low ((duracion) / (frec/10))
retlw high ((duracion) / (frec/10))
endm
;registros
cblock 20h
contador
LOOPS
frec
len
lenh
frq
tabpos
endc
;**************************************************************************
; org 0
goto
;--------------------------------------------------------------------------
tono movf tabpos,w
addwf PCL,f
;AQUI LA CANCION QUE HA COMPUESTO SUPER-CUCA: EL TAMBORILERO!!!!
cancion NOTA notaF2,J_FREC
NOTA notaG2,G_FREC
NOTA notaA2,I_FREC
NOTA notaA2,H_FREC
NOTA notaA2,G_FREC
NOTA notaBb2,B_FREC
NOTA notaA2,C_FREC
NOTA notaBb2,H_FREC
NOTA notaA2,L_FREC
NOTA notaF2,G_FREC
NOTA notaF2,G_FREC
NOTA notaG2,G_FREC
NOTA notaA2,G_FREC
NOTA notaA2,G_FREC
NOTA notaA2,G_FREC
NOTA notaA2,G_FREC
NOTA notaBb2,A_FREC
NOTA notaA2,C_FREC
NOTA notaBb2,G_FREC
NOTA notaA2,L_FREC
NOTA notaG2,G_FREC
NOTA notaA2,G_FREC
NOTA notaBb2,G_FREC
NOTA notaC3,G_FREC
NOTA notaC3,G_FREC
NOTA notaC3,G_FREC
NOTA notaD3,G_FREC
NOTA notaC3,A_FREC
NOTA notaBb2,C_FREC
NOTA notaA2,G_FREC
NOTA notaG2,L_FREC
NOTA notaG2,G_FREC
NOTA notaA2,G_FREC
NOTA notaBb2,G_FREC
NOTA notaC3,G_FREC
NOTA notaC3,G_FREC
NOTA notaC3,G_FREC
NOTA notaD3,G_FREC
NOTA notaEb3,A_FREC
NOTA notaD3,D_FREC
NOTA notaC3,G_FREC
NOTA notaBb2,I_FREC
NOTA notaD3,A_FREC
NOTA notaC3,C_FREC
NOTA notaBb2,G_FREC
NOTA notaA2,I_FREC
NOTA notaC3,A_FREC
NOTA notaBb2,C_FREC
NOTA notaA2,G_FREC
NOTA notaG2,L_FREC
NOTA notaF2,J_FREC
NOTA notaG2,G_FREC
NOTA notaA2,G_FREC
NOTA notaA2,F_FREC
NOTA notaA2,G_FREC
NOTA notaA2,H_FREC
NOTA notaBb2,A_FREC
NOTA notaA2,C_FREC
NOTA notaBb2,H_FREC
NOTA notaA2,K_FREC
NOTA notaG2,E_FREC
NOTA notaF2,C_FREC
NOTA notaG2,G_FREC
NOTA notaF2,L_FREC
endtab ;final de cancion
;--------------------------------------------------------------
luces incf contador,F ;secuencia encendido de luces (port b )
movf contador,W
luces1 addwf PCL,f
retlw b'10000001'
retlw b'01000010'
retlw b'00100100'
retlw b'00011000'
retlw b'10100101'
retlw b'01000010'
retlw b'10101010'
retlw b'01010101'
retlw b'10101010'
retlw b'01010101'
retlw b'00100100'
retlw b'11111111'
retlw b'00000000'
retlw b'11011011'
retlw b'00100100'
retlw b'10011001'
retlw b'10000001'
retlw b'01000010'
retlw b'00100100'
retlw b'10011001'
retlw b'00100100'
retlw b'01011010'
retlw b'10101010'
retlw b'01010101'
retlw b'10101010'
retlw b'01010101'
retlw b'00100100'
retlw b'00011000'
retlw b'01100110'
retlw b'11011011'
retlw b'00100100'
retlw b'10011001'
; continuar con la tabla de encendido de luces
clrf contador
retlw b'10000001'
;*****************************************************************************
inicio
movlw b'00000111' ;desactiva los comparadores analogicos
movwf CMCON ;todo digital
movlw b'10101010' ;configurar salidas
movwf PORTA ;GPIO
bsf STATUS,RP0 ;acceso al banco 1
movlw b'00000000'
movwf TRISA ;Todos los pines son salidas
movlw b'00000000'
movwf TRISB ;Todos los pines son salidas
bcf STATUS,RP0 ;acceso al banco 0
;----------------------------------------------------------------------------
MASMUSICA
CLRF PORTB
clrf tabpos ;resetear la posicion en la tabla
CLRF contador
CLRWDT
CLRW
call luces1 ;SECUENCIA DE LAS LUCES
MOVWF PORTB
nxtnota call canta ;canta nota de la tabla
call play ;play nota
movlw endtab - cancion ;comprueba si termino la tabla
subwf tabpos,w ;
btfss STATUS,Z
goto nxtnota ;no acabó! canta siguiente nota
;---------------------------------------------------------------------------------
CLRF PORTB ;APAGO LAS LUCES, EN MODO DE ESPERA.....
CLRF PORTA ;DESCONECTO SALIDA PIEZOELECTRICO
CALL ESPERA
CALL ESPERA
CALL ESPERA
CALL ESPERA
arriba goto MASMUSICA ;arriba ;reinicia si se despierta
;--------------------------------------------------------------------------------
canta call tono ;canta una nota de la tabla
movwf frec
incf tabpos,f
call tono ;duracion del byte menor peso
movwf len
incf tabpos,f
call tono ;duracion del byte mayor peso
movwf lenh
incf tabpos,f
return
play incf lenh,f
play2 movf frec,w
call nota ;espera 1/2 de la frecuencia
comf PORTA,F ;sostiene el sonido
decfsz len,f
goto play2 ;mantener hasta nota acabe
decfsz lenh,f
goto play2
call luces ;SECUENCIA DE LAS LUCES
movwf PORTB
return
;-------------------------------------------------------------------------
ESPERA CLRF frq ;empleo el mismo registro...
call nota
decfsz LOOPS,f
GOTO ESPERA
nota movwf frq ;espera 1/2 de la frecuencia
wait nop
CLRWDT
nop
nop
nop
decfsz frq,f
goto wait
return
;------------------------------------------------------------------------
end