Projet Robotek

Accueil  Nouvelles  Téléchargements  Liens  Forum
Instructions BASIC

Vous trouverez ci-dessous la liste non exhaustive des instructions du BASIC.

DEBUG | EEPROM | END | FOR...TO | GOSUB | GOTO | HIGH | IF...THEN | INPUT | LOW | NEXT | OUTPUT | PAUSE | POT | PULSOUT | READ | RETURN | SOUND | SYMBOL | THEN

DEBUG cls, "texte", cr, var, $­var, %var, #var, #$­var, #%var

Cette instruction affiche des informations dans une fenêtre de test à chaque fois que le programme la rencontre durant son exécution.

  • Du texte peut être affiché mais doit être inscrit entre 2 guillemets. De plus, il est possible d'effacer l'écran avec la commande cls et de sauter à la ligne avec la commande cr.
  • Des variables peuvent être affichées avec leur contenu en donnant simplement leur nom. Le format décimal est l'affichage par défaut mais il est possible d'afficher :
    1. au format héxadécimal si le signe précède le nom de la variable
    2. au format binaire si le signe % précède le nom de la variable

    Il est possible de n'afficher que la valeur de la variable sans son nom si le signe # précède le nom de la variable

Exemple :

SYMBOL compteur = W0
SYMBOL x = W1
FOR x = 0 TO 100
compteur = compteur+1
DEBUG compteur
NEXT x

définit la variable "compteur"
définit la variable "x"
pour x allant de 0 à 100
ajoute 1 à la variable "compteur"
affiche le nom et le contenu de la variable "compteur"
passe au x suivant


EEPROM {position},(donnée,donnée...)

Cette commande permet de stocker des données dans l'EEPROM (la mémoire) du microcontrôleur avant d'y télécharger le programme. Ce n'est pas une instruction mais plutôt un mode de téléchargement qui permet de stocker des données dans des espaces mémoire libres.

  • Position est une constante (optionnelle) comprise entre 0 et 255 qui spécifie où stocker les données dans l'EEPROM. Si aucune position n'est spécifiée, le stockage continue là où il a été arrêté. Si aucune position n'a été spécifiée à l'initialisation, le stockage commence à 0. Le stockage des données s'effectue dans l'ordre croissant à partir de 0 alors que le stockage du programme s'effectue dans l'ordre décroissant à partir de 255.
  • Donnée(s) sont des constantes (0 à 255) qui seront stockées dans l'EEPROM.

Exemple :

EEPROM 0,("a","g","a","d","r","f")
SYMBOL dep = W0
SYMBOL pos = W1
lecture:
READ pos,dep

IF dep = "a" THEN avance
IF dep = "r" THEN recule
IF dep = "d" THEN droite
IF dep = "g" THEN gauche
IF dep = "f" THEN END
pos = pos+1
GOTO lecture
avance:
...
recule:
...
etc...

stocke les valeurs dans l'EEPROM à la position 0
définit la variable "dep"
définit la variable "pos"
sous-programme "lecture"
lit l'EEPROM à la position "pos" et range la valeur dans "dep"
si "dep" est égale à "a" alors va à "avance"
si "dep" est égale à "r" alors va à "recule"
si "dep" est égale à "d" alors va à "droite"
si "dep" est égale à "g" alors va à "gauche"
si "dep" est égale à "f" alors fin du programme
ajoute 1 à la variable "pos"
va à "lecture"
sous-programme "avance"

sous-programme "recule"

etc...


END

Cette commande permet d'arrêter le programme et de mettre le microcontrôleur en veille. Sa consommation est réduite au minimum (20 µA).

Exemple :

EEPROM 0,("a","g","a","d","r","f")
SYMBOL dep = W0
SYMBOL pos = W1
lecture:
READ pos,dep

IF dep = "a" THEN avance
IF dep = "r" THEN recule
IF dep = "d" THEN droite
IF dep = "g" THEN gauche
IF dep = "f" THEN END
pos = pos+1
GOTO lecture
avance:
...
recule:
...
etc...

