Il s’agit d’une explication du code pour le contrôle de flux, que je suis venu avec elle pour obtenir mon Basic Stamp 2(BS2) parler à mon 1(BS1) Basic Stamp. Je montre les boucles principales seulement. Pour le code, fichiers regarder letsmakerobots.com et ici. Fichiers ou un fichier zip.
Dans mon code, j’utilise un grand nombre de bits indicateurs. La plupart des processeurs permettent d’accéder aux Bits d’un octet ou un mot à utiliser comme variables régulières. Basic Stamp 1 et la plupart des processeurs Picaxe ont défini des noms de variables pour les Bits des premiers octets de la mémoire. Habituellement c’est Bit0 – Bit7 ou Bit0 – B15 ou Bit0 – 31 pour définir une variable. Dans deux de ces processeurs la variable Bits peuvent aussi être dans une autre variable. Comme mes lumières B0 Byte, les Bits sont les variables Bit0 – 7 qui sont lit1 – lit8 les lumières individuelles. Cela rend le test d’un feu simple. "Si lit1 = 1 then litOn" est simple.
Le Basic Stamp 2 et processeurs veuille utilisent définie mise en indice d’accéder aux Bits, les amuse-bouches et les octets d’une variable. Mes lumières individuelles sont les variables "s’allume. Bit 0 - Bit7 ". Dans l’essai une variable Bit est « si lghts. Bit 0 = 1 then akim ". Paramètre "litTmp = voyants. Bit 0 ". Généralement les indices ne peuvent pas être une variable. Regarder les fichiers de programme dans l’article EasyLights. Lire votre manuel.
J’ai corrigé autant que je le pouvais. Le BS1 ne série out fait très bien. Il est stable et fonctionne comme n’importe quel bouton simple sur un tel système. Le BS1 ne Bits très bien non plus.
Mon contrôle de flux est le seul moyen que j’ai eu ces systèmes pour communiquer.
Mes commentaires de texte seront / / dans le présent article. Dans le code Basic Stamp la ' est un commentaire.
Basic Stamp 2 fragment de code.
JP6 :
« Basic Stamp 1 projet board(BS1Pj1)
' Message entrant
slv1In = 0
STx faible ' Message reconnaissent
PAUSE DE 6
Conduire en Pause
SERIN slvRx, 396, 350, err1, [slv1Stat, tmp1]
Temps de série erreur d’attendre et de gestionnaire d’erreurs
PAUSE DE 3
HAUTE sTx
' Le BS1 ne série fait très bien.
IF slv1Stat = 10 jp7 alors
IF slv1Stat = 20 alors jp9
Je n’obtiens rien mais Erreurs???
errSlv1 = 0
slv1btn2 = 0
GOTO jp2
Err1 :
« Erreur Stat », DEC slv1Stat, de débogage ", B", BIN slv1Stat, CR
DEBUG « erreur tmp », DEC tmp1, ", B", BIN tmp1, CR
IF slv1Stat = 10 jp7 alors
IF slv1Stat = 20 alors jp9
errSlv1 = 1
slv1btn2 = 0
GOTO jp2
JP9 :
« Work in progress
DEBUG « Btn2 », DEC slv1Stat, ", B", BIN slv1Stat, CR
slv1btn2 = 1
GOTO jp2
JP7 :
binSet = 1
ranSet = 1
larset = 1
rMode = rMode + 1
IF rMode < 4 puis jp2
rMode = 1
« Transmettre l’article
JP2 :
SRx IF = 0 THEN slv1In = 1 ' vérifie les messages
PRx IF = 0 THEN mstIN = 1 ' vérifie les messages
IF litSet = 1 THEN jp3
IF mastSet = 1 THEN jp4
' BS1Pj1 ne peut obtenir de succès 1 à 10 fois
CNT2 = cnt2 + 1
SRx IF = 0 THEN slv1In = 1
IF cnt2 < 10 puis jp1
CNT2 = 1
« Contrôle à EasyLights des BS2Pj1
JP4 :
RMode SELECT
CAS 1
GOSUB doLarson
CAS 2
GOSUB doBinNum
CAS 3
GOSUB doRandom
ENDSELECT
« Envoyer l’octet de lumières à BS1Pj1 pour l’affichage
Lit1 faible
STx faible ' signaux Message prêt
PAUSE 80 ' pour BS1Pj1
SEROUT slvTx, 396, [BS1Pj1, lumières]
PAUSE DE 40
HAUTE sTx
Lit1 haute
litSet = 1
……………………………………………
Basic Stamp 1 code
runIt: ' boutons un à la fois
IF BS1Stat > 0 alors run2
IF pBtn1 = 0 THEN bt2
BS1Stat = 10
GOTO bt3
BT2 :
IF pBtn2 = 0 THEN run2
BS1Stat = 20
BT3 :
tmp1 = 66
pTx = litOff
run1: "Envoyer un message bouton
PAUSE 1 ' attendre pour maître d’abaisser son Tx
PRx IF = 1 THEN run1
SEROUT pinTx, T2400 (tmp1, BS1Stat)
PAUSE 1
pTx = litOn
GOTO jp1
run2 :
PRx IF = 1 THEN jp1 ' recherchez message
SERIN pinRx, T2400, mCmd, tmp1
PAUSE DE 3
IF mCmd <> BS1Pj1 jp1 puis ' recherchez adresse correcte
lumières = tmp1
"Faire feu sur EasyLights