appolofrance
Messages postés46Date d'inscriptionmercredi 8 mai 2002StatutMembreDernière intervention26 mars 2008
-
21 mars 2008 à 00:41
Profil bloqué -
26 mars 2008 à 18:34
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
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
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
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