nondediode a écrit :Source du message J'avais donc pensé utiliser le croisement de 4 lignes 4 colonnes du port B pour obtenir 16 boutons
En réalité on peut obtenir beaucoup plus que cela avec 8 entrées, on pourrait obtenir 254 boutons.
Suffirait de faire un ET logique.
Avec 4 entrées tu peux obtenir 16 touches
B'00000000' ; <--- non compté
B'00000001' ; <--- touche 1
B'00000010' ; <--- touche 2
B'00000011' ; <--- touche 3
B'00000100' ; <--- touche 4
B'00000101' ; <--- touche 5
B'00000110' ; <--- touche 6
B'00000111' ; <--- touche 7
B'00001000' ; <--- touche 8
B'00001001' ; <--- touche 9
B'00001010' ; <--- touche 10
B'00001011' ; <--- touche 11
B'00001100' ; <--- touche 12
B'00001101' ; <--- touche 13
B'00001110' ; <--- touche 15
B'00001111' ; <--- touche 16
A titre d'exemple voici un bout de code pour gérer plusieurs touches
Code : Tout sélectionner
debut ; programme principal
touche1
movfw B'00000001'
andwf PORTB,W
xorlw B'00000001'
btfss STATUS,Z
goto touche2
; traitement
goto debut
touche2
movfw B'00000010'
andwf PORTB,W
xorlw B'00000010'
btfss STATUS,Z
goto touche3
; traitement
goto debut
touche3
movfw B'00000011'
andwf PORTB,W
xorlw B'00000011'
btfss STATUS,Z
goto touche3
; traitement
goto debut
Le plus compliqué serait de faire le PCB.
nondediode a écrit :Source du message J'avais donc pensé utiliser le croisement de 4 lignes 4 colonnes du port B pour obtenir 16 boutons dont chaque bouton serait mémorisée dans la mémoire de l'eeprom.
Bonne idée de mémoriser en eeprom les touches, sa permet de modifier le code à tour moment, mais il y a un Hic...
Comme le temps de la lecture en EEPROM est trop long, Il faut copier le code en Ram pour l'envoyer.
Et comme le Pic16F84A a :
- 68 Octets de RAM
- 64 Octets d'EEPROM .
Ce qui nous laisse très peu de place pour loger tes (8 boutons + code), mais faisable si ton code ne dépasse pas 4 octets.
nondediode a écrit :Source du message Un quartz de 4Mhz
Est-ce possible?
C'est parfait un quartz à 4 Mhz, le projet est réalisable.
A+