Sortie du 18F4550

Signaler
Messages postés
46
Date d'inscription
mercredi 8 mai 2002
Statut
Membre
Dernière intervention
26 mars 2008
-
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
-
Bonjour ,

Je souhaite activer une sortie du pic 18F4550 avec un bouton,
comment l'ecrire en VB ?

Avec le Programme de Rylryl  il faut cliquer sur les led ...
'*****************************************************************
' Controle des 16 Sorties du PIC18F4550
'*****************************************************************
Private Sub Led_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)    If Led(Index).Picture ImageListe.ListImages.Item(3).Picture Then  ' Si Led OFF
        If Index <= 7 Then                          ' Si Led 1..8            PortValA PortValA + Led(Index).Tag    ' Sortie 1, 2 ...,8 1
        Else                                        ' Si Led 9..16            PortValB PortValB + Led(Index).Tag    ' Sortie 9, 10 ...,16 1
        End If
        Led(Index).Picture = ImageListe.ListImages.Item(1).Picture  ' Led (ON)
    Else                                                                ' Si Led = ON
        If Index <= 7 Then          ' Si Led 1..8            PortValA PortValA - Led(Index).Tag    ' Sortie 1, 2 ...,8 0
        Else                        ' Si Led 9..16            PortValB PortValB - Led(Index).Tag    ' Sortie 9, 10 ...,16 0
        End If
        Led(Index).Picture = ImageListe.ListImages.Item(3).Picture  ' Led (OFF)
    End If
       Buffer(0) 0                 ' REPORT-ID 0
   Buffer(1) = WritePortPIC      ' (Commande) d'écriture sur les 16 sorties du PIC18
   Buffer(2) = PortValA          ' Sorties 1..8 du PIC18
   Buffer(3) = PortValB          ' Sorties 9..16 du PIC18
   hidWriteEx VendorID, ProductID, Buffer(0) ' Envoyer la commande
End Sub
'*****************************************************************
Apparement une tranformation du programme ci-dessus est necessaire.

Merci encore pour le coup de pouce !
Paul
appolofrance
A voir également:

12 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
je pense que tu peux passer par un composant MsComm32 pour jouer avec tes ports paralleles et ports COM...

a voir ce que fait hidWriteEx
Messages postés
46
Date d'inscription
mercredi 8 mai 2002
Statut
Membre
Dernière intervention
26 mars 2008
5
le programme est fonctionnel mais je souhaite remplacer le code ci-dessus pour


activer ou desactiver une seule sortie avec un bouton.

Merci.
Paul



appolofrance
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
Une piste sans certitude que je te fournis
Le 18F4550 est d'après ce que j'ai compris avec le code un interface programmable avec 2 ports 8 bits en sortie
Je pense que la valeur Led(Index).Tag doit contenir l'activation ou non de l'allumage de la LED
Soit B0 à B7 les 8 LEDS du port A de ton 18F4550 par exemple
Pour allumer la LED B3 il faut surement mettre à 1 le bit 3 du mot de 8 bits qui représente Led(index).Tag et le mettre à 0 pour l'éteindre.
Ce mode de fonctionnement rappelle les PIA ( adaptateur d'interface parrallèle) que l'on pouvait coupler avec les microprocesseurs 6809 il y a un peu plus de 20 ans environ.
Cette réponse est sous toute réserve et je décline  toute responsabilité en cas de dommage matériel

bonne prog

GRENIER Alain
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
J'ai vu que tu avais posé la question pour lire une entrée sur ce même circuit
Son fonctionnement confirme mon précédent post

GRENIER Alain
Messages postés
46
Date d'inscription
mercredi 8 mai 2002
Statut
Membre
Dernière intervention
26 mars 2008
5
Pas de crainte pour me materiel je suis prudent !

Je n' ais pas reussit à piloter ma sortie ....je continue.

appolofrance
Messages postés
46
Date d'inscription
mercredi 8 mai 2002
Statut
Membre
Dernière intervention
26 mars 2008
5
PortValA = PortValA + 0 ' pour activer la sortie 1 du pic de 1 à 8

PortValB = PortValB + 0 ' pour activer la sortie 9 du pic de 9 à 16

PortValA = PortValA - 0 ' pour désactiver la sortie 1 du pic de 1 à 8

PortValB = PortValB - 0 ' pour désactiver la sortie 9 du pic de 9 à 16

(Pour exemple la sortie 0 est utilisee)

Ce qui est noté est à confirmer !

Sinon mes sorties sont actives au demarrage :
 Une reprogrammation de l' HEX s 'impose ?

Merci pour l 'info
Cordiales salutations



appolofrance
Messages postés
46
Date d'inscription
mercredi 8 mai 2002
Statut
Membre
Dernière intervention
26 mars 2008
5
Sa ne marche pas ...quelqu' un aurait une idee ?

appolofrance
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
A tout hasard essaie ceci

p représente la sortie 0 à 7 du port A
PortValA = 2 ^p     ' pour activer la sortie p ( p allant de 0 a 7) par mise à 1 du bit (les 7 autres sorties sont inactives)
PortValA = 255 - (2 ^p)     ' pour désactiver la sortie p ( p allant de 0 a 7) par mise à 0 du bit ( les 7 autres sorties sont actives)
PortValA = 255     ' pour activer les 8 sorties p ( p allant de 0 a 7) par mise à 1 des 8 bits
PortValA = 0     ' pour désactiver les 8 sorties p ( p allant de 0 a 7) par mise à 0 des 8 bits

GRENIER Alain
Messages postés
46
Date d'inscription
mercredi 8 mai 2002
Statut
Membre
Dernière intervention
26 mars 2008
5
Voila une idee !

Mais lequel est juste ?  C 'est pour l 'ecrire logiquement ...
 
i = 1 'sortie choisie
Bit = 2 ^ i
PortValA = PortValA + Bit     ' active
PortValA = PortValA - Bit      ' desactive

ou

i = 1 'sortie choisie
Bit = 2 ^ i
PortValA = Bit                         ' active
PortValA = Bit - Bit                  ' desactive

Les deux fonctionnent !
Merci
appolofrance
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
Salut Appolofrance
Les entrées ou sorties de chacun de 2 ports 8 bits vont de 0 à 7 et non de 1 à 8 ( en informatique on compte très souvent de 0 à 7 : prends les 8 bits d'un octet par exemple)

- Pour activer une sortie il faut mettre le bit associé à cette sortie à 1 : exemple pour la sortie 3 du port A cela donne  PortvalA = 00001000 en binaire soit 8 en décimale  ou 2 ^3 ( on retrouve ici le 2 ^p de mon post précédent)
- Pour désactiver une sortie il faut mettre le bit associé à cette sortie à 0 : exemple pour la sortie 3 du port A cela donne PortValA 11110111en binaire soit soit 247 : or 247 255 - 8 soit encore 255 - (2 ^3 )et on retrouve ici le 225 - (2^p) de mon post précédent

Je ne peux pas être plus clair

GRENIER Alain
Messages postés
46
Date d'inscription
mercredi 8 mai 2002
Statut
Membre
Dernière intervention
26 mars 2008
5
Merci , j' avais compris.
Mais 255  coupe toutes les autres sorties.

Je vais rester sur  :
i = 3
Bit = 2 ^ i
PortValA = PortValA + Bit        ' pour activer
PortValA = PortValA - Bit        ' pour desactiver

Salutations
Paul

appolofrance
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
Ok Appolofrance

Ton raisonnement permet de laisser le port dans l'état où il était et n'agit que sur la sortie spécifiée

A+ et bonne prog

GRENIER Alain