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 ---
Tout ce qui n'a pas de catégorie !
Le JukeBox du vieux Geek ringard
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#1 Message par F6FCO » mar. 13 févr. 2018 13:20

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.
Geek_JukeBox84A.zip



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.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

Le JukeBox du vieux Geek ringard
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#2 Message par Gérard » mar. 13 févr. 2018 13:56

Hello F6,
Je m'entraine sur ma guitare à jouer Hélène de Rock Voisine. Tu peux coder? exit
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

Le JukeBox du vieux Geek ringard
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#3 Message par F6FCO » mar. 13 févr. 2018 14:13

Ah, on pilote une Ford Mustang mais on est romantique :-D .
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.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

Le JukeBox du vieux Geek ringard
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#4 Message par Gérard » mar. 13 févr. 2018 20:52

F6FCO a écrit :Ah, on pilote une Ford Mustang mais on est romantique :-D .
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. :-D
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

Le JukeBox du vieux Geek ringard
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#5 Message par Temps-x » jeu. 15 févr. 2018 01:23

Bonjour F6FCO, Gérard, et tout le forum,

:bravo: 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. :wink:

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. :shock:

:sifflotte: A raison de 0.50€ par titre, tu vas devenir millionnaire, bon pour la marseillaise heureusement il y a pas de copyright.

Sinon :+1: pour le code

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Le JukeBox du vieux Geek ringard
ducran lapoigne
Avatar de l’utilisateur
Débutant
Débutant
Messages : 96
Enregistré en : septembre 2015

#6 Message par ducran lapoigne » jeu. 15 févr. 2018 09:53

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

nostalgie.jpg
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Le JukeBox du vieux Geek ringard
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#7 Message par F6FCO » jeu. 15 févr. 2018 10:03

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. :lol:

Temps-x a écrit : :sifflotte: 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 8-)

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.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

Le JukeBox du vieux Geek ringard
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#8 Message par Jérémy » jeu. 15 févr. 2018 11:07

Bonjour par ici,

F6FCO a écrit :Source du message mais comme je n'ai que 3 poussoirs...


Trois poussoirs = 8 possibilités humour!!
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Le JukeBox du vieux Geek ringard
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#9 Message par Gérard » jeu. 15 févr. 2018 11:29

Avec une entrée ana, tu peux utiliser plusieurs poussoirs.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

Le JukeBox du vieux Geek ringard
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#10 Message par Temps-x » ven. 16 févr. 2018 01:23

Bonsoir F6FCO, Gérard, Jérémy, et tous le forum,

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

Répondre.jpg


Tu écris comme si tu répondais dans ce forum, après le modérateur après quelque jour :sifflotte: 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 humour!!


Ben ouais, en peu même en faire plus, c'est le principe de l'encodeur rotatif. :wink:

==> A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:


Retourner vers « Coin Fourre-tout »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 31 invités