Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Le JukeBox du vieux Geek ringard
- F6FCO
Expert- Messages : 1413
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
Perso j'aurai préféré coder du Led Zep, du Deep-Purple ou du ZZ-Top mais ce sera pour le prochain projet, là j'ai fais avec du connu de tous. Mémoire du 16F84A au taquet, j'ai aussi fais une version sur 16F88 pour avoir plus de mem mais je n'ai que 3 zik parce que seulement 3 boutons sur la platine. Je suis en train de bosser sur la version 16F976 avec interruptions pour éviter d'être obligé d'écouter un air jusqu'au bout si on veut changer.
Config:
- 16F84A
- 3 poussoirs sur Ra0, Ra1 et Ra2, chacun avec une pullup externe 10k
- 1 buzzer, patte+ sur Rb0, patte- au gnd
- (Facultatif) si on veut que çà soit plus joli avec des jeux de lumière de ouf et faire la teuf dans l'appart on peut aussi mettre 5 leds multicolores sur Rb1, Rb4, Rb5, Rb6 et Rb7.
Le fichier .HEX pour ceux qui ne font pas d'ASM.
Config:
- 16F84A
- 3 poussoirs sur Ra0, Ra1 et Ra2, chacun avec une pullup externe 10k
- 1 buzzer, patte+ sur Rb0, patte- au gnd
- (Facultatif) si on veut que çà soit plus joli avec des jeux de lumière de ouf et faire la teuf dans l'appart on peut aussi mettre 5 leds multicolores sur Rb1, Rb4, Rb5, Rb6 et Rb7.
Le fichier .HEX pour ceux qui ne font pas d'ASM.
Code : Tout sélectionner
;**********************************************************************
; *
; NOM: Juke-box *
; Date: 28/01/2018 *
; Auteur: F6FCO JC Buisson
; PIC: 16F84A *
; *
;**********************************************************************
LIST p=16F84A ; Définition de processeur
#include <p16F84A.inc> ; Définitions des constantes
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_OFF & _HS_OSC
OPTIONVAL EQU H'0008'
; --------------------------------------------------------------------------------------------
#define delai 800000
#define pin_buzzer PORTB,0 ; buzzer
; ---------------------- définitions des Leds et poussoirs
#define Led_DO PORTB,4
#define Led_RE PORTB,1
#define Led_FA PORTB,7
#define Led_SOL PORTB,5
#define Led_LA PORTB,6
#define Pous1 PORTA,0 ; poussoir avec pull-up (zero si appui) -> vers musique1
#define Pous2 PORTA,1 ; vers musique2
#define Pous3 PORTA,2 ; vers musique3
; -------------------- définitions des appels de sous-routines
#define FAA call faa
#define FA#A call fa#a
#define SOLA call sola
#define SOL#A call sol#a
#define LAA call laa
#define LA#A call la#a
#define SIA call sia
#define DO call do
#define DO# call do#
#define RE call re
#define RE# call re#
#define MI call mi
#define FA call fa
#define FA# call fa#
#define SOL call sol
#define SOL# call sol#
#define LA call la
#define LA# call la#
#define SI call si
#define DOb call dob
#define DO#b call do#b
#define REb call reb
#define d call tempo0
#define d1 call tempo1
#define d2 call tempo2
; --------------------- définitions des durées des notes
#define duree_faa 44
#define duree_fa#a 45
#define duree_sola 46
#define duree_sol#a 47
#define duree_laa 48
#define duree_la#a 48
#define duree_sia 49
#define duree_do 50
#define duree_do# 50
#define duree_re 51
#define duree_re# 51
#define duree_mi 52
#define duree_fa 55
#define duree_fa# 56
#define duree_sol 57
#define duree_sol# 57
#define duree_la 58
#define duree_la# 58
#define duree_si 59
#define duree_dob 62
#define duree_dob# 66
#define duree_reb 72
;*********************************************************************
CBLOCK 0x00C
cmpt1 ; compteur état haut
cmpt2 ; compteur état bas
cmpt3 ; compteur de temps note
cmpt4 ; compteur de temps note
Reg_1
Reg_2
Reg_3
ENDC
;**********************************************************************
org 0x000 ; Adresse de départ après reset
init
bsf STATUS,RP0 ; sélectionner banque 1
movlw OPTIONVAL ; charger masque
movwf OPTION_REG ; initialiser registre option
movlw b'00000111' ; A0 en entrée pour poussoirs
movwf TRISA
clrf TRISB ; Bit PORTB.0 en sortie
bcf STATUS,RP0 ; Sélectionner banque 0
clrf PORTB ; sorties portB à 0
movlw 5
movwf cmpt1 ; RAZ compteur
movwf cmpt2
;*********************************************************************
; PROGRAMME PRINCIPAL *
;*********************************************************************
main
poussoir1
btfsc Pous1 ; teste le poussoir 1, si pressé Pous1=0 et on saute
goto poussoir2
goto marseillaise
poussoir2
btfsc Pous2 ; teste le poussoir 2, si pressé Pous2=0
goto poussoir3
goto santiano
poussoir3
btfsc Pous3 ; idem
goto main
goto copains
; ################################################################################################
copains
; ------------- non ce n'était pas le radeau
DO ; non
d1
RE ; ce
d1
RE# ; n'é
d
MI ;tait
d1
RE ;pas
d2
DO ; le
d1
RE ; ra
d
MI ; deau
d2
d2
; ------------- de la méduse ce bateau
RE ; de
d1
DO ; la
d1
RE ; me
d
MI ; du
d
LA ; se
d1
SI ; ce
d1
DOb ; ba
d
SI ; teau
d2
; ------------ qu'on se le dise au fond des ports
LA ; qu'on
d1
SOL ; se
d1
MI ; le
d1
RE ; dise
d1
LAA ; au
d1
RE ; fond
d1
LAA ; des
d1
RE ; ports
d2
d2
; ------------ dise au fond des ports
DO ; dise
d1
MI ; au
d1
RE ; fond
d1
DO ; des
d1
FA#A ; ports
FA#A
d2
d2
; -------------- il naviguait en pere peinard
SOL#A ; il
d1
LAA ; na
d
SIA ; vi
d
DO ; guait
d1
DO ; en
d1
SIA ; père
d1
DO ; pei
d
LAA ; nard
LAA
d2
d2
; -------------- sur la grand mare des canards
DO ; sur
d1
SIA ; la
d1
LAA ; grand
d1
SOL#A ; ma
d
MI ; re
d1
MI ; des
d1
RE# ; ca
d
RE ;nards
d2
d2
; -------------- et s'appelait les copains d'abord
FA ; et
d1
MI ; s'app
d
RE ; elait
d1
DO ; les
d1
DO ; co
d
DO ; pains
d1
LAA ; d'a
d
FAA# ; bord
d2
d2
; -------------- les copains d'abord
MI ; les
d1
RE ; co
d
LAA ; pains
d1
SIA ; d'a
d
DO ; bord
goto main
; ################################################################################################
marseillaise
; ------------------ allons enfants de la patrie
DO ; al
d
DO ; lons
d
DO ; en
d
FA ; fants
FA
d1
FA ; de
d1
SOL ; la
d1
d1
SOL ; pa
d
DOb ; tri
DOb ; ii
d
LA ; i
FA ; e
; -------------------- Le jour de gloire est arrivé
d2
d2
FA ; le
d
LA ; jour
d
FA ; de
d
RE ; gloire
RE
d1
LA# ; est
LA#
LA#
d
SOL ; ar
d
MI ; ri
d
FA ; vé
; -------------------- contre nous de la tirannie
d2
d2
FA ; con
d
d
SOL ; tre
d1
LA ; nous
d1
LA ; de
d1
LA ; la
d1
LA# ; ti
d
LA ; ra
d
LA ; nie
LA ; ie
SOL ; e
SOL
; ------------------- L'étendart sanglant est levé
d2
d2
SOL ; l'é
d
LA ; ten
d
LA# ; dart
LA# ; art
d1
d1
LA# ; san
d
d
d
LA# ; glant
LA# ; ant
d1
DOb ; est
d1
d1
LA# ; le
LA ; vé
LA ; é
;--------------------- L'étendart sanglant est levé
d2
d2
DOb ; l'é
d
d
DOb ; ten
d
d
DOb ; dart
d1
d1
LA ; san
d
d
FA ; an
d
DOb ; glant
d1
LA ; est
d
FA ; le
d
DO ; vé
d2
;----------------------- Entendez-vous dans nos campagnes
DO ; en
d
DO ; ten
d
MI ; dez
SOL ; vou
SOL ; ous
SOL
d1
LA# ; dans
d1
LA ; nos
d1
MI ; cam
d
SOL ; pa
SOL
d
FA ; gnes
d2
D2
; ----------------------- mugir ces féroces soldats
RE# ; mu
d
RE ; gir
RE
d1
FA ; ces
d1
FA ; fé
d
FA ; ro
d
MI ; ces
FA ; sol
d
SOL ; dats
SOL
d2
d2
; ---------------------- Ils viennent jusque dans vos bras
;SOL ; ils
;d1
;SOL# ; vie
;d
;LA ; nnent
;LA
;d1
;LA ; jus
;d
;LA ; que
;d
;LA# ; dans
;DOb ; vos
;SOL ; bras
;d2
;d2
; ---------------------- égorger vos fils et vos compagnes
;SOL# ; é
;LA ; gor
;FA ; ger
;d1
;FA ; vos
;d1
;FA ; fils
;d1
;SOL# ; et
;d1
;SOL ; vos
;d1
;FA ; com
;d
;FA ; pa
;d
;MI ;gnes
;MI
;d2
;d2
; ---------------------- Aux armes citoyen
;DOb ; aux
;d1
;DOb ; ar
;DOb
;DOb
;d
;DOb ; mes
;d1
;d1
;LA ; ci
;d
;FA ; toy
;d
;SOL ; yens
;SOL
;d2
; ---------------------- Formez vos bataillons
;DOb ; For
;d
;DOb ; mez
;DOb
;DOb
;d1
;DOb ; vos
;d1
;LA ; ba
;d
;FA ; tail
;d
;SOL ; llons
;SOL
;d2
; ---------------------- Marchons marchons
;DO ; mar
;DO
;d
;FA ; chons
;FA
;FA
;d1
;d1
;d1
;SOL ; mar
;SOL
;d
;LA ; chons
;LA
;LA
;d2
; ---------------------- Qu'un sang impur
;LA# ; qu'un
;LA#
;LA#
;d1
;DOb ; sang
;d1
;REb ; im
;REb
;d
;SOL ; pur
;SOL
;SOL
;d2
; ---------------------- abreuve nos sillons
;REb ; a
;REb
;d
;DOb ; breu
;DOb
;DOb
;LA ; ve
;d1
;LA# ; nos
;d1
;SOL ; si
;FA ; llons
;FA
goto main
; ################################################################################################
santiano
; ------------------------ C'est un fameux trois-mats
SI ; c'est
SI
d
MI ; un
d1
MI ; fa
d
MI ; meux
s1
FA# ; trois
SOL ; mats
SOL
d1
; ------------------------- Fin comme un oiseau
SOL ; fin
LA ; comme
d1
SI ; un
d1
SI ; oi
LA ; seau
LA
LA
d2
d2
; --------------------- Hisse et haut Santiano
REb ; Hiss
d
REb ; é
d
SI ; haut
SI
SI
;goto main
d1
d1
MI ; San
FA# ; ti
SOL ; a
LA ; a
d
LA ; no
LA
LA
d2
; ------------------ Dix-huit noeuds, quatre-cent tonneaux
LA ; dix
d
LA ; huit
d1
LA ; noeuds
LA
d1
FA# ; qua
SOL ; tre
LA ; cent
LA
d1
FA# ; to
MI ; o
RE ; nneaux
; ------------------ Je suis fier d'y être matelot
d2
MI ; je
d1
FA# ; suis
SOL ; fier
d1
SOL ; d'y
d1
FA# ; e
d
RE ; tre
d1
MI ; ma
d
MI ; te
d
MI ; lot
MI
goto main
;----------------------------------------- FAA
faa
bsf Led_SOL
bsf Led_DO
movlw duree_faa
movwf cmpt3
movlw 1
movwf cmpt4
faa1a
decfsz cmpt3
goto faa1b
decfsz cmpt4
goto faa1b
bcf Led_DO
bcf Led_SOL
return
faa1b
bsf pin_buzzer
call tempo_DO1
bcf pin_buzzer
call tempo_DO1
goto faa1a
tempo_FAA ; 175hz
; Délai 2 857 Cycles de la machine
; Durée du délai 2857 microsecond
; Fréquence de l'oscillateur 4 MHZ
movlw .180
movwf Reg_1
movlw .4
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
nop
nop
return
;----------------------------------------- FA#A
fa#a
bsf Led_SOL
bsf Led_DO
movlw duree_fa#a
movwf cmpt3
movlw 1
movwf cmpt4
fa#a1a
decfsz cmpt3
goto fa#a1b
decfsz cmpt4
goto fa#a1b
bcf Led_DO
bcf Led_SOL
return
fa#a1b
bsf pin_buzzer
call tempo_FA#A
bcf pin_buzzer
call tempo_FA#A
goto fa#a1a
tempo_FA#A ; 185hz
; Délai 2 702 Cycles de la machine
; Durée du délai 2702 microsecond
; Fréquence de l'oscillateur 4 MHZ
movlw .129
movwf Reg_1
movlw .4
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
return
;----------------------------------------- SOLA
sola
bsf Led_RE
bsf Led_FA
movlw duree_sola
movwf cmpt3
movlw 1
movwf cmpt4
sola1a
decfsz cmpt3
goto sola1b
decfsz cmpt4
goto sola1b
bcf Led_DO
bcf Led_FA
return
sola1b
bsf pin_buzzer
call tempo_SOLA
bcf pin_buzzer
call tempo_SOLA
goto sola1a
tempo_SOLA ; 196hz
; Délai 2 551 Cycles de la machine
; Durée du délai 2551 microsecond
; Fréquence de l'oscillateur 4 MHZ
movlw .78
movwf Reg_1
movlw .4
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
nop
nop
return
;----------------------------------------- SOL#A
sol#a
bsf Led_DO
bsf Led_FA
movlw duree_sol#a
movwf cmpt3
movlw 1
movwf cmpt4
sol#a1a
decfsz cmpt3
goto sol#a1b
decfsz cmpt4
goto sol#a1b
bcf Led_DO
bcf Led_FA
return
sol#a1b
bsf pin_buzzer
call tempo_SOL#A
bcf pin_buzzer
call tempo_SOL#A
goto sol#a1a
tempo_SOL#A ; 208hz
; Délai 2 403 Cycles de la machine
; Durée du délai 2403 microsecond
; Fréquence de l'oscillateur 4 MHZ
movlw .29
movwf Reg_1
movlw .4
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
nop
return
;----------------------------------------- LAA
laa
bsf Led_DO
bsf Led_SOL
movlw duree_laa
movwf cmpt3
movlw 1
movwf cmpt4
laa1a
decfsz cmpt3
goto laa1b
decfsz cmpt4
goto laa1b
bcf Led_DO
bcf Led_SOL
return
laa1b
bsf pin_buzzer
call tempo_LAA
bcf pin_buzzer
call tempo_LAA
goto laa1a
tempo_LAA ; 220hz
; Délai 2 273 Cycles de la machine
; Durée du délai 2273 microsecond
; Fréquence de l'oscillateur 4 MHZ
movlw .242
movwf Reg_1
movlw .3
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
nop
nop
return
;----------------------------------------- LA#A
la#a
bsf Led_RE
bsf Led_FA
movlw duree_laa
movwf cmpt3
movlw 1
movwf cmpt4
la#a1a
decfsz cmpt3
goto la#a1b
decfsz cmpt4
goto la#a1b
bcf Led_FA
bcf Led_RE
return
la#a1b
bsf pin_buzzer
call tempo_LA#A
bcf pin_buzzer
call tempo_LA#A
goto la#a1a
tempo_LA#A ; 233hz
; Délai 2 146 Cycles de la machine
; Durée du délai 2146 microsecond
; Fréquence de l'oscillateur 4 MHZ
movlw .200
movwf Reg_1
movlw .3
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
nop
return
;----------------------------------------- SIA
sia
bsf Led_RE
bsf Led_SOL
movlw duree_sia
movwf cmpt3
movlw 1
movwf cmpt4
sia1a
decfsz cmpt3
goto sia1b
decfsz cmpt4
goto sia1b
bcf Led_SOL
bcf Led_RE
return
sia1b
bsf pin_buzzer
call tempo_SIA
bcf pin_buzzer
call tempo_SIA
goto sia1a
tempo_SIA ; 247hz
; Délai 2 024 Cycles de la machine
; Durée du délai 2024 microsecond
; Fréquence de l'oscillateur 4 MHZ
movlw .159
movwf Reg_1
movlw .3
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
nop
nop
return
;----------------------------------------- DO
do
bsf Led_RE
bsf Led_DO
movlw duree_do
movwf cmpt3
movlw 1
movwf cmpt4
do1a
decfsz cmpt3
goto do1b
decfsz cmpt4
goto do1b
bcf Led_DO
bcf Led_RE
return
do1b
bsf pin_buzzer
call tempo_DO1
bcf pin_buzzer
call tempo_DO1
goto do1a
tempo_DO1 ; 262hz
; Délai 1 908 Cycles de la machine
; Durée du délai 1908 microsecond
; Fréquence de l'oscillateur 4 MHZ
movlw .121
movwf Reg_1
movlw .3
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
return
;----------------------------------------- DO#
do#
bsf Led_DO
bsf Led_RE
movlw duree_do#
movwf cmpt3
movlw 1
movwf cmpt4
do#1a
decfsz cmpt3
goto do#1b
decfsz cmpt4
goto do#1b
bcf Led_DO
bcf Led_RE
return
do#1b
bsf pin_buzzer
call tempo_DO#1
bcf pin_buzzer
call tempo_DO#1
goto do#1a
tempo_DO#1 ; 277hz
; Délai 1 805 Cycles de la machine
; Durée du délai 1805 microsecond
; Fréquence de l'oscillateur 4 MHZ
movlw .86
movwf Reg_1
movlw .3
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
nop
nop
return
;----------------------------------------- RE
re
bsf Led_RE
bsf Led_DO
movlw duree_re
movwf cmpt3
movlw 1
movwf cmpt4
re1a
decfsz cmpt3
goto re1b
decfsz cmpt4
goto re1b
bcf Led_RE
bcf Led_DO
return
re1b
bsf pin_buzzer
call tempo_RE1
bcf pin_buzzer
call tempo_RE1
goto re1a
tempo_RE1 ; 294hz
; Délai 1 700 Cycles de la machine
; Durée du délai 1700 microsecond
; Fréquence de l'oscillateur 4 MHZ
movlw .51
movwf Reg_1
movlw .3
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
nop
nop
return
;----------------------------------------- RE#
re#
bsf Led_RE
bsf Led_FA
movlw duree_re#
movwf cmpt3
movlw 1
movwf cmpt4
re#1a
decfsz cmpt3
goto re#1b
decfsz cmpt4
goto re#1b
bcf Led_RE
bcf Led_FA
return
re#1b
bsf pin_buzzer
call tempo_RE#1
bcf pin_buzzer
call tempo_RE#1
goto re#1a
tempo_RE#1 ; 311hz
; Délai 1 607 Cycles de la machine
; Durée du délai 1607 microsecond
; Fréquence de l'oscillateur 4 MHZ
movlw .20
movwf Reg_1
movlw .3
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
nop
nop
return
;----------------------------------------- MI
mi
bsf Led_FA
bsf Led_SOL
movlw duree_mi
movwf cmpt3
movlw 1
movwf cmpt4
mi1a
decfsz cmpt3
goto mi1b
decfsz cmpt4
goto mi1b
bcf Led_FA
bcf Led_SOL
return
mi1b
bsf pin_buzzer
call tempo_MI1
bcf pin_buzzer
call tempo_MI1
goto mi1a
tempo_MI1 ; 330hz
; Délai 1 515 Cycles de la machine
; Durée du délai 1515 microsecond
; Fréquence de l'oscillateur 4 MHZ
movlw .246
movwf Reg_1
movlw .2
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
nop
nop
return
;----------------------------------------- FA
fa
bsf Led_DO
bsf Led_FA
movlw duree_fa
movwf cmpt3
movlw 1
movwf cmpt4
fa1a
decfsz cmpt3
goto fa1b
decfsz cmpt4
goto fa1b
bcf Led_DO
bcf Led_FA
return
fa1b
bsf pin_buzzer
call tempo_FA1
bcf pin_buzzer
call tempo_FA1
goto fa1a
tempo_FA1 ; 349hz
; Délai 1 432 Cycles de la machine
; Durée du délai 1432 microsecond
; Fréquence de l'oscillateur 4 MHZ
movlw .219
movwf Reg_1
movlw .2
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
return
;----------------------------------------- FA#
fa#
bsf Led_FA
bsf Led_SOL
movlw duree_fa#
movwf cmpt3
movlw 1
movwf cmpt4
fa#1a
decfsz cmpt3
goto fa#1b
decfsz cmpt4
goto fa#1b
bcf Led_FA
bcf Led_SOL
return
fa#1b
bsf pin_buzzer
call tempo_FA#1
bcf pin_buzzer
call tempo_FA#1
goto fa#1a
tempo_FA#1 ; 370hz
; Délai 1 351 Cycles de la machine
; Durée du délai 1351 microsecond
; Fréquence de l'oscillateur 4 MHZ
movlw .192
movwf Reg_1
movlw .2
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
return
;----------------------------------------- SOL
sol
bsf Led_RE
bsf Led_SOL
movlw duree_sol
movwf cmpt3
movlw 1
movwf cmpt4
sol1a
decfsz cmpt3
goto sol1b
decfsz cmpt4
goto sol1b
bcf Led_SOL
bcf Led_RE
return
sol1b
bsf pin_buzzer
call tempo_SOL1
bcf pin_buzzer
call tempo_SOL1
goto sol1a
tempo_SOL1 ;392hz
; Délai 1 275 Cycles de la machine
; Durée du délai 1275 microsecond
; Fréquence de l'oscillateur 4 MHZ
movlw .166
movwf Reg_1
movlw .2
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
nop
nop
return
;----------------------------------------- SOL#
sol#
bsf Led_SOL
bsf Led_LA
movlw duree_sol#
movwf cmpt3
movlw 1
movwf cmpt4
sol#1a
decfsz cmpt3
goto sol#1b
decfsz cmpt4
goto sol#1b
bcf Led_SOL
bcf Led_LA
return
sol#1b
bsf pin_buzzer
call tempo_SOL#1
bcf pin_buzzer
call tempo_SOL#1
goto sol#1a
tempo_SOL#1 ;415hz
; Délai 1 204 Cycles de la machine
; Durée du délai 1204 microsecond
; Fréquence de l'oscillateur 4 MHZ
movlw .143
movwf Reg_1
movlw .2
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
return
;----------------------------------------- LA
la
bsf Led_SOL
bsf Led_LA
movlw duree_la
movwf cmpt3
movlw 1
movwf cmpt4
la1a
decfsz cmpt3
goto la1b
decfsz cmpt4
goto la1b
bcf Led_LA
bcf Led_SOL
return
la1b
bsf pin_buzzer
call tempo_LA1
bcf pin_buzzer
call tempo_LA1
goto la1a
tempo_LA1; 440hz
; Délai 1 136 Cycles de la machine
; Durée du délai 1136 microsecond
; Fréquence de l'oscillateur 4 MHZ
movlw .120
movwf Reg_1
movlw .2
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
nop
return
;----------------------------------------- LA#
la#
bsf Led_LA
bsf Led_SOL
movlw duree_la#
movwf cmpt3
movlw 1
movwf cmpt4
la#1a
decfsz cmpt3
goto la#1b
decfsz cmpt4
goto la#1b
bcf Led_LA
bcf Led_SOL
return
la#1b
bsf pin_buzzer
call tempo_LA#1
bcf pin_buzzer
call tempo_LA#1
goto la#1a
tempo_LA#1; 466hz
; Délai 1 073 Cycles de la machine
; Durée du délai 1073 microsecond
; Fréquence de l'oscillateur 4 MHZ
movlw .99
movwf Reg_1
movlw .2
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
nop
return
;----------------------------------------- SI
si
bsf Led_FA
bsf Led_RE
movlw duree_si
movwf cmpt3
movlw 1
movwf cmpt4
si1a
decfsz cmpt3
goto si1b
decfsz cmpt4
goto si1b
bcf Led_FA
bcf Led_RE
return
si1b
bsf pin_buzzer
call tempo_SI1
bcf pin_buzzer
call tempo_SI1
goto si1a
tempo_SI1 ; 494hz
; Délai 1 012 Cycles de la machine
; Durée du délai 1012 microsecond
; Fréquence de l'oscillateur 4 MHZ
movlw .79
movwf Reg_1
movlw .2
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
return
;----------------------------------------- DOb
dob
bsf Led_DO
bsf Led_FA
movlw duree_dob
movwf cmpt3
movlw 1
movwf cmpt4
dob1a
decfsz cmpt3
goto dob1b
decfsz cmpt4
goto dob1b
bcf Led_DO
bcf Led_FA
return
dob1b
bsf pin_buzzer
call tempo_DOb1
bcf pin_buzzer
call tempo_DOb1
goto dob1a
tempo_DOb1 ; 523hz
; Délai 956 Cycles de la machine
; Durée du délai 956 microsecond
; Fréquence de l'oscillateur 4 MHZ
movlw .60
movwf Reg_1
movlw .2
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
nop
return
;----------------------------------------- DOb#
do#b
bsf Led_DO
bsf Led_RE
movlw duree_dob#
movwf cmpt3
movlw 1
movwf cmpt4
dob#1a
decfsz cmpt3
goto dob#1b
decfsz cmpt4
goto dob#1b
bcf Led_DO
bcf Led_RE
return
dob#1b
bsf pin_buzzer
call tempo_DOb#1
bcf pin_buzzer
call tempo_DOb#1
goto dob#1a
tempo_DOb#1 ; 554hz
; Délai 902 Cycles de la machine
; Durée du délai 902 microsecond
; Fréquence de l'oscillateur 4 MHZ
movlw .42
movwf Reg_1
movlw .2
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
nop
return
;----------------------------------------- REb
reb
bsf Led_RE
bsf Led_DO
movlw duree_reb
movwf cmpt3
movlw 1
movwf cmpt4
reb1a
decfsz cmpt3
goto reb1b
decfsz cmpt4
goto reb1b
bcf Led_RE
bcf Led_DO
return
reb1b
bsf pin_buzzer
call tempo_REb1
bcf pin_buzzer
call tempo_REb1
goto reb1a
tempo_REb1 ; 587hz
; Délai 851 Cycles de la machine
; Durée du délai 851 microsecond
; Fréquence de l'oscillateur 4 MHZ
movlw .25
movwf Reg_1
movlw .2
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
nop
return
; -------------------------------------------
tempo0
; Délai 10 000 Cycles de la machine
; Durée du délai 10 millisecond
; Fréquence de l'oscillateur 4 MHZ
movlw .251
movwf Reg_1
movlw .13
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
nop
nop
return
tempo1
; Délai 50 000 Cycles de la machine
; Durée du délai 50 millisecond
; Fréquence de l'oscillateur 4 MHZ
movlw .238
movwf Reg_1
movlw .65
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
nop
return
tempo2
; Délai 100 000 Cycles de la machine
; Durée du délai 100 millisecond
; Fréquence de l'oscillateur 4 MHZ
movlw .221
movwf Reg_1
movlw .130
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
nop
nop
return
END
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par F6FCO le mar. 13 févr. 2018 14:16, modifié 2 fois.
Le JukeBox du vieux Geek ringard
Le JukeBox du vieux Geek ringard
- F6FCO
Expert- Messages : 1413
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
Ah, on pilote une Ford Mustang mais on est romantique .
Ben ouais, suffit de trouver la partition et d'aligner les notes dans le code mais avec un seul buzzer ce sera seulement l'accompagnement ou alors seulement la mélodie. J'ai commandé d'autres buzzers pour essayer de coder un air avec l'accompagnement. Comme il y a des tempos sur les notes il faudra deux PIC, un par buzzer, avec un PIC maitre et un PIC esclave.
Ben ouais, suffit de trouver la partition et d'aligner les notes dans le code mais avec un seul buzzer ce sera seulement l'accompagnement ou alors seulement la mélodie. J'ai commandé d'autres buzzers pour essayer de coder un air avec l'accompagnement. Comme il y a des tempos sur les notes il faudra deux PIC, un par buzzer, avec un PIC maitre et un PIC esclave.
Le JukeBox du vieux Geek ringard
- Gérard
Expert- Messages : 1644
- Âge : 65
- Enregistré en : septembre 2015
- Localisation : Alsace - Haut-Rhin
F6FCO a écrit :Ah, on pilote une Ford Mustang mais on est romantique .
Ben ouais, suffit de trouver la partition et d'aligner les notes dans le code mais avec un seul buzzer ce sera seulement l'accompagnement ou alors seulement la mélodie. J'ai commandé d'autres buzzers pour essayer de coder un air avec l'accompagnement. Comme il y a des tempos sur les notes il faudra deux PIC, un par buzzer, avec un PIC maitre et un PIC esclave.
Je plaisantais quant au codage.
Oui romantique depuis toujours et en Mustang depuis quelques mois.
Le JukeBox du vieux Geek ringard
Bonjour F6FCO, Gérard, et tout le forum,
pour le code, un truc pareille faut le mettre dans réalisation, le mieux serait de mettre les titres dans une EEPROM, genre 24C512
ça te permettrais d'en stocker pas mal.
J'arrive à reconnais les titres de musique très vite, mais je suis incapable de faire de la musique, car j'ai pas l'oreille musicale.
On peu toujours apprendre et jouer par méthode, mais je crois avant tout qu'il faut avoir l'oreille.
Certaine personne peuvent jouer des titres de musique sans aucune partition, il écoute une fois le titre, et reproduise ce qu'il on
entendu, étonnant.
A raison de 0.50€ par titre, tu vas devenir millionnaire, bon pour la marseillaise heureusement il y a pas de copyright.
Sinon pour le code
A+
pour le code, un truc pareille faut le mettre dans réalisation, le mieux serait de mettre les titres dans une EEPROM, genre 24C512
ça te permettrais d'en stocker pas mal.
J'arrive à reconnais les titres de musique très vite, mais je suis incapable de faire de la musique, car j'ai pas l'oreille musicale.
On peu toujours apprendre et jouer par méthode, mais je crois avant tout qu'il faut avoir l'oreille.
Certaine personne peuvent jouer des titres de musique sans aucune partition, il écoute une fois le titre, et reproduise ce qu'il on
entendu, étonnant.
A raison de 0.50€ par titre, tu vas devenir millionnaire, bon pour la marseillaise heureusement il y a pas de copyright.
Sinon pour le code
A+
Le JukeBox du vieux Geek ringard
- ducran lapoigne
Débutant- Messages : 96
- Enregistré en : septembre 2015
bonjour tous,
cela me rappelle mon premier microprocesseur : un SC/MP sur un kit MK14
il savait faire de la musique mais comme on écrivait en RAM fallait recommencer souvent
car pas de sauvegarde possible dans le kit de base
j' avais trouvé le programme dans elektor (en 1978 ...)
heureusement qu'il y avait cette revue car question oreille musicale: pas mieux que temps-x
cela me rappelle mon premier microprocesseur : un SC/MP sur un kit MK14
il savait faire de la musique mais comme on écrivait en RAM fallait recommencer souvent
car pas de sauvegarde possible dans le kit de base
j' avais trouvé le programme dans elektor (en 1978 ...)
heureusement qu'il y avait cette revue car question oreille musicale: pas mieux que temps-x
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Le JukeBox du vieux Geek ringard
- F6FCO
Expert- Messages : 1413
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
Temps-x a écrit : je suis incapable de faire de la musique, car j'ai pas l'oreille musicale.
Mais moi non plus, j'ai fais du littéral, trouvé des partitions et aligné les macros de notes dans le main, quand il y avait des fausses notes c'est ma femme guitariste qui prenait la main pour me dire ou çà couaquait. Mon boulot a été de coder les notes en respectant les bonnes tempos mais çà par calcul on y arrive vite. Et çà m'a fait une découverte de la musique, les octaves et les bémols je connaissais les mots mais je ne savais pas ce que c'était avant.
Temps-x a écrit : A raison de 0.50€ par titre, tu vas devenir millionnaire, bon pour la marseillaise heureusement il y a pas de copyright.
C'est plutôt le contraire qui pourrait se passer, payer des droits à la Sacem pour utilisation de musiques
Pour la place en RAM je suis au taquet sur le 16F84 mais j'ai aussi fais tourner le programme sur 16F88 et 16F876 et il reste encore pas mal de place pour plusieurs autres ziks, mais comme je n'ai que 3 poussoirs...
J'ai modifié le programme sur 16F876 avec un poussoir sur l'interruption rb4/rb7 pour pouvoir interrompre une musique en cours et changer suivant le nombre d'appuis. Ca fonctionne mais on n'est pas trop maitre du truc car avec les rebonds de poussoir on ne tombe pas toujours sur celle qu'on voudrait, alors faut bricoler en cherchant. J'avais mis une tempo de 10ms sur l'appui poussoir mais j'ai fini par l'enlever car çà perturbe la musique en cours quand on appuie.
PS: J'avais voulu poster ce sujet (comme pour les platines V1, V2 et V3 ainsi que les deux testeurs TTL) dans le forum Réalisations mais je n'y accès qu'en lecture, si tu peux le faire à ma place.
Le JukeBox du vieux Geek ringard
-
Jérémy
Administrateur du site- Messages : 2723
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonjour par ici,
Trois poussoirs = 8 possibilités
F6FCO a écrit :Source du message mais comme je n'ai que 3 poussoirs...
Trois poussoirs = 8 possibilités
Le JukeBox du vieux Geek ringard
Le JukeBox du vieux Geek ringard
Bonsoir F6FCO, Gérard, Jérémy, et tous le forum,
Il faut être sur que Pous1 soit relâché, donc confirmation qu'il repasse à 1, ça donne ceci
Le modérateur c'est mazertoc, puis Jérémy, à eux de t'expliquer comment tu dois procéder, sinon je veux bien le faire, mais c'est pas
mon œuvre, j’aurais l’expression de voler ce que tu as fait.
Normalement tu vas ICI et tu clics sur ceci
Tu écris comme si tu répondais dans ce forum, après le modérateur après quelque jour va te créer le post
que tu pourras modifier en fonction de l'évolution de ton projet.
Ben ouais, en peu même en faire plus, c'est le principe de l'encodeur rotatif.
A+
F6FCO a écrit :
Source du message Ca fonctionne mais on n'est pas trop maitre du truc car avec les rebonds de poussoir on ne tombe pas toujours sur celle qu'on voudrait
Il faut être sur que Pous1 soit relâché, donc confirmation qu'il repasse à 1, ça donne ceci
Code : Tout sélectionner
poussoir1
btfsc Pous1 ; teste le poussoir 1, si pressé Pous1=0 et on saute
goto poussoir2
btfss Pous1 ; confirmé que Pous1 à été relâché
goto $-D'1'
goto marseillaise
poussoir2
F6FCO a écrit :
Source du message PS: J'avais voulu poster ce sujet (comme pour les platines V1, V2 et V3 ainsi que les deux testeurs TTL) dans le forum Réalisations mais je n'y accès qu'en lecture, si tu peux le faire à ma place.
Le modérateur c'est mazertoc, puis Jérémy, à eux de t'expliquer comment tu dois procéder, sinon je veux bien le faire, mais c'est pas
mon œuvre, j’aurais l’expression de voler ce que tu as fait.
Normalement tu vas ICI et tu clics sur ceci
Tu écris comme si tu répondais dans ce forum, après le modérateur après quelque jour va te créer le post
que tu pourras modifier en fonction de l'évolution de ton projet.
Jérémy à écrit
Trois poussoirs = 8 possibilités
Ben ouais, en peu même en faire plus, c'est le principe de l'encodeur rotatif.
A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Retourner vers « Coin Fourre-tout »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 53 invités