Numéros des ports.

jojojo

Senior Member
#1
Hello!

J'avais déjà posé la question, et obtenu la réponse (que j'ai oublié de noter... :LOL:).

Il est impossible d'allouer une variable à un nom de port .
Exemple:
For b0= 0 To 4
High C.b0
Next b0


MAIS ...
Quelqu'un (Michel, je crois), m'avait répondu, que les ports ont un numéro.
J'ai fouillé un peu partout, dans les docs, mais, j'ai été infoutu de retrouver ça.

Si une bonne âme ...:)

Cimercoubô.
 

lbenson

Senior Member
#2
Untested, but I think you should be able to do this:

For b0= 0 To 4
b1 = C.0+b0 ' C.0 is just a number
High b1
Next b0

Or this
for b0=C.0 to C.4
high b0
next b0

or this
dirsC=%00011111 ' C.0-C.4 are outputs
pinsC=%11111 ' C.0-C.4 are set high
 

MGU

Senior Member
#3
Hello!

J'avais déjà posé la question, et obtenu la réponse (que j'ai oublié de noter... :LOL:).

Il est impossible d'allouer une variable à un nom de port .
Exemple:
For b0= 0 To 4
High C.b0
Next b0


MAIS ...
Quelqu'un (Michel, je crois), m'avait répondu, que les ports ont un numéro.
J'ai fouillé un peu partout, dans les docs, mais, j'ai été infoutu de retrouver ça.

Si une bonne âme ...:)

Cimercoubô.

Bonjour,

Oui, les ports ont un simple numéro:
de 0 à 7 pour les B, de 8 à 14 pour les C, etc.
Tu peux faire un simple programme, genre ci dessous et faire tourner le simu

Code:
#picaxe 40X2

do
    for b1=0 to 32
        toggle b1
        pause 1000
    next
loop
MM
 

jojojo

Senior Member
#5
Bon, encore l'emm..deur de service ...:)

Comment faire fonctionner ça:

For b3=3 To 5
High b3
For b4=8 to 11
if pinb4=1 then
Gosub relache
End if
Next b4
Next b3




Pinb4, ben y veut pas ! Sniff !
 

PieM

Senior Member
#6
if pinb.4=1 then

Maintenant si c'est pour tester l'état des entrées du port C,
il faut soit faire b5 = pinsC et tu testes les bits de b5
ou bien pour savoir si tu as une entrées à 1 : if pinsC <>0 then ... "y a du monde"

La solution lbenson marche très bien aussi . B.x C.x etc ne sont que des variables internes de l'interprêteur, et non les pins du Pic.
 
Last edited:

jojojo

Senior Member
#7
Ouf !

Merci d'avoir fait le point ... ;) mais non . Je me suis mal exprimé

Je teste un port en entrée.

If pinC.0=1 Then ....

C'est OK . Mais,

If pin8=1 Then ...

Il ne veut pas. Or, 8, c'est bien C.0, non ?

Le but, c'est de pouvoir tester des entrées "en rafale", dans une boucle For Next.

La méthode b5=PinsC me semble bien, je vais tenter... Reste à tester de façon futée, tous les bit de b5, dans une boucle.
 
Last edited:

jojojo

Senior Member
#9
14M2.

Juste en train de tester une routine de clavier matricé.
Quatre IN trois OUT

Petit bout de code , en cours d'écriture:

Code:
#picaxe 14M2
Setfreq M16        '16Mhz
DirsB=%101111  
DirsC=%111010
Symbol CTC=C.4
Symbol LedProg=B.0
Symbol ILSPROG=PinB.1
Symbol BUZ=B.2
Symbol Premier=b0
Symbol Second=b1
Symbol Valid=b2

Read 0,Premier
Read 1,second

Do

If ILSPROG=1 Then
    Gosub Reprog
End if

Gosub ScruteClav

Loop

Reprog:


Return


ScruteClav:

For b3=3 To 5

    High b3

    For b4=8 to 11

        if pin.b4=1 then

            Gosub relache

            debug

        End if

    Next b4

Next b3

Relache:


Return

Deux versions, ici, je m'occupe de la une:

shemaV1_et_V2.jpg
 

PieM

Senior Member
#10
Rich (BB code):
b2 = 1
For b3=0 To 7
b4 = pinsC and b2
if b4 <>0  then 'c'est que le bit rang b3 est à 1
gosub relache
endif
b2 = b2*2 'shift à gauche
next
end
 
Top