Commande de sorties

micharmi

Member
Bonjour,
Bien qu'ayant lu et relu le manuel et les Commandes, je coince un peu sur l'utilisation des différentes méthodes de commande des sorties (autres que High et Low)
Contexte: Picaxe 14M2
extrait de programme ci-dessous:
Code:
SYMBOL RSType = B.0
SYMBOL E = B.1
SYMBOL DB4 = B.2
SYMBOL DB5 = B.3
SYMBOL DB6 = B.4
SYMBOL DB7 = B.5
SYMBOL RS_CMDE = 00
SYMBOL RS_DATA = 01
SYMBOL CARACTERE = b12
; etc....

RS_bit = RS_CMDE
let outpinsB = CARACTERE & $F0/4 | RS_bit    ; solution 1

[COLOR="#FF0000"]let outpinsB = CARACTERE & $F0/4[/COLOR] ; solution 2

If RS_bit = 1 	Then high RSType             ; solution 2
		Else Low RSType
Endif 
Pulsout E,1
J'avais mis en oeuvre la solution 2,
mais j'ai trouvé des exemples de code qui utilisent une instruction de la forme de la solution 1 plus concise...

J'ai pas trouvé d'explications dans les manuels et je comprends pas quelle est la sortie activée par """| RS_bit""""
Par ailleurs si je voulais activer une sortie du port C, je suppose que je dois utiliser la forme de la solution 2

merci
correction en rouge
 
Last edited:

MGU

Senior Member
Bonjour,

Ce morceau de code concerne la commande d'un LCD en mode 4 bits comme décrit ici:
http://electromag1.over-blog.com/pages/LCD_alphanumerique_et_picaxes_M2-5587279.html

Les commandes outpinsB (ou outpinsC) permettent de configurer toutes les sorties B (ou C) en même temps. C'est pratique, mais pas toujours utile.
Dans l'exemple, RS_bit n'est pas un nom de port mais une variable valant 0 (si on envoie une commande) ou 1 si c'est un caractère.
J'ai moi même repomper ce code, mais il mériterait d'être un peu simplifier.

MM
 

westaust55

Moderator
Pour la ligne de programme :
let outpinsB = CARACTERE & $F0/4 | RS_bit ; solution 1

Comme mentionné, outpinsB peut servir à définir toutes les broches pour un seul port IO simultanément.

Dans l'exemple de code de l'écran LCD, la valeur écrite dans le port pour définir les sorties prend soit la nybble élevé ou faible (4 bits) à partir des données du caractère de l'écran LCD.

Le "|" est la fonction de math pour niveau-OR[/ b]. Yo pourrait remplacer le symbole abrégé avec “OR”.
Étant donné que la variable RS_bit a seulement une valeur de 0 ou 1, elle agira uniquement sur le bit (main droite) pour la valeur écrite dans les bits. Si RS_bit est un 1 la sortie qu'oui sera mis haut, sinon c'est définie faible.



voir page 22 dans le PICAXE 2 Manuel
 
Last edited:

micharmi

Member
Bonjour,

Ce morceau de code concerne la commande d'un LCD en mode 4 bits comme décrit ici:
http://electromag1.over-blog.com/pages/LCD_alphanumerique_et_picaxes_M2-5587279.html

Les commandes outpinsB (ou outpinsC) permettent de configurer toutes les sorties B (ou C) en même temps. C'est pratique, mais pas toujours utile.
Dans l'exemple, RS_bit n'est pas un nom de port mais une variable valant 0 (si on envoie une commande) ou 1 si c'est un caractère.
J'ai moi même repomper ce code, mais il mériterait d'être un peu simplifier.

MM
oui, j'avais compris celà et j'ai écris mon propre code, en m'inspirant de plusieurs autres sites (qui utilisaient des 14M) (code pas encore testé), (mon code est beaucoup plus complet [1- init de l'écran, 2- Affichage d'un msg d'accueuil, 3- gestion d'affichage de msg au fil de l'eau via "Serin", 4- je vais continuer à le développer en y intégrant l'I2C, le stockage de msg en EEPROM et leur affichage à partir d'un numéro de msg, l'incrustation de valeurs raffraichies cycliquement ou de manière déclenchée à l'intérieur des msg prédéfinis et présents à l'écran, la configuration de la vitesse de la liaison "Serin" par le défilement de msg successifs de choix de vitesse validé par une entrée BP, etc....] que la partie présentée, et simplifié, par rapport à tout ce que j'ai trouvé).
Celui auquel tu fais référence: je ne le connaisais pas, mais il m'intéresse puisque à base de 14M2, etavec des explications plus détaillées

Mais ma question concernait l'instruction "|rsbit", pour laquelle, je n'ai pas trouvé d'explications dans les manuels (syntaxe, adressage,....)
Si par exemple je rajoutais une 2° commande "|rsbit", à la suite de la 1°: est-ce que je positionnerais ainsi, la sortie B.1, etc...
Et cette instruction, est-elle bien indépendante de la 1° partie: "pins = char & $F0 / 4"
Pourrais-t-on écrire par exemple: "pins = |rsbit0, |rsbit1 etc... et ainsi écrire plusieurs sorties successives?
 

micharmi

Member
Merci beaucoup pour cette réponse #3 Je n'avais pas eu l'idée de chercher celà dans les "Variables - Mathematics".....
Par ailleurs, c'est très intéressant aussi pour les instructionsde décallage ">>" ou "<<" pour les X1, X2 au lieu de / et *
parce que à terme (après les tests préliminaires), je vais migrer mon application sur un 20X2, pour l'utilisation que je veux faire avec l'I2C

Correction: en rouge
Pourrais-t-on écrire par exemple: "pins = |rsbit0, |rsbit1 etc... et ainsi écrire plusieurs sorties successives?
donc je comprends que non, cela fairait un ou entre rsbit0 et rsbit1 et transfèrerais le résultat dans la sortie de poids faible B.0 si j'ai bien compris
 
Last edited:

micharmi

Member
Bonjour,

Pour les afficheurs LCD, il y a aussi l'alternative du LCD série:

http://electromag1.over-blog.com/pages/LCD_SERIE_ET_PICAXE-8160161.html

J'ai encore quelques détails (bugs au niveau de l'utilisation des sorties C libres ) à modifier sur cette page toute fraiche mais çà fonctionne plutôt pas mal.

MM
Oui, c'est bien ce que je suis en train de construire: 1 afficheur série et/ou I2C à partir d'un simple HD44780 et d'un 14M2 pour l'interface

Correction, pour l'I2C, c'est avec un 20X2
 
Last edited:
Top