stocke les valeurs dans l'EEPROM à la position 0
définit la variable "dep"
définit la variable "pos"
sous-programme "lecture"
lit l'EEPROM à la position "pos" et range la valeur dans "dep"
si "dep" est égale à "a" alors va à "avance"
si "dep" est égale à "r" alors va à "recule"
si "dep" est égale à "d" alors va à "droite"
si "dep" est égale à "g" alors va à "gauche"
si "dep" est égale à "f" alors fin du programme
ajoute 1 à la variable "pos"
va à "lecture"
sous-programme "avance"

sous-programme "recule"

etc...


FOR variable=début TO fin {STEP {-}incrément}
NEXT {variable}


Cette instruction permet de créer une boucle d'exécution de laquelle le programme ne sortira que si le comptage est terminé.


GOSUB adresse
...

RETURN

Cette instruction redirige l'exécution du programme vers un sous-programme et lorsqu'il est effectué, retourne au programme d'origine. Jusqu'à 16 GOSUB sont autorisés dans un programme et ils peuvent être imbriqués jusqu'à 4 niveaux.

  • adresse est le nom du sous-programme

Exemple :

OUTPUT 0
OUTPUT 1

test:
GOSUB allume
GOSUB sonne
GOTO test

allume:
HIGH 1
PAUSE 1000
LOW 1
RETURN

sonne:
SOUND 0,(20,100,80,100)
RETURN

configure le port 0 en sortie
configure le port 1en sortie

sous-programme "test"
va au sous-programme "allume"
va au sous-programme "sonne"

va au sous-programme "test"

sous-programme "allume"
met le port 1 à l'état haut
fait une pause de 1000 ms (1 seconde)
met le port 1 à l'état bas
retourne au sous-programme "test"

sous-programme "sonne"
emet un son sur le port 0 composé de 2 notes
retourne au sous-programme "test"


GOTO adresse

Cette instruction redirige l'exécution du programme vers un sous-programme mais n'attend aucun retour.

  • adresse est le nom du sous-programme

Exemple :

OUTPUT 0
OUTPUT 1

test:
GOSUB allume
GOSUB sonne
GOTO test

allume:
HIGH 1
PAUSE 1000
LOW 1
RETURN

sonne:
SOUND 0,(20,100,80,100)
RETURN

configure le port 0 en sortie
configure le port 1 en sortie

sous-programme "test"
va au sous-programme "allume"
va au sous-programme "sonne"
va au sous-programme "test"

sous-programme "allume"
met le port 1 à l'état haut
fait une pause de 1000 ms (1 seconde)
met le port 1 à l'état bas
retourne au sous-programme "test"

sous-programme "sonne"
emet un son sur le port 0 composé de 2 notes
retourne au sous-programme "test"


HIGH port

Cette instruction permet de mettre un port, configuré en sortie, à l'état haut (+5V).

  • port est une constante ou une variable comprise entre 0 et 7 qui spécifie quel port Entrée/Sortie utiliser

Exemple :

OUTPUT 0
OUTPUT 1

test:
GOSUB allume
GOSUB sonne
GOTO test

allume:
HIGH 1
PAUSE 1000
LOW 1
RETURN

sonne:
SOUND 0,(20,100,80,100)
RETURN

configure le port 0 en sortie
configure le port 1en sortie

sous-programme "test"
va au sous-programme "allume"
va au sous-programme "sonne"
va au sous-programme "test"

sous-programme "allume"
met le port 1 à l'état haut
fait une pause de 1000 ms (1 seconde)
met le port 1 à l'état bas
retourne au sous-programme "test"

sous-programme "sonne"
emet un son sur le port 0 composé de 2 notes
retourne au sous-programme "test"


IF variable ?? valeur {AND/OR variable ?? valeur...} THEN adresse

Cette instruction permet d'effectuer une comparaison sur une variable et de rediriger l'exécution du programme en conséquence. ?? peut être remplacé par =, <, >, =>, =<, <>.

  • variable est une variable qui sera comparée à valeur
  • valeur est une variable ou une constante
  • adresse est le nom du sous-programme où aller si la condition est vraie.

Exemple :

EEPROM 0,("a","g","a","d","r","f")
SYMBOL dep = W0
SYMBOL pos = W1
lecture:
READ pos,dep

IF dep = "a" THEN avance
IF dep = "r" THEN recule
IF dep = "d" THEN droite
IF dep = "g" THEN gauche
IF dep = "f" THEN END
pos = pos+1
GOTO lecture
avance:
...
recule:
...
etc...

stocke les valeurs dans l'EEPROM à la position 0
définit la variable "dep"
définit la variable "pos"
sous-programme "lecture"
lit l'EEPROM à la position "pos" et range la valeur dans "dep"
si "dep" est égale à "a" alors va à "avance"
si "dep" est égale à "r" alors va à "recule"
si "dep" est égale à "d" alors va à "droite"
si "dep" est égale à "g" alors va à "gauche"
si "dep" est égale à "f" alors
fin du programme
ajoute 1 à la variable "pos"
va à "lecture"
sous-programme "avance"

sous-programme "recule"

etc...


INPUT port

Cette instruction permet de configurer un port en entrée.

  • port est une constante ou une variable comprise entre 0 et 7 qui spécifie quel port Entrée/Sortie utiliser

Exemple :

INPUT 0
OUTPUT 1

boucle :
IF PIN0=1 THEN allume
HIGH 1
GOTO boucle

allume :
LOW 1
GOTO boucle

configure le port 0 en entrée
configure le port 1en sortie

sous-programme "boucle"
si l'entrée 0 est au niveau haut alors va à "allume"
sinon met le port 1 à l'état haut
va au sous-programme "boucle"

sous-programme "allume"
met le port 1 à l'état bas
retourne au sous-programme "boucle"


LOW port

Cette instruction permet de mettre un port, configuré en sortie, à l'état bas (0V).

  • port est une constante ou une variable comprise entre 0 et 7 qui spécifie quel port Entrée/Sortie utiliser

Exemple :

OUTPUT 0
OUTPUT 1

test:
GOSUB allume
GOSUB sonne
GOTO test

allume:
HIGH 1
PAUSE 1000
LOW 1
RETURN

sonne:
SOUND 0,(20,100,80,100)
RETURN

configure le port 0 en sortie
configure le port 1en sortie

sous-programme "test"
va au sous-programme "allume"
va au sous-programme "sonne"
va au sous-programme "test"

sous-programme "allume"
met le port 1 à l'état haut
fait une pause de 1000 ms (1 seconde)
met le port 1 à l'état bas
retourne au sous-programme "test"

sous-programme "sonne"
emet un son sur le port 0 composé de 2 notes
retourne au sous-programme "test"


OUTPUT port

Cette instruction permet de configurer un port en sortie.

  • port est une constante ou une variable comprise entre 0 et 7 qui spécifie quel port Entrée/Sortie utiliser

Exemple :

INPUT 0
OUTPUT 1

boucle :
IF PIN0=1 THEN allume
HIGH 1
GOTO boucle

allume :
LOW 1
GOTO boucle

configure le port 0 en entrée
configure le port 1en sortie

sous-programme "boucle"
si l'entrée 0 est au niveau haut alors va à "allume"
sinon met le port 1 à l'état haut
va au sous-programme "boucle"

sous-programme "allume"
met le port 1 à l'état bas
retourne au sous-programme "boucle"


PAUSE temps

Cette instruction suspend l'exécution du programme pendant un intervalle de temps défini.

  • temps est une constante ou une variable, dont la valeur est comprise entre 0 et 65535, qui spécifie l'intervalle de temps en millisecondes.

Exemple :

OUTPUT 0
OUTPUT 1

allume:
HIGH 1
PAUSE 1000
LOW 1
RETURN

sonne:
SOUND 0,(20,100,80,100)
RETURN

configure le port 0 en sortie
configure le port 1en sortie

sous-programme "allume"
met le port 1 à l'état haut
fait une pause de 1000 ms (1 seconde)
met le port 1 à l'état bas
retourne au sous-programme "test"

sous-programme "sonne"
emet un son sur le port 0 composé de 2 notes
retourne au sous-programme "test"


POT port,echelle,variable

Cette instruction permet de mesurer une résistance variable comprise entre 5 et 50 kOhms comme un potentiomètre, une photorésistance ou une thermistance. Le port doit être connecté d'un coté de la résistance qui est connectée de l'autre à un condensateur polyester de 100nF lui-même connecté à la masse.
Le Basic Stamp lit la valeur de la résistance en mesurant le temps mis par le condensateur pour se décharger au travers de celle-ci.

  • Port est une variable ou une constante comprise entre 0 et 7 qui spécifie quel port Entrée/Sortie utiliser.
  • Echelle est une variable ou une constante comprise entre 0 et 255 qui met à l'echelle le résultat de la mesure. Le résultat est multiplié par (echelle/256) donc une échelle de 128 réduira la zone de mesure de 50%. Pour étalonner le Basic Stamp avec une résistance particulière et trouver la meilleure échelle, utiliser l'option ALT+P décrite ci-dessous.
  • Variable est une variable d'un octet qui contient le résultat de la mesure.

Etalonnage du Basic Stamp :

  1. Pour trouver la meilleure valeur d'échelle, connectez la résistance au Basic Stamp et reliez le Basic Stamp au PC.
  2. Appuyez sur ALT+P lorsque vous avez lancé l'éditeur BASIC. Une fenêtre apparaît.
  3. La fenêtre vous demande d'indiquer quel port est relié à la résistance. Sélectionnez le port.
  4. l'éditeur télécharge un petit programme dans le Basic Stamp (celui-ci effacera tout programme en mémoire dans le Basic Stamp).
  5. Une autre fenêtre apparaît affichant deux chiffres : Scale (échelle) et Value (valeur). Ajustez votre résistance pour obtenir le chiffre le plus bas possible (Scale) si cela est possible sur votre montage, sinon gardez ce chiffre en mémoire pour l'indiquer dans votre programme.

    Vous pouvez vérifier le fonctionnement de votre montage avec cette valeur en appuyant sur la barre espace. Le Basic Stamp bloque alors la valeur d'échelle affichée et passe en lecture. Si l'échelle est bonne, vous devez pouvoir ajuster votre résistance et lire des valeurs de 0 à 255, sinon recommencez l'opération en appuyant sur la barre espace.


Exemple :

SYMBOL ech=255
SYMBOL val=b0

lecture:
POT 0,ech,val
IF val<40 THEN sonne
GOTO lecture

sonne:
SOUND 1,(10,100)
GOTO lecture

définit la constante "ech"
définit la variable "val"

programme principal "lecture"
lit la valeur de la résistance sur le port 0 et range le résultat dans la variable
si la valeur est inférieure à 40 alors va à "sonne"
sinon va au programme "lecture"

sous-programme "sonne"
emet un son d'une durée de 100 ms sur le port 1
va au programme "lecture"


PULSOUT port, temps

Cette instruction permet d'emettre une impulsion en inversant l'état d'un port pendant un temps défini.

  • port est une constante ou une variable comprise entre 0 et 7 qui spécifie quel port Entrée/Sortie utiliser
  • temps est une constante ou une variable, dont la valeur est comprise entre 0 et 65535, qui spécifie la période de temps par unité de 10 microsecondes.

Exemple :

INPUT 0
SYMBOL roue_droite=1
SYMBOL roue_gauche=2
SYMBOL x=W0

debut:
IF PIN0=1 THEN recule
GOSUB avance
GOTO debut

avance:
FOR x=0 TO 100
PULSOUT roue_droite,100
PULSOUT roue_gauche,200
PAUSE 20
NEXT x
RETURN

recule:
FOR x=0 TO 100
PULSOUT roue_droite,200
PULSOUT roue_gauche,100
PAUSE 20
NEXT x
RETURN

configure le port 0 en entrée
affecte la valeur 1 à la constante roue_droite
affecte la valeur 2 à la constante roue_gauche
déclare la variable x

sous-programme "debut"
si le port 0 est à l'état 1 alors va à "recule"
sinon va au sous-programme "avance"
va au sous-programme début

sous-programme "avance"
pour x allant de 0 à 100
envoie une implusion de 1000 µs sur le port 1
envoie une implusion de 2000 µs sur le port 2

fait une pause de 20 ms
x suivant
retourne au sous-programme "debut"

sous-programme "recule"
pour x allant de 0 à 100
envoie une implusion de 2000 µs sur le port 1
envoie une implusion de 1000 µs sur le port 2

fait une pause de 20 ms
x suivant
retourne au sous-programme "debut"


READ position,variable

Cette commande permet de lire des données stockées dans l'EEPROM (la mémoire) du microcontrôleur et les range dans des variables.

  • Position est une variable ou une constante comprise entre 0 et 255 qui spécifie la position de la donnée dans l'EEPROM. Le stockage des données s'effectue dans l'ordre croissant à partir de 0 alors que le stockage du programme s'effectue dans l'ordre décroissant à partir de 255.
  • Variable est une variable qui reçoit la donnée.

Exemple :

EEPROM 0,("a","g","a","d","r","f")
SYMBOL dep = W0
SYMBOL pos = W1
lecture:
READ pos,dep

IF dep = "a" THEN avance
IF dep = "r" THEN recule
IF dep = "d" THEN droite
IF dep = "g" THEN gauche
IF dep = "f" THEN END
pos = pos+1
GOTO lecture
avance:
...
recule:
...
etc...

stocke les valeurs dans l'EEPROM à la position 0
définit la variable "dep"
définit la variable "pos"
sous-programme "lecture"
lit l'EEPROM à la position "pos" et range la valeur dans "dep"
si "dep" est égale à "a" alors va à "avance"
si "dep" est égale à "r" alors va à "recule"
si "dep" est égale à "d" alors va à "droite"
si "dep" est égale à "g" alors va à "gauche"
si "dep" est égale à "f" alors fin du programme
ajoute 1 à la variable "pos"
va à "lecture"
sous-programme "avance"

sous-programme "recule"

etc...


SOUND port,(note,durée,note,durée,...)

Cette commande joue des notes de musique pendant des durées déterminées. Le port utilisé doit être connecté au plus d'un condensateur de 10µF dont le moins est relié à un buzzer piezzo dont l'autre borne est reliée à la masse.

  • Port est une variable ou une constante comprise entre 0 et 7 qui spécifie quel port Entrée/Sortie utiliser.
  • Note(s) sont des variables ou des constantes comprises entre 0 et 255 qui spécifient le type et la fréquence du son. La note 0 correspond au silence. Les notes 1 à 127 sont des tons ascendants. Les notes 128 à 255 sont des tons ascendants avec un grésillement.
  • Durée(s) sont des variables ou des constantes comprises entre 0 et 255 qui spécifient la durée des notes.

Exemple :

OUTPUT 0
OUTPUT 1

test:
GOSUB allume
GOSUB sonne
GOTO test

allume:
HIGH 1
PAUSE 1000
LOW 1
RETURN

sonne:
SOUND 0,(20,100,80,100)
RETURN

configure le port 0 en sortie
configure le port 1en sortie

sous-programme "test"
va au sous-programme "allume"
va au sous-programme "sonne"
va au sous-programme "test"

sous-programme "allume"
met le port 1 à l'état haut
fait une pause de 1000 ms (1 seconde)
met le port 1 à l'état bas
retourne au sous-programme "test"

sous-programme "sonne"
emet un son sur le port 0 composé de 2 notes
retourne au sous-programme "test"


SYMBOL nom_symbole=valeur

Cette instruction assigne une valeur à un nouveau nom de symbole.

  • nom_symbole est une chaine de caractères qui doit commencer par une lettre alphabétique mais qui peut aussi contenir ensuite des chiffres.
  • valeur est une variable ou une constante dont nom_symbole sera une alternative dans le programme.

Exemple :

SYMBOL compteur = W0
SYMBOL x = W1
FOR x = 0 TO 100
compteur = compteur+1
DEBUG compteur
NEXT x

définit la variable "compteur"
définit la variable "x"

pour x allant de 0 à 100
ajoute 1 à la variable "compteur"
affiche le nom et le contenu de la variable "compteur"
passe au x suivant


Date de création : 21/11/2007 @ 17:11
Dernière modification : 22/11/2007 @ 11:50
Catégorie : Langage BASIC
Page lue 7891 fois

up Haut up


Site propulsé par GuppY - © 2004-2007 - Licence Libre CeCILL