Bonsoir,
Je voulais réalisé un cadence mètre (j'ai deja demandé de l'aide a ce sujet) mais j'ai du laisser de coté par manque de temps.
Je m'y remet donc mais n'arrive pas a comprendre ce programme (l'affichage):
les variables w12 et w13 sont elle programmées par défaut pour l'affichage? je ne vois pas ou elle sont affectées a ça...Code:;Cadencemètre peudo multitaches #picaxe 20M2 start0: symbol CLK = B.1 symbol DIN= B.2 symbol load =B.3 symbol unit=b4 symbol diz=b5 symbol cadence=b6 symbol cpt=b7 symbol ncoup=b8 ;w13 et w12 utilisées pour affichage symbol temps=w11 pullup %0100000000000000 ;activation résistance pullup sur C.6 ;******** initialisation 7219 ******* b27=$0f 'display test b26=$00 '=normal gosub shiftt b27=$09 'mode décodage b26=%11111111 'code B gosub shiftt b27=$0b 'limite scanner = Nbre de digits b26=$01 '$04=5 digits ,$03=4 digits,, etc...; gosub shiftt b27=$0c 'shutdown mode b26=$01 '=normal (afficheur actif) gosub shiftt b27=$0a 'luminosité b26=$06 '=croissante de 0 à 15, ici c'est 4 gosub shiftt diz=8 ;test unit=8 ;affichage gosub affich ;**** Boucle principale ***** do temps=0 ncoup=0 do do loop while pinC.6=1 ;attente appui do loop while pinC.6=0 ;attente relachement inc ncoup ;incrémentation ncoup loop while ncoup < 10 ;comptage 120 coups cadence=6000/temps ;calcul cadence cadence=cadence//100 ;écrétage 2 digits diz=cadence/10 ;dizaines unit=cadence//10 ;unités gosub affich ;affichage loop ;**** Compteur 1/10 de secondes ********** start1: Do inc temps pause 100 loop ;**** Option RAZ au bout de 12 secondes sans action start2: do if temps>120 then unit=0:diz=0 gosub affich temps=0 endif loop ;**** Sub affichage *************** affich: b27=2 ;digit 3 b26=unit ;ascii -> numérique gosub shiftt ;affichage b27=1 b26=diz gosub shiftt ;affichage return ;******** Sous programme affichage ************************* ;Format du registre sur 16 bits: ;|------------------------------w13------------------------------| | ;|-----------b27-----------------|------------b26 ---------------| ;|-X-|-X-|-X-|-X-|--ADRESSE------|----------DONNEES--------------| ;|D15|D14|D13|D12|D11|D10|D09|D08|D07|D06|D05|D04|D03|D02|D01|D00| ;Ex: chiffre 5 dans digit 2 ;|-X-|-X-|-X-|-X-| 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | ;La broche DIN va prendre successivementla valeur de chaque bit de w13, scanné de gauchee à droire shiftt: for cpt=1 to 16 ;test des 16 bits de w13 w12=w13 & $8000 ;w13 = b27,b26 & %1000 0000 0000 0000: on ne garde que le 1er bit à gauche de w12 low DIN ; broche DIN à 0 à priori if w12=0 then saut ;w12 contient la valeur (0 ou 1) à transmettre high DIN ;;on ne passe ici que si w12 <> 0, alors DIN =1 (évidemment) saut: pulsout CLK,1 ; envoi 1 pulse horloge pour valider DIN w13=w13*2 ; on décale w13 vers la gauche pour examiner le bit suivant next cpt pulsout LOAD,1 ;chargement du registre terminé, un pulse sur load valide le registre (commande ou affichage) return
que veut dire "pullup %0100000000000000 ;activation résistance pullup sur C.6"
Sur les sorties load et clock on peut envoyer une impulsion quelconque?
J'ai été voir sur le site de Mag1 pour connaitre la relation des brochages de mon afficheur 2 digits avec max7219 ( Din= Si...) mais je ne trouve pas le sc barre ... j,ai seulement Vcc(V+), GND(0v), Si(DIN), CS#(?), sck(clock?), SO (serial out?)
Merci pour votre aide
(Programme de Mag1)
-----