Introduction Merci d'avoir acheté le BASIC STAMP. A première vue, le STAMP semble particulièrement minuscule, et en fait, il l'est. Mais avec un programme qui utilise pleinement les possibilités matérielle du processeur, le STAMP vous offre autant de puissance et diversité qu'un matériel plus conséquent sans en avoir le coût. Caractéristiques physiques Le STAMP est composé de deux composants principaux. Le cerveau du STAMP est un microcontrolleur PIC16C56 qui a été programmé avec notre interpréteur PBASIC. Une EEPROM de 256 octets contient la version réduite de votre programme BASIC, qui est lu et exécuté par l'interpréteur. Le reste du STAMP est composé d'un oscillateur à 4 Mhz, un régulateur 5V et un clip de raccordement pour pile rectangulaire de 9V. Vous-y trouverez aussi une petite zone de prototype sur laquelle les connections 9V, 5V, GND et les 8 entrées/sorties du STAMP sont prévues. Programmation Le BASIC STAMP est évidement programmable dans ce language simple qu'est le BASIC. le PBASIC du STAMP reprend les instructions classiques comme FOR...NEXT, IF...THEN ou GOTO, mais aussi des instructions particulières comme SERIN (entrée série), PWM (sortie modulée) ou BUTTON (entrée d'un poussoir). Chaque instruction occupe 2 ou 3 octets dans sa forme réduite. Au total, vous pourrez donc stocker entre 80 et 100 instructions dans l'EEPROM. Pour ce qui est de la vitesse d'exécution, vous pouvez considérer que votre programme s'exécutera à 2000 opérations par seconde. Kit de développement du BASIC STAMP Pour écrire des programmes sur votre STAMP, vous avez besoin du kit de développement. Ce kit comprend un programme pour PC, un BASIC STAMP et ce manuel. En connectant le cable fourni entre votre STAMP et le port parallèle de votre PC, puis en lancant l'éditeur sur votre PC, vous serez à même d'écrire vos programmes et de les charger dans votre STAMP. Introduction Circuits de l'interpréteur BASIC Certains clients nous ayant formulé l'envie d'acheter séparement le BASIC STAMP pour leur propre développement, nous avons offert la possibilité d'acheter les circuits du stamp séparement. Pour ces clients, il est possible de nous commander soit le microprocesseur du BASIC STAMP seul, ou alors un kit qui reprend le micro-processeur, l'oscillateur 4 Mhz et l'EEPROM. Avec ces composants, vous pourrez développer vos propres applications. Sommaire Le reste de ce manuel va décrire comment connecter votre STAMP à votre PC, Comment utiliser le programme éditeur/chargeur, et comment utiliser chaque instruction du BASIC. Cette description part du principe que vous connaissez déjà le basic standard, ainsi que les concepts de base des techniques digitales et analogiques. Réserves concernant la traduction Tous les efforts ont-été mis en oeuvre pour que cette traduction soit la meilleure possible. Néanmoins, malgré les verifications, quelques erreurs aurraient pu nous échapper. G.S.E. ne pourrait-être tenu pour responsable pour d'éventuels dommages qui pourraient survenir suite à l'usage de cette traduction. Information Importante Garantie Parallax garanti le BASIC STAMP contre tout défaut de matériel ou de montage, pendant une période de 90 jours. Si vous constatez une défectuosité, Parallax pourra, suivant la panne constatée, réparer, remplacer ou rembourser votre achat. Prenez contact avec nous avant de nous renvoyer le produit, ainsi nous pourrons vous donner un numéro de dossier. Après réparation ou remplacement, nous nous engageons à vous renvoyer votre produit par la même voie utilisée pour l'envoi (par exemple, si vous nous envoyez votre STAMP défectueux par chemin de fer, nous vous le renvérons par chemin de fer). La garantie ne s'applique pas, si notre produit à été modifé, détruit suite à un accident, mal utilisé ou mal raccordé. Garantie "Remboursement" de 14 jours Si, dans les 14 jours qui suivent la réception de votre produit, vous considérez que notre produit ne correspond pas à vos attentes, vous pouvez nous le renvoyer dans son emballage d'origine. Parallax vous remboursera alors votre achat, en déduisant les frais d'emballage et d'envoi. Si notre produit était partiellement abîmé ou détruit, seule une partie du prix vous serait remboursée. Copywrights et Marques Déposées Copywright 1993 de Parallax Inc. Tout droits réservés. Parallax, le logo Parallax, BASIC STAMP et PBASIC sont des marques déposées par Parallax Inc. PIC est une marque déposée par Microchip Technology Inc. Les autres sigles et nom de produits utilisés dans ce manuel sont des marques déposées par leurs propriétaires respectifs. Limites de responsabilités Sauf disposition d'ordre public contraire, Parallax ou ses revendeurs, ne sauraient être tenus responsables de dommages de quelque nature que ce soit (notamment des domages corporels, des pertes de bénéfices, des intéruptions d'activité, des pertes de données, ou tout autre perte de nature pécunière) résultant de l'utilisation ou de l'impossibilité d'utiliser le logiciel ou le matériel fourni par Parallax. Information Importante Note spéciale au sujet des revendeurs Si vous avez acheté un produit Parallax via un revendeur, en cas de problème, vous devez contacter votre revendeur. Ces revendeurs ont en général des conditions générales différentes de celles de Parallax. Par conséquent, surtout si vous achetez nos produit dans un autre pays que les Etats-Unis d'Amérique, ce sont eux qui vous apporteront la solution la plus rapide à vos problèmes éventuels. BBS Parallax Parallax vous offre une BBS qui est à votre service 24 heures sur 24. Les clients peuvent apppeller notre BBS pour obtenir les dernières versions de nos programmes, ou pour les tester avant d'acheter les versions complètes. De plus, une majorité de nos clients utilisent notre BBS pour échanger des idées au sujet de nos produits. Certain clients y laissent leurs programmes, permettant ainsi aux autres utilisateurs d'en profiter. Le numéro de téléphone de la BBS est : (916) 624-7101 Les conditions de transmission sont : 300 à 14400 bauds, 8 bits de data, 1 bit de stop, pas de bit de parité. Table des Matières Description Matérielle..........................................6 Description du circuit imprimé.............................6 Schéma du STAMP............................................7 Questions Courantes.............................................8 Exemple d'application..........................................10 Besoins Matériels..............................................11 Connexions vers le PC.........................................12 Utilisation de l'Editeur/chargeur..............................13 Lancement de l'éditeur....................................13 Formats des Programmes....................................13 Création et Edition des Programmes........................17 Touches de Fonctions......................................17 Exécution de votre Programme..............................19 Chargement d'un Programme.................................19 Sauvegarde d'un Programme.................................19 Utlisation de Cut, Copy et Paste..........................20 Utilisation de Search et Replace..........................21 Port I/O et Espace Variables...................................22 Liste des Instructions.........................................24 Instructions BASIC.............................................27 BRANCH....................................................2 7 BUTTON....................................................2 8 DEBUG.....................................................3 0 EEPROM....................................................3 1 END.......................................................3 2 FOR...NEXT................................................3 3 GOSUB.....................................................3 4 GOTO......................................................3 5 HIGH......................................................3 6 IF...THEN.................................................3 7 INPUT.....................................................3 8 LET.......................................................3 9 LOOKDOWN..................................................4 0 LOOKUP....................................................4 1 LOW.......................................................4 2 NAP.......................................................4 3 OUTPUT....................................................4 4 PAUSE.....................................................4 5 POT.......................................................4 6 PULSIN....................................................4 8 PULSOUT...................................................4 9 PWM.......................................................5 0 RANDOM....................................................5 1 READ......................................................5 2 RETURN....................................................5 3 REVERSE...................................................5 4 SERIN.....................................................5 5 SEROUT....................................................5 7 SLEEP.....................................................5 9 SOUND.....................................................6 0 TOGGLE....................................................6 1 WRITE.....................................................6 2 Description Matérielle Le shéma situé page 5 du manuel original décrit les différentes parties du STAMP. Microcontrolleur PIC16C56 : Le cerveau du STAMP. Ce PIC est programmé avec notre interpréteur PBASIC, qui lit le programme stocké dans l'EEPROM, puis les transcrit en routines qui exécutent chaque instruction BASIC. EEPROM : contient le programme sous forme réduite. La place libre peut-être utilisée pour stocker des datas. La capacité totale est de 256 octets. Clips pour pile de 9V : vous permet d'alimenter le STAMP avec une pile de 9 Volts ordinaire. Le courant nominal du STAMP est de 2 mA plus les sorties éventuelles. En mode SLEEP, le courant passe à 20 æA. Ces consommations permettent de faire fonctionner le STAMP plusieurs heures avec une pile normale. Régulateur 5Volts : stabilise la tension du STAMP à 5 Volts. Connecteur 3 pins : Permet de charger les programmes et de communiquer avec le PC via un cable d'interface. Ce cable doit être connecté à chaque fois que vous voulez réaliser des changement dans le programme du STAMP. Zone pour prototype : dans cette zone, vous trouverez toutes les connections du STAMP : les 8 I/O, le 5V, la tension non régulée et la masse. De plus cet espace libre vous permetra de donner libre cours à votre imagination. Trous de fixation : Vous permettent de fixer fermement votre STAMP sur n'importe-quel support. Description Matérielle Page 6 du manuel original, vous trouverez le schéma du STAMP. Le STAMP utilse une résistance pour vider la charge du condensateur de 10 æF de l'alimentation du STAMP lorsque celle-çi est coupée. Cette astuce est utilisée pour permettre au STAMP d'effectuer une procédure de RESET correcte lors de l'allumage. Ce système est intéressant, mais a l'inconvénient d'augmenter la consommation du STAMP. De plus, il est impératif de laisser le STAMP éteint pendant plus de 0.25 secondes avant de le rallumer. Le schéma montre un circuit de coupure qui utilise un transistor et trois résistances. Ce circuit utilise un peu plus de composant, mais permet d'éffectuer un excellent reset quelque soit le temps pendant lequel le STAMP a été éteint. De plus, ce nouveau circuit assure un reset après un "brown-out" (un "brown-out" arrive lorsque la tension d'alimentation tombe en dessous de 5 Volts, mais pas suffisement que pour permettre au circuit de reset incorporé de fonctionner). Les STAMPs futurs incorporeront d'office ce circuit. Lors de l'utilisation de l'interpréteur PBASIC dans vos propres développements, nous vous recommandons d'utiliser ce circuit. Questions courantes Quel gamme de tension puis-je utiliser pour alimenter le STAMP? De manière générale, nous recommandons à nos utilisateurs l'utilisation d'une pile rectangulaire de 9 Volts pour alimenter le STAMP. Ce type de pile est simple à utiliser, et permet l'alimentation du circuit pendant des jours, voir des semaines si le mode "sleep" est utilisé. Toutefois, vous pouvez utiliser une source d'alimentation externe comprise entre 3 et 12 volts continus, fournissant un courant d'au moins 2 mA plus vos besoins en circuits de sortie. Si vous utilisez une alimentation externe, dont la tension est comprise entre 3 et 5 volts continus, vous pouvez la connecter directement à la borne 5 volts qui se trouve sur la zone prototype du STAMP. Ceci vous permet d'alimenter le STAMP sans passer par le régulateur 5 volts intégré. Si vous utilisez une alimentation externe comprise entre 6 et 12 volts continus, vous pouvez utliser la borne Vin de la zone prototype. Votre alimentation sera alors traitée par le régulateur 5 volts du STAMP. Puis-je alimenter d'autres circuits avec le stamp? Oui. Si vous avez besoin d'une tension de 5 volts, vous pouvez vous connecter à la borne 5 volts. Et si vous avez besoin d'une tension non régulée (6 à 12 volts), vous pouvez vous raccorder à la borne Vin. Ces deux bornes sont situées sur le connecteur de la zone prototype. Pendant combien de temps le STAMP peut-il fonctionner avec une pile de 9 Volts? Cela dépend de l'utilisation du STAMP. Si votre programme n'utilise jamais l'instruction "sleep", et commande quelques LEDs, il est plus que probable que votre STAMP ne fonctionnera que quelques heures. Par contre, si le mode "sleep" est utilisé et que le courant de sortie est minimal, votre STAMP pourra fonctionner plusieurs semaines. Questions Courantes Quelles sont les capacités de dissipation et de commande des lignes d'entrées-sorties du STAMP? Chaque ligne d'entrée-sortie du STAMP peut dissiper un courant de 25 mA en entrée, et fournir un courant de 20 mA en sortie. Toutefois, pour les 8 lignes d'entrées-sorties, la dissipation totale en entrée ne peut exéder 50 mA, et le courant total maximal de sortie est de 40 mA. Ces limitations en courant, sont en fait celles du PIC16C56 qui sert de base au circuit PBASIC. Les calculs en virgule flottante sont-ils possible avec le basic du STAMP? Non. Le STAMP ne fait des calculs qu'en nombres entiers, avec pour conséquence qu'aucune fraction n'est autorisée. Le résultat des expressions sera toujours un entier. Par exemple, si vous demandez au STAMP d'évaluer l'expression 5 divisé par 2, le résultat sera 2, et le reste (0,5) sera tout simplement perdu. Comment le STAMP évalue-t'il les expressions mathématiques? Les expressions mathématiques sont évaluées de gauche à droite, sans aucune priorité. Ceci est très important, car le STAMP pourrait vous donner des résultats différents de ceux que vous espéreriez obtenir. Un exemple: l'expression 2 + 3 X 4, habituellement, est évaluée 2 + (3X4) puisque la multiplication est prioritaire vis à vis de l'addition, et le résultat est 14. Dans le STAMP, l'expression étant évaluée de gauche à droite, le résultat serait 20, (2+3) X 4. En écrivant vos programmes, ayez toujours en tête cette règle d'évaluation gauche-droite qui modifie très fort l'évaluation des résultats. EXEMPLE D'APPLICATION A la page 9 du manuel original en anglais, vous trouverez une petite application du STAMP. Le but de cette application est de lire la valeur d'un potentiomètre et de générer une tonalité, dans un haut-parleur, dont la hauteur est proportionelle à la valeur lue. Vous pouvez éffectuer quelques expériences en remplaçant le potentiomètre par une thermistance ou une photorésistance. loop: pot 0,100,b2 ' Lecture du potentiomètre sur la pin 0 ' et stockage de la valeur en b2. b2=b2/2 ' Division du résultat par 2 pour ne pas ' dépasser la valeur 128. sound 1,(b2,10)' Génération d'un ton sur le haut-parleur ' raccordé sur la pin 1. La fréquence est ' b2, et la durée de la note est 10. goto loop ' Boucle vers le début du programme. BESOINS MATERIEL Pour utiliser le kit de développement du BASIC STAMP, vous avez besoin d'un ordinateur ayant les caractéristiques suivantes: IBM PC ou compatible Lecteur de disquette 3'1/2 Port parallèle 128 Kb de RAM MS-DOS 2.0 ou supérieur Pour alimenter le BASIC STAMP, la manière la plus simple consiste à utiliser une pile rectangulaire de 9 volts. Bien-sur, il est possible d'utiliser n'importe quelle source de tension comprise entre 3 et 12 Volts, mais, il faudra faire attention à l'endroit où vous connecterez cette source. Une alimentation comprise entre 3 et 5 Volts, doit être connectée directement à la connection 5V du BASIC STAMP (2ème ou 3ème pins du connecteur en commençant par le haut). Par contre, des tensions suppérieures devront être connectées soit directement au clip de la pile 9 Volts, soit à la connection Vin du BASIC STAMP (1ère pin du connecteur en commençant par le haut). ATTENTION : Si vous raccordez une source d'alimentation supérieure à 5 Volts sur l'entrée 5V du BASIC STAMP, celui-çi sera irrémédiablement détruit. Connexion vers le PC Pour programmer le BASIC STAMP, vous devez le connecter à votre PC, puis lancer l'exécution du programme Editeur/Chargeur. Pour éffectuer la connexion de votre STAMP à votre PC, suivez les points suivants: 1) Avec votre Kit de développement du STAMP, vous avez reçu un cable de connexion pour raccorder le PC au STAMP. A une des extrémités du cable, vous trouverez une fiche DB25 qui doit-être raccordée à la sortie parallèle de votre PC, et de l'autre côté, vous trouverez un petit connecteur 3 broches qui doit-être connecté au STAMP. 2) Ce connecteur trois broches doit-être connecté au STAMP en veillant à son orientation. Pour vous aider, vous trouverez des chevrons (>>) sur le STAMP et sur le connecteur. Ces chevrons doivent-être mis en vis à vis pour un raccordement correct. 3) Il ne vous reste plus qu'a alimenter votre STAMP. Une fois votre STAMP raccordé et alimenté, il ne vous reste plus qu'à lancer l'Editeur/chargeur dont le mode d'emploi est décrit à la suite de ce manuel. Utilisation de L'Editeur/Chargeur Lancement de l'Editeur Une fois votre STAMP raccordé et alimenté, vous pouvez lancer l'Editeur sur votre PC en tapant à l'invite du dos la commande: STAMP En supposant que votre chemin d'accès est correct, le programme du STAMP se lancera après quelques secondes. L'écran de l'éditeur est bleu foncé, avec la première ligne qui reprend les différents disques et les fonctions de chargement. A part cette première ligne, le reste de l'écran est entièrement disponible pour l'écriture de vos programmes en BASIC. Formats des Programmes. Il existe quelques restrictions dans la manière d'écrire vos programmes. Par conséquent, vous devrez suivre les règles d'écriture pour définir vos contantes, étiquettes et commentaires, suivant les prescriptions définies dans les pages suivantes. * Constantes Les constantes peuvent-être déclarée de quatre manières différentes : Décimal, hexa, binaire et ASCII. Les nombres décimaux sont tapés tel quels. Les nombres hexa sont précédées du signe dollar ($). Les nombres binaires sont précédés du signe pour-cent (%). Les valeurs ASCII sont comprises entre guillemets ("). Exemples: 100 ' 100 décimal $64 ' 64 hexa %01100100 ' 01100100 binaire "A" ' "A" ascii (65) "Hello" ' "Hello" équivalent à "H","e","l","l","o" B1 = B0 ^ $AA ' xor de B0 avec AA en hexa Utilisation de l'Editeur/Chargeur * Etiquettes d'adresses: L'éditeur utilise des étiquettes pour faire référence aux adresses à l'intérieur de votre programme. Dans certaines versions de BASIC, ces adresses sont en fait les numéros de lignes. De manière générale, les adresses sont des combinaisons de lettres, chiffres et soulignés (_), mais le premier caractère ne peut jamais être un chiffre. De plus, les étiquettes ne peuvent utiliser un nom d'instruction (serin, toggle, goto, etc...) ni un nom de variable (port, w2, b13, etc...) Lors de la première utilisation, les noms d'étiquettes doivent se terminer par deux points (:). Dans le corps du programme, l'étiquette doit être appellée sans les deux points. L'exemple suivant illustre la manière d'utiliser les étiquettes d'adresses. loop: toggle 0 'Change l'état de la pin 0. for b0=1 to 10 toggle 1 'Change 10 fois l'état de la pin 1. next goto loop 'Bouclage à l'adresse "loop" * Etiquettes de valeurs: En plus des définitions d'adresses, les étiquettes peuvent-être utilisée pour faire référence de manière plus conviviale vers des variables ou des constantes. Les étiquettes de valeurs doivent respecter les mêmes règles d'écritures que les étiquettes d'adresses. La seule différence est que les deux points ne doivent pas être utilisés, pour faire la différence entre les adresses et les valeurs. L'exemple suivant montre quelques exemples d'utilisation des étiquettes de valeurs: symbol debut=1 'Défini deux étiquettes de constantes. symbol fin=10 Symbol comptage=b0 'Défini une étiquette de variable. loop: for comptage=debut to fin toggle 1 next Utilisation de l'Editeur/Chargeur * Commentaires Pour améliorer la lecture de vos programmes vous pouvez y ajouter des commentaires. Les commentaires commencent avec une apostrophe (') et se terminent à la fin de la ligne. L'instruction standard du basic REM peut-aussi être utilisée. Voiçi quelques exemples d'utilsation des commenataires. symbol relais = 3 'Assigne une étiquette de constante REM Début du programme principal main: port = %0000000011111111 longeur=longeur+10 gosub sub goto main sub: pulsout relais,longeur : toggle 0 : return * Format général Le STAMP ne fait pas de différence entre majuscule et minuscules, sauf dans le cas de chaines de caractères (caractérisées par ") Les commandes BASIC et les déclarations de variables, peuvent être séparées par deux points (:) dans le but de mettre plusieurs instructions ou symboles sur une même ligne. exemple: dirs=255 : for b2=0 to 100 : pins=b2 : next Utilisation de l'Editeur/Chargeur * Operateurs mathématiques Voiçi les différents opérateurs qui peuvent-être utilisés dans les expressions mathématiques: + addition - soustraction * multiplication (le résultat est le mot de poids faible) ** multiplication (le résultat est le mot de poids fort) / division (le résultat est le quotient) // division (le résultat est le reste) MIN conserve la variable plus petite ou égale à la valeur MAX conserve la variable plus grande ou égale à la valeur & ET logique | OU logique ^ OU EXCLUSIF logique &/ NON ET logique |/ NON OU logique ^ NON OU EXCLUSIF logique Voiçi quelques exemples: comptage = comptage + 1 'Incrémente la variable comptage timer = timer * 2 'Multiplie la variable timer par 2 b2 = b2 / 8 'Divise la variable b2 par 8 w3 = w3 & 255 'Isole le bit de poids faible de w3 Utilisation de l'Editeur/Chargeur Creation et Edition des programmes Au vu des pages précédentes, vous avez remarqué que vous devez vous plier à certaines règles lors de l'écriture de vos programmes. Ces règles concernent principalement les contantes, les étiquettes et les commentaires. Pour le reste, il vous est loisible de choisir le format qui vous convient le mieux. Lors de la réalisation de l'éditeur, nous avons apporté un soins particulier à le rendre le plus intuitif possible. Par exemple, si vous voulez monter d'une ligne, il vous suffit d'appuyer sur "flèche haut", et si vous désirez sélectionner le caractère à la droite du curseur, il vous suffit d'appuyer sur "Maj + flèche droite", etc... La majorités des commandes de l'éditeur sont faciles à utiliser. Rien qu'en utilsant des simples touches, vous pouvez éffectuer les fonctions courantes suivantes: - Charger, sauver et exécuter les programmes - Bouger le curseur d'un caractère, d'un mot, d'une ligne, au début ou à la fin du fichier. - Sélectionner le texte en blocs de un caractère, un mot, une ligne, un écran, depuis le début ou jusqu'à la fin du fichier. - Couper, copier ou coller le texte sélectionné. (cut, copy, paste). - Rechercher du texte pour le remplacer ou non. (search et replace) Touches de fonctions de l'editeur/chargeur Voiçi la liste des touches utilsables dans l'éditeur avec leur fonction: Alt-R Exécute le programme dans le STAMP (pour cela, le programme est chargé dans le STAMP puis exécuté) Alt-L Charge un programme depuis le disque. Alt-S Sauvegarde un programme sur le disque. Alt-Q Quitte l'éditeur et revient au dos. Entrée Introduit l'information et descend d'une ligne. Tab Même fonction qu'"Entrée" Utilisation de l'Editeur/Chargeur Flèche gauche Bouge le curseur d'un caractère à gauche. Flèche droite Bouge le curseur d'un caractère à droite. Flèche haut Remonte le curseur d'une ligne. Flèche bas Descent le curseur d'une ligne. Ctrl-gauche Bouge le curseur d'un mot vers la gauche. Ctrl-droite Bouge le curseur d'un mot vers la droite Home Met le curseur au début de la ligne. Fin Met le curseur à la fin de la ligne. Page haut Bouge d'un écran vers le haut. Page bas Bouge d'un écran vers le bas. Ctrl-page haut Vas au début du fichier. Ctrl-page bas Vas à la fin du fichier. Maj-gauche Sélectionne un caractère à gauche. Maj-droite Sélectionne un caractère à droite. Maj-haut Sélectionne une ligne vers le haut. Maj-bas Sélectionne une ligne vers le bas. Maj-Ctrl-gauche Sélectionne un mot à gauche. Maj-Ctrl-droite Sélectionne un mot à droite. Maj-home Sélectionne depuis le début de la ligne. Maj-fin Sélectionne jusqu'à la fin de la ligne. Maj-page haut Sélectionne un écran vers le haut. Maj-page bas Sélectionne un écran vers le bas. Maj-Ctrl-page haut Sélectionne depuis le début du fichier. Maj-Ctrl-page bas Sélectionne jusqu'à la fin du fichier. Maj-inser Sélectionne le mot sous le curseur. Echap Déselectionne la sélection. Arrière Efface un caractère vers la gauche. Suppr Efface le caractère sous le curseur. Maj-Arrière Efface depuis le caractère à gauche jusqu'au début de la ligne. Maj-Suppr Efface jusqu'à la fin de la ligne. Ctrl-Arrière Efface la ligne sous le curseur. Alt-X Efface le texte sélectionner et le met dans le presse-papier. (CUT) Alt-C Copie le texte sélectionné dans le presse-papier. (COPY) Alt-V Colle (Insère) le texte du presse-papier à la position du curseur. (PASTE) Alt-F Recherche un texte. (SEARCH) Alt-N Recherche la correspondance suivante. Alt-P Lance le programme de calibration du potentiomètre. (voir l'instruction POT). Utilisation de l'Editeur/Chargeur Exécution de votre Programme Pour exécuter le programme qui se trouve à l'écran de l'éditeur, appuyez sur la combinaison de touches Alt-R. A partir de ce moment, l'éditeur vas vérifier sur tous les ports parallèles de votre PC, la présence d'un BASIC STAMP. Une fois celui-çi trouvé, le programme sera chargé puis exécuté dans votre STAMP. Si l'éditeur ne trouve pas de STAMP, un message d'erreur sera affiché à l'écran de votre PC. En partant du principe que votre STAMP est correctement raccordé à votre PC, l'éditeur vous affiche une gauge pendant le chargement. Cette gauge vous indique la progression du chargement de votre programme. De manière générale, le chargement prend seulement quelques secondes, et donc, cette gauge se rempli vite. Pendant le remplissage de la gauge, vous constaterez que celle-çi se rempli en deux couleurs, d'abord blanche, puis rouge. Ces couleurs vous donnent une indication quand à l'occupation mémoire de votre programme dans l'EEPROM. La couleur blanche vous indique l'espace libre dans l'EEPROM, et la couleur rouge vous indique l'espace occupé par votre programme. Ce système vous permet d'évaluer l'espace libre pour des éventuelles modifications de votre programme. Une fois le chargement terminé, le programme se lance automatiquement dans votre STAMP. Si dans le corps de votre programme vous utilisez l'instruction DEBUG, vous verrez alors apparaître les affichages demandés. Pour éffacer la gauge de l'écran, il vous suffit d'appuyer sur n'importe qu'elle touche. Chargement d'un Programme. Pour charger un programme BASIC depuis votre disque, appuyez sur la combinaison de touches Alt-L. Une fenêtre apparaît alors vous demandant un nom de fichier. Vous devez alors entrer le nom complet de votre fichier à charger. Si le nom est correct, votre programme sera chargé dans l'éditeur, sinon, un message d'erreur sera généré. Si vous décidez de ne pas charger de programme, appuyez sur la touche Echap. Sauvegarde d'un Programme. Pour sauvegarder un programme sur le disque, appuyez sur la combinaison de touches Alt-S. Une fenêtre apparaît alors vous demandant un nom de fichier. Une fois le nom de fichier entré, l'éditeur sauve votre programme sur le disque. Utilisation de l'Editeur/Chargeur Utilisation de cut, copy et paste. Comme la majorité des traitements de texte, notre éditeur peut facilement couper (cut), copier (copy) et coller (paste) du texte. Lors de modification majeure dans votre programme, ou lors d'exécution de tƒches répétitives, ces fonctions peuvent vous faire économiser un temps précieux. Les fonctions couper (cut) et copier (copy) ont pour but de prendre le texte qui est sélectionné, et de le copier dans le presse-papier. Le presse-papier est une zone mémoire temporaire utilisée par l'éditeur pour les différents mouvements de texte. La différence entre couper (cut) et copier (copy), est que la fonction couper enlève le texte de votre programme, alors que la fonction copier, le laisse en place. Une fois votre texte dans le presse-papier, la fonction coller (paste) peut l'insérer autre part dans votre programme. Notez que la fonction couper (cut) est différente de la fonction éffacer (delete). Ces deux fonctions enlèvent le texte sélectionné de votre programme, mais couper (cut) le recopie dans le presse-papier, alors qu'éffacer (delete) l'éfface irrémédiablement de la mémoire. Voiçi un exemple d'utilisation de ces différentes fonctions: * D'abord, vous devez sélectionner une partie de votre texte. Par exemple si vous voulez sélectionner le texte qui se trouve entre votre curseur et la fin de la ligne, vous appuyez sur la combinaison de touches Maj-Fin. La fin de la ligne se met alors en surbrillance, indiquant qu'elle est sélectionnée. * Ensuite, appuyez sur la combinaison de touche Alt-X (couper). Le texte sélectionné disparait de l'écran. * Enfin, déplacez-vous à un autre endroit de votre programme, puis appuyez sur la combinaison de touches Alt-V (Coller). Le texte mis en mémoire réapparaît sous votre curseur, déplaçant vers la droite le texte se trouvant après le curseur. Si vous au lieu d'appuyer sur Alt-X (couper), vous aviez appuyé sur Alt-C (copier), la seule différence aurrait été que le texte sélectionné n'aurrait pas disparu de votre écran. Utilisation de l'Editeur/Chargeur Utilisation de Search et Replace. L'éditeur vous offre une fonction de recherche (search) et/ou de remplacement (replace). Cette fonction est particulièrement utile. Imaginez que vous deçidiez de changer un nom de variable dans tout votre programme. Si vous devez éffectuer cette modification manuellement, non seulement ce sera long, mais en plus un oubli est toujours possible. Grƒce à la fonction recherche/remplacement cette opération sera fiable et ne prendra pas plus que quelques secondes. Pour éffectuer une recherche dans votre programme, appuyez sur la combinaison de touches Alt-F (find). Une petite fenêtre s'ouvre au milieu de votre écran, vous proposant deux champs d'entrée. Un champs de recherche, et un champ optionnel de remplacement. Pour éffecuer la recherche, suivez les points suivants: * Introduisez la chaine à rechercher. Si dans votre chaine vous désirez introduire des "Tab" ou des "Entrée", vous pouvez taper les combinaisons de touches Ctrl-Tab et Ctrl-Entrée. Les signes "point" et "flèche en bas" apparaissent alors à l'écran. * Si vous le désirez introduisez la chaine de remplacement. Si vous l'introduisez cette chaîne sera copiée dans le presse-papier. Pendant la recherche, vous pourrez choisir de remplacer les correspondances de la chaîne recherchée. Si vous désirez éffectuer uniquement une recherche, appuyer sur Entrée après avoir indiquer la chaîne à rechercher. * Une fois la touche Entrée appuyée, la fenêtre est éffacée, et la première correspondance est affichée et sélectionnée. * Si vous désirez remplacer la chaîne sélectionnée, appuyez sur la combinaison de touches Alt-V. * Pour rechercher la correspondance suivante, appuyez sur la combinaison de touches Alt-N. Port I/O et Espace Variables Le basic Stamp possède 16 octets de RAM organisées en variables: 8 variables mots de 16 bits, 16 variables octets et 32 variables bits. Une variable de 32 bits reprend les 4 derniers octets. Les deux premiers octets sont utilisés pour les entrées/sorties. Ces deux octets, PINS et DIRS forment le mot PORT. De plus, les octets PINS et DIRS peuvent être divisés en variables d'un bit qui sont: PIN0-PIN7 ou PINS.0-PINS.7 ou PORT0-PORT7 et DIR0-DIR7 ou DIRS.0-DIRS.7 ou encore PORT.8-PORT.15. Les deux octets suivants peuvent être organisés en un mot de 16 bits W0 ou deux octets B0 et B1 ou encore 16 bits BIT0-BIT15 ou W0.0-W0.15 ou encore B0.1-B0.7 et B1.0-B1.7. Les 12 octets restants, B2 à B13, peuvent aussi être utillisés en mots de 16 bits W1-W6. Notez que le mot W6 est utilisé par le Basic Stamp lorsque votre programme utilise l'instruction GOSUB-RETURN. MOTS OCTETS BITS AUTRES NOMS Port Pins Pin0-Pin7 Pins.0-Pins.7,Port.0-Port.7 Dirs Dir0-Dir7 Dirs.0-Dirs.7,Port.8-Port.15 W0 B0 Bit0-Bit7 B0.0-B0.7,W0.0-W0.7 B1 Bit8-Bit15 B1.0-B1.7,W0.8-W0.15 W1 B2 B3 W2 B4 B5 W3 B6 B7 W4 B8 B9 W5 B10 B11 W6 B12 B13 Port I/O et Espace Variables Port est le mot de contrôle des entrées/sorties (I/O). Il est composé des deux octets Pins et Dirs. Pins et Pin0-Pin7 désignent le port d'entrée/sortie, ou chaque pin individuellement. Lorsque ces variables sont lues, le programme éffectue une lecture directe sur le port ou la pin correspondante. Lorsque ces variables sont écrites, la valeur est écrite dans la mémoire correspondante, puis transférée vers le port d'entrée sortie avant l'exécution de l'instruction. Dirs et Dir0-Dir7 désignent les registres de contrôle de direction du port d'entrée/sortie. Un "0" indique que la pin correspondante est une entrée, et un "1" indique que cette pin est une sortie. Cette valeur est envoyée directement sur le registre de contrôle de direction avant l'exécution de l'instruction. Lorsque vous écrivez votre programme en BASIC, vous devez utilisez les noms décrits çi-dessus pour écrire et lire les registres des huit pins d'entrée/sortie du STAMP. Habituellement, le programme commence par la définition de directions des pins d'entrée/sortie. Par exemple l'instruction "dirs=%00001111" met les pins 0 à 3 en sortie et les pins 4 à 7 en entrée (les pins sont numérotées de droite à gauche). Une fois la direction des pins définie, il suffit de lire ou d'écrire les zones mémoire correpondantes. Par exemple, l'instruction "pins=7" positionnera les pins 0 à 2 à 1, et l'instruction "b2=pins" lira le contenu des 8 pins d'entrée, et tranferera le contenu dans la variable b2. Pour plus de façilité, les pins peuvent être commandées de manière individuelle. Par exemple l'instruction "if pin3=1 then start" lira la pin d'entrée/sortie 3 et le programme ira à l'adresse "start" si sa valeur est 1 (état haut). Les variables restantes W0 à W6 ou B0 à B13 peuvent-être utilisées à votre propre convenance. Il existe une exeption importante: W6 est utilisée comme pile dans les instructions GOSUB ! Cela veut dire que si vous utilisez l'espace mémoire W6, et que votre programme utilise un GOSUB, cet espace mémoire sera modifié par le STAMP, et votre variable W6 sera modifiée. L'éditeur du STAMP reconnait les variables décrites plus haut mais vous pouvez en utiliser d'autre pour faciliter la lecture de votre programme. Voiçi quelques exemples: Symbol interupteur = pin0 ' Intérupteur devient Pin0. Symbol drapeau = bit0 ' Etiquette de bit individuel. Symbol compteur = b2 ' Etiquette d'octet. Liste des Instructions Instructions de branchement IF (cond.) THEN addresse : Test et branchement conditionel à l'adresse. BRANCH offset,(addresse, : Branchement vers une des adresse addresse...) : valeur de la variable offset. GOTO addresse : Branchement inconditionnel vers l'adresse. GOSUB addresse : Branchement vers la sous-routine située à l'adresse. 16 niveaux de go-sub sont permis. RETURN : Instruction de retour d'une sous- routine. Instructions de boucle FOR variable=start TO end : Etablissement d'une boucle for-next {STEP{-}increment} : commençant à la valeur start, et fi- NEXT {variable} : nissant à END. Si STEP n'est pas spécifié, sa valeur est 1. Instructions numériques {LET} variable = valeur : Permet la définition de variables. Toutes les opération arithmétiques et logiques sont permises. LOOKUP offset, (donnée, : Cherche la donnée correspondante à donnée..),variable : l'offset puis place cette donnée dans la variable. LOOKDOWN valeur,(val0, : Compare la valeur avec une des val1, val2..),variable : valeur. Si l'une d'elle correspond, le rang est mis dans variable. RANDOM variablemot : Génère un nombre pseudo-aléatoire. Liste des Instructions Entrées/Sorties digitales OUTPUT pin : Met la pin correspondante en sortie. LOW pin : Met la pin à l'état bas. HIGH pin : Met la sortie à l'état haut. TOGGLE pin : Change l'état de la sortie. PULSOUT pin, temps : Inverse l'état de sortie pendant un temps précis. INPUT pin : Met la pin correspondante en entrée. PULSIN pin,état,variable : Mesure une impulsion d'entrée. REVERSE pin : Inverse l'état d'entrée ou de sortie BUTTON pin,état,delais, : Lecture d'un poussoir avec anti- vitesse,variable : rebond, auto-répétition, et branche- étatpres,addresse : ment vers un label lorsque le bouton se trouve à l'état présélectionné. Entrées/Sorties série SEROUT pin,vitesse, : Envoie des informations contenues ({#}data,{#}data..) : dans data en série par la pin dési- gnée. La vitesse de transimition est définie par vitesse. SERIN pin,vitesse, : Reçoit des informations série par la (test,test,..), : pin désignée. Les données reçues {#}variable, : sont comparées avec les tests, et {#}variable... : après correspondances, elles sont rangées dans les variables. La vitesse de transmission est définie par vitesse. Entrées/Sorties analogiques PWM pin,rapport,cycles : Envoie une série d'impulsions PWM. cette instruction peut simuler une tension analogique en utilisant une résistance et un condensateur. POT pin,echelle,variable : Lit un résistance entre 5K et 50K. Liste des Instructions Sortie son SOUND pin,(note,durée, : Joue une série de notes. 0 corres- note,durée...) : pond à un silence, 1 à 127 sont des notes ascendantes et 128 à 255 des bruits. Accès à l'EEPROM EEPROM adresse,(data, : Sauvegarde des données dans l'EEPROM data...) : avant de télécharger le programme dans le STAMP. READ adresse,variable : Lit un octet de l'EEPROM dans une variable. WRITE adresse,data : Ecrit un octet dans l'EEPROM. Contrôle du temps PAUSE millisecondes : Arrête l'exécution de 0 à 65536 millisecondes. Contrôle de la consommation NAP periode : Passe en mode de consomation ré- duite pendant une courte période. SLEEP secondes : Passe en consommation réduite de 0 à 65536 secondes. END : Arrête le programme jusqu'au reset suivant. Débogage du programme DEBUG cls,"Text",cr,var, : Permet d'envoyer du texte et des $var,%var,#var, : variables vers le PC. #$var,#%var Instructions du BASIC BRANCH BRANCH offset, (adresse0,adresse1,.......,adresseN) Branchement vers l'adresse spécifiée par offset (si la valeur est comprise) et continue l'exécution du programme à partie de cette nouvelle adresse. Offset est une variable ou constante qui spécifie a quelle adresse il faut se brancher (de 0 à N). AddresseN sont des étiquettes auquelles le programmes va se brancher. Programme d'exemple: abc: serin 0,n2400,("code"),b2 'Vérifie l'entrée série et 'attend les valeurs '"c","o","d","e". La valeur 'suivante est stockée dans b2 BRANCH b2,(xyz,iou,irs) 'Si b2=0, branchement vers xyz; 'Si b2=1, branchement vers iou; 'Si b2=2, branchement vers irs. goto abc 'Retour vers abc si b2 n'est 'pas compris entre 0 et 2. xyz: ............ iou: ............ irs: ............ Instructions du BASIC BUTTON BUTTON pin,état,délais,vitesse,variable,étatpres,addresse Lecture d'un poussoir avec anti-rebond, autorépétition, et branchement vers une adresse lorsque le bouton se trouve dans son état présélectionné. Le Boutton peut être actif haut ou actif bas comme nous le montrerons dans les shémas suivants. Pin est une variable ou constante (0 à 7) qui indique quelle pin I/O est utilisée. Etat est une variable ou constante (0 ou 1) qui indique quel état logique doit être lu lorsque le bouton est appuyé. Délais est une variable ou constante (0 à 255) qui spécifie le temps pendant lequel le bouton doit-être appuyé avant que la fonction d'autorépétition commence. Le délais est calculé en nombre de cycle de la commande BOUTON. Délais à deux valeurs particulières: 0 et 255 0 indique pas d'anti-rebond ni de répétition 1 indique de l'anti-rebond, mais pas de répétition Vitesse est une variable ou constante (0 à 255) qui indique la vitesse d'autorépétition. La vitesse est exprimée en cycles de la commande BOUTON. Variable est la variable de travail de BOUTON. Elle doit être mise à zéro avant la première utilisation de BUTTON. Etatpres est une variable ou constante (0 ou 1) qui indique l'état actif du bouton. (0 = relaché, 1 = appuyé) Adresse est une étiquette qui spécifie l'endroit du branchement si l'on appuie sur le bouton. La description de cette instruction continue à la page suivante. Instructions du BASIC BUTTON (suite) Programme d'exemple: b2=0 'Effacement de b2 avant d'utiliser 'la routine BOUTON loop: BUTTON 3,0,90,10,b2,0,abc 'Lecture du poussoir en pin 3. 'Le poussoir est mis à l'état bas 0 'lorsque l'on appuie dessus. 'L'autorépétition démarre après 50 'cycles de la routine. 'La vitesse d'autorépétition est de 'une répétition tous les 10 cycles 'de la routine. La variable b2 'contient le nombre de répétitions. 'Si le bouton n'est pas appuyé (0), 'le programme se connecte à 'l'adresse abc. pulsout 5,1000 'Envoie une impulsion de 0,01 'secondes sur la pin 5. abc: pause 10 'Fait une pause de 10 mS. Cette 'Instruction a pour effet de créer 'une auto-répétition avec un délais 'de 1000 ms (10X100) et une vitesse 'd'autorépétition de 100 ms (10x10). goto loop 'Retourne à la routine button. Vous trouverez à la page 28 du manuel original en anglais, les schémas d'utilisation de la routine BUTTON. Instructions du BASIC DEBUG DEBUG Envoie le contenu d'une variable vers le PC pour être affichée. Pour ce qui est du format, l'instruction DEBUG fonctionne comme l'instruction PRINT de la majorité des BASICS. Cependant, au lieu d'envoyer le texte à l'écran, DEBUG envoie le texte vers le PC. Voiçi les différentes règles de format de l'instruction DEBUG. Les variables nommées normalement génèrent le message "variable = valeur" sur le PC. * Les variables nommées avec un dièse devant (#) génèrent sur le PC uniquement la valeur, de la variable sans son nom. * Les textes entre guillemets apparaissent tels quels sur le PC. * Normalement, la valeur des variables sont affichées en décimal. Toutefois, il est possible d'afficher les valeurs en hexa, en faisant précéder le nom de la variable par un dollard ($), ou de les afficher en binaire en faisant précéder le nom d'un pourçent (%). * "cr" peut être ajouté pour envoyer un retour charriot (carriage return) au PC. * "cls" est ajouté si vous voulez éffacer l'écran du PC. * Toutes les commandes d'impression doivent être séparées par des virgules. Exemples: DEBUG b2 ' Envoie "b2 = "+ la valeur de b2. DEBUG #b2 ' Envoie la valeur de b2. DEBUG "la lecture est ",b2 ' Envoie "la lecture est "+"b2 = " ' + la valeur de b2. DEBUG #%b2 ' Envoie la valeur de b2 en ' binaire. DEBUG "entrées ",b2,b3,cr ' Envoie "entrées " + "b2 + " + ' la valeur de b2 + "b3 + " + la ' valeur de b3 + retour charriot. Instructions du BASIC EEPROM EEPROM (adresse),(data,data,...) Met en mémoire les valeurs dans l'EEPROM avant de charger le programme BASIC. Cette commande est très utile pour charger des valeurs utiles dans votre programme. La commande EEPROM est exécutée avant tout chargement du programme dans le STAMP, mais cette commande n'est pas chargée. Dès lors, cette commande n'occupe aucune place mémoire. Adresse est une variable ou constante (0 à 255) optionnelle qui spécifie l'adresse a partir de laquelle les valeurs vont-être chargées. Si cette adresse n'est pas spécifiée, les valeurs se chargeront à partir de la prochaine adresse libre. Data sont des variables ou constantes (0 à 255) qui sont mis en mémoire dans l'EEPROM de manière séquentielle. Programme d'exemple: EEPROM 0,(5,23,15,158,2) ' Chargement des valeurs dans ' l'EEPROM en vue d'un usage ' futur. Instructions du BASIC END END Rentre dans le mode "sleep" pour un temps indéterminé. Pour faire redémarrer le STAMP, il faut soit une mise sous tension, ou une connexion PC. Pendant le mode "sleep", le STAMP reduit sa consommation à 20æA, si aucune charge n'est connectée. Il n'y as pas de paramètres avec l'instruction END. Instructions du BASIC FOR...NEXT FOR variable=début TO fin {STEP {-} incrément} . . . NEXT {variable} Etablissemnt d'une boucle FOR-NEXT. La variable est initialisée à la valeur début. Les instructions situées entre FOR et NEXT sont alors exécutées. A chaque exécution, la variable est incrémentée ou décrémentée de la valeur de incrément (si cette variable n'est pas précisée, l'incrément est 1). Si en arrivant à l'instruction NEXT, la variable n'a pas atteinte ou dépassé la valeur de end, l'ensemble des instruction comprise entre FOR et NEXT sera exécutée à nouveau. Si la variable a atteint ou dépassé la valeur de end, l'exécution continue à l'instruction qui suit le NEXT. La boucle est toujours exécutée au moins une fois quelques soit les valeurs de début et de fin. Il n'y a pas de limitation dans le nombre de boucles FOR-NEXT utilisée dans votre programme, mais il ne peut jamais y avoir plus de huit niveaux de profondeur. En d'autre termes, votre programme ne peut contenir plus de huit boucles imbriquées. Variable est une variable bit, octet ou mot qui est utlisée comme compteur. les valeurs de début et fin sont limitées par la capacité de la variable utilisée (0 à 1, 0 à 255 ou 0 à 65535 suivant que la variable est de type bit, octet ou mot). Début est une constante ou variable qui indique la valeur initiale de variable. Fin est une variable ou constante qui indique la valeur limite de variable. Incrément est une valeur optionnelle qui indique la valeur d'incrémentation ou de décrémentation du compteur. Si cette variable n'est pas spécifiée, la valeur de l'incrément sera 1. Programme exemple: FOR b2 = 0 TO 255 ' Initialise une boucle FOR-NEXT qui ' va compter de 0 à 255. pins = b2 ' Sort une valeur 8 bits sur les ' pins 0 à 7. NEXT Instructions du BASIC GOSUB GOSUB adresse Met en mémoire l'adresse de l'instruction qui suit le GOSUB et puis se connecte à l'adresse indiquée. L'exécution du programme continue donc à ce point. Lorsque le programme rencontre l'instruction RETURN, il revient à l'adresse mise en mémoire lors du GOSUB et continue l'exécution à cette adresse. Le nombre de GOSUB utilisés dans un programme est de 16 maximum. Adresse est une étiquette qui indique l'endroit du branchement. Programme exemple : FOR b4 = 0 TO 10 GOSUB abc ' Sauve l'adresse de retour, puis va ' à l'adresse abc. NEXT abc: PULSOUT 0,b4 ' Provoque une impulsion sur la pin ' 0. La longueur de l'impulsion est ' de b4 X 10æs. TOGGLE 1 ' Inverse l'état de la pin 1. RETURN ' Retourne à l'adresse d'appel de la ' routine. Instructions du BASIC GOTO GOTO adresse Branchement inconditionnel vers adresse, puis l'exécution du programme continue à partir de celle-çi. Adresse est l'étiquette qui indique l'endroit du branchement. Programme exemple: abc: pulsout 0,100 ' Génère une impulsion de 1000æS sur ' la pin 0. GOTO abc ' Reprend la procédure au début. Instructions du BASIC HIGH HIGH pin Commute la pin indiquée à l'état haut. Si la pin est programmée en entrée, elle sera automatiquement commutée en sortie. Pin est une variable ou constante (0 à 7) qui précise quelle est la pin utilisée. Programme d'exemple: ibm: HIGH 3 ' Met la pin 3 en sortie à l'état haut. low 2 ' Met la pin 2 en sortie à l'état bas. HIGH 2 ' Met la pin 2 en sortie à l'état haut. low 3 ' Met la pin 3 en sortie à l'état bas. Instructions du BASIC IF...THEN IF variable ?? valeur {AND/OR variable ?? valeur...} THEN addresse Compare la ou les variables avec la ou les valeurs, et se branche à l'adresse si le résultat est positif. Contrairement à l'instruction IF...THEN des autres version de BASIC, l'adresse qui suit le then ne peut pas être remplacée par une autre instruction comme "IF A=0 THEN READ 200,B". Dans tous les cas, ce qui suit le THEN sera toujours une adresse. ?? est un des opérateurs suivants : = , <> , > , < , >= , <= . Variable est une variable qui va être comparée avec valeur. Valeur est une variable ou constante qui sert de référence à la comparaison. Adresse est une étiquette qui spécifie où se brancher si le résultat de la comparaison est positif. Programme d'exemple: abc: serin 0,n2400,b2 ' Reçois un octet de l'entrée ' sérielle. if b2 = 185 THEN xyz ' Si la valeur 185 est reçue, le ' programme se branche à l'adresse ' xyz. high 2 ' Met la pin 2 à létat haut. goto abc ' Branchement à l'adresse abc. xyz: low 2 ' Met la pin 2 en sortie à l'état ' bas. goto abc ' Branchement inconditionnel à ' l'adresse abc. Instructions du BASIC INPUT INPUT pin Met la pin correspondante en entrée. Cette commande coupe les drivers de sortie de cette pin, pour permettre à votre programme de lire l'état dans laquelle se trouve la pin par raport au monde extérieur. Pin est une variable ou constante (0 à 7) qui indique quelle pin est utilisée. Programme d'exemple: INPUT 5 ' Met la pin 5 en entrée. abc: if pin5 = 1 then xyz ' Si la lecture de la pin 5 est un 1 ' (état haut), alors le programme se ' branche à l'adresse xyz. goto abc ' Branchement à l'adresse abc. xyz: serout 3,n300,(65) ' Envoie un 65 sur la sortie série. nbc: if pin5=1 then nbc ' Boucle tant que la pin 5 est à ' l'état haut. goto abc Instructions du BASIC LET {LET} variable={-} valeur ?? valeur ... Assigne une valeur à la variable et/ou éffectue des modifications sur la variable. Toutes les manipulations internes sont faites au niveau mot (16 bits). L'instruction LET est optionnelle. En effet, "A=10" est identique à "LET A=10". ?? est un des opérateurs suivants: + addition - Soustraction * Multiplication (Le résultat est le mot de poids faible) ** Multiplication (Le résultat est le mot de poids fort) / Division (Le résultat est le quotient) // Division (Le résultat est le reste) MIN Garde la variable plus petite ou égale à la valeur MAX Garde la variable plus grande ou égale à la valeur & ET logique | OU logique ^ XOR logique &/ NON ET logique |/ NON OU logique ^/ NON XOR logique Variable va être assignée à la valeur et/ou manipulée. Valeur(s) est une variable ou constante qui affecte la variable. Programme d'exemple: abc: pot 0,100,b3 ' Lit le potentiommètre et stocke le ' résultat en b3. LET b3=b3/2 ' Divise le résultat par 2. b3 = b3 max 100 ' Limite le résultat entre 0 et 100. ' Notez que le mot "LET" n'est pas ' obligatoire. Instructions du BASIC LOOKDOWN LOOKDOWN cible,(valeur0,valeur1,...,valeurN),variable Cherche parmi les valeurs celle de la cible. Si une des valeurs est identique à cible, alors, la valeur de son rang (0 à N) sera stockée dans variable. Par exemple, si les valeurs sont 2, 13, 15, 28, 8 et la valeur cible est 15, alors la variable sera mise à 2, parce que 15 est la troisième valeur de la liste, et que le comptage commence à zéro. Si aucune des valeurs ne correspond, alors la variable n'est pas affectée par l'opération. Cible est une variable ou constante qui sert de référence à la recherche. Valeur0, valeur1,... est une liste de valeurs. La valeur de cible est comparée à ces valeurs. Variable contient le résultat de la recherche. Programme d'exemple: serin 0,n2400,b2 ' Reçois un octet sur l'entrée ' série. LOOKDOWN b2,(65,88,93),b3 ' Si b2=65, alors b3 = 0. ' Si b2=88, alors b3 = 1. ' Si b2=93, alors b3 = 2. Instructions du BASIC LOOKUP LOOKUP position,(valeur0,valeur1,...,valeurN),variable Va chercher la valeur indiquée par position puis la stocke dans variable. Par exemple, si les valeurs sont 2,13,15,28,8 et que la position est 1, alors variable contiendra la valeur 13, parce que 13 est la deuxième valeur dans la liste (le comptage commence à zéro). Si position dépasse le nombre de valeurs contenue dans la liste, alors variable n'est pas affectée. Position indique quelle valeur doit-être stockée dans variable. Valeur0,valeur1,...,valeurN est une liste de valeurs. La valeur indiquée par position sera choisie parmi cette liste. Variable contient le résultat de l'instruction. Programme exemple: for b2=0 to 25 LOOKUP b2,(65,66,67,...),b3 ' Convertit la valeur de boucle ' (b2 de 0 à 25) dans le code ' ascii de la lettre ' correspondante (A à Z) et ' stocke ce code dans b3. next Instructions du BASIC LOW LOW pin Commute la pin indiquée à l'état bas. Si la pin est programmée en entrée, elle sera automatiquement commutée en sortie. Pin est une variable ou constante (0 à 7) qui précise quelle est la pin utilisée. Programme d'exemple: abc: LOW 3 ' Commute la pin 3 en sortie, et la ' met à l'état bas. pause 1000 ' Effectue une pause d'environ 1 ' seconde. high 3 ' Commute la pin 3 en sortie et la ' met à l'état haut. goto abc ' Recommence la procédure depuis le ' début. Instructions du BASIC NAP NAP période Entre dans un mode de veille pendant une courte période. La consommation de puissance est réduite à environ 20æA, et toutes les sorties sont coupées. Période est une variable ou constante qui détermine la durée pendant laquelle le STAMP sera en mode veille. La durée se calcule comme suit (2^période)*18ms. Période est compris entre 0 et 7, et donc la mise en veille peut varier de 18ms à 2.3 secondes. Programme d'exemple : . . NAP 5 ' Met le STAMP en veille pendant ' 32*18ms=576ms (environ une demi ' seconde). Instructions du BASIC OUTPUT OUTPUT pin Commute la pin correspondante en sortie. Pin est une variable ou constante (0 à 7) qui indique quelle pin I/O est utilisée. Programme exemple: bit0 = 0 ' Initialise les variables bit. bit1 = 1 OUTPUT 2 ' Commute la pin 2 en sortie. abc: pin2 = bit0 ' Met la pin 2 à l'état bas. pin2 = bit1 ' Met la pin 2 à l'état haut. goto abc ' Branchement à l'adresse abc. Instructions du BASIC PAUSE PAUSE millisecondes Pause éffectue une pause dans l'exécution du programmes pendant un certain nombre défini de millisecondes. La précision du temps de pause dépend de la précision de l'oscillateur utilisé. De toute façon, une erreur de plus ou moins une milliseconde due aux instructions adjacentes est toujours introduite. Plus le temps de pause est long, moins cette erreur sera significative. Un timer relativement précis peut-être implémenté si l'on dois éffectuer une longue pause, comme par exemple 100ms, et en incrémentant un compteur, qui a chaque passage, vérifie un état de fin, et si elle n'est pas vérifiée, revient à la pause originale. Dans le cas d'une pause de 100ms, l'erreur peut-être d'environ 1%. Mais on peut y remédier en réduisant le temps de 100 à 99 (valeur calculée après test de mesure), ou alors, en augmentant de 100 à 250 et donc en comptant par intervalles de 1/4 de secondes. Millisecondes est une variable ou constante (0 à 65535) qui indique la durée de la pause en millisecondes. Programme d'exemple: abc: low 2 ' Met la pin2 à l'état bas. PAUSE 100 ' Pause de 1/10 de seconde. high2 ' Met la pin2 à l'état haut. goto abc ' Boucle le programme sur lui-même. Instructions du BASIC POT POT pin, echelle, variable Cette instruction éffectue la lecture d'une résistance qui peut-être, un potentiommètre d'une valeur comprise entre 5K et 50K, une thermistor, une VDR, une NTC ou n'importe quelle résistance variable. L'entrée de la pin doit-être connectée au positif à travers la résistance à mesurer et à la masse à travers un condensateur. La mesure de la résistance est en fait une mesure du temps de charge du condensateur. Pin est une variable ou constante (0 à 7) qui définit quelle pin est utilisée pour cette mesure. Echelle est une variable ou constante (0 à 255) qui est utilisée pour pondérer le résultat interne en 16 bits. En fait, la lecture interne est multipliée par le facteur (echelle/256), donc, une échelle de 128 réduira l'échelle de 1/2, une échelle de 64 donnera une lecture à 1/4 d'échelle, et ainsi de suite. L'option ALT-P expliquée çi-dessous fournit un moyen facile de déterminer le mieux possible la valeur de cet argument en fonction des composants électroniques choisis. Variable est utilisé pour stocker le résultat final de la lecture. De manière interne, l'instruction POT calcule une valeur 16 bits. Mais le résultat fournit est un nombre de 8 bits. Le facteur de division que l'on utilise sera donc dépendant des composants utilisés. Pour trouver la meilleur estimation pour la valeur de division, vous pouvez appuyer sur la combinaison de touches ALT-P pendant que vous êtes dans l'éditeur fourni avec votre STAMP (Le STAMP doit évidemnt être connecté à votre PC). Une fenêtre de réglage apparaît alors à l'écran, et l'utilisation de cette fenêtre va vous-être décrite çi après. Vous trouverez la suite de la description de l'instruction POT à la page suivante. Instructions du BASIC POT (suite) Comment trouver la meilleur valeur d'échelle pour POT: * Votre PC doit être raccordé à votre STAMP, et les composants de mesure doivent être connectés. Appuyez alors sur ALT-P * Une fenêtre apparaît avec la question "sur quelle pin est connectée la résistance?", sélectionnez alors la pin à utiliser. * L'éditeur charge alors dans le STAMP un petit programme qui éffacera donc irrémédiablement le programme qui serait alors chargé dans le STAMP. * La pin étant définie, une deuxième fenêtre apparaît alors indiquant deux nombres: SCALE et VALUE (Echelle et Valeur). Faîtes varier votre résistance jusqu'a sa valeur la plus petite indiquée par SCALE (Si votre résistance ne peut varier facilement, utilisez un potentiomètre de valeur similaire pour la simuler). Une fois que vous avez trouvé la plus petite valeur, la lecture est bonne. La valeur indiquée dans SCALE est celle à utiliser pour échelle dans l'intruction POT. * Si vous le désirez alors, vous pouvez tester la valeur trouvée. Appuyez sur la barre d'espace, ce qui a pour effet de bloquer la valeur indiquée par SCALE. Vous pouvez alors faire varier votre résistance ou votre potentiomètre, et la valeur lue par l'instruction POT sera affichée sur la ligne VALUE. Si votre facteur d'echelle est bon, la lecture devra varier entre 0 et 255. Si l'indication n'était pas bonne, vous pouvez alors réappuyer sur la barre d'espace, puis recommencer le processus d'étalonnage en vue de trouver la meilleure valeur pour echelle. Programme d'exemple: abc: POT 0,100,b2 ' Lit le potentiomètre connecté à la ' pin 0. serout 1,N300,(b2) ' Envoie la lecture du potentiomètre ' sur la sortie série. goto abc ' Recommence la lecture. Vous trouverez à la page 48 du manuel original en anglais, le schéma d'application de l'instruction POT. Instructions du BASIC PULSIN PULSIN pin,état,variable Mesure une impulsion d'entrée par unités de 10æs. Pin est une variable ou constante (0 à 7) qui indique quelle pin est utlisée pour la mesure. Etat est une variable ou constante (0 à 1) qui indique quel flanc doit être pris en compte pour commencer la lecture. 0 indique un flanc descendant, et 1 indique un flanc montant. Variable est une variable utilisée pour stocker le résultat de la mesure (de 1 à 65536). La variable utilisée peut-être de type octet ou mot. Si la variable utilisée est de type octet, la lecture ne pourra dépasser 2.56 ms sinon, le résultat sera 0. Par contre si une variable de type mot est utilisée, le temps mesuré pourra atteindre .65536 secondes avec toujours une valeur nulle si le temps dépasse cette limite. Programme d'exemple: PULSIN 4,0,w2 ' Mesure une impulsion d'entrée sur ' la pin 4. La mesure débutera sur ' le premier flanc descendant ' présent sur la pin4 et se ' terminera sur le flanc montant qui ' suivra. serout 1,n300,(b5) ' Envoie l'octet de poids fort de la ' lecture 16 bits sur la sortie ' série. Instructions du BASIC PULSOUT PULSOUT pin, temps Génère une impulsion en inversant l'état de la pin pendant la période définie par temps. Pin est une variable ou constante (0 à 7) qui défini la pin utilisée pour cette impulsion. Temps est une variable ou constante (0 à 65535) qui donne la longeur de l'impulsion en unités de 10æs. Programme d'exemple: abc: PULSOUT 0,3 ' inverse l'état de la pin 0 pendant ' 30 æs. pause 1 ' Pause de 1ms. goto abc ' Recommence le programme au début. Instructions du BASIC PWM PWM pin, rapport, cycles Met une pin en sortie et effectue une modulation par largeur d'impulsion (PWM Pulse-Width-Modulation en anglais) sur celle-çi, puis recommute cette pin en entrée. Cette commande peut-être utilisée pour générer une tension analogique (0 à 5V) en connectant à la pin une résistance en série, puis un condensateur à la masse. La connexion résistance-condensateur sera la sortie analogique (voir le circuit çi-dessous). Comme le condensateur se décharge lentement, l'instruction PWM doit être exécutée de manière régulière pour mettre à niveau la tension analogique. Pin est une variable ou constante (0 à 7) qui indique quelle pin est utilisée. Rapport est une variable ou constante (0 à 255) qui indique la tension de sortie (0V à 5V) souhaitée. Cycles est une variable ou constante (0 à 255) qui spécifie le nombre de cycles de sortie. Plus les condensateurs sont gros, plus le nombre de cycles devra être important. Chaque cycle dure environ 5ms. Il faut noter que tout courant consommé sur cette sortie vas décharger le condensateur. Si vous utilisez cette sortie pour commander une sortie, il faudra que vous interfaciez la sortie analogique avec un ampli opérationnel à grande impédance d'entrée. Programme d'exemple: abc: serin 0,n300,b2 ' Réception d'un octet par l'entrée ' série. PWM 1,b2,20 ' Sort une tension analogique sur la ' pin 1. Cette tension sera ' proportionelle à la valeur reçue ' sur l'entrée série. Vous trouverez page 51 du manuel original en anglais, le schéma d'application pour l'instruction PWM. Instructions du BASIC RANDOM RANDOM variablemot Cette instruction renvoie la valeur suivante de la liste pseudo-aléatoire dans variablemot. Le STAMP utilise une liste de 65535 nombres pseudo-aléatoires pour exécuter cette instruction. Quand l'instruction est exécutée, la valeur dans variablemot détermine où le "pointeur" doit se trouver dans la liste des nombres. Si la même valeur est utilisée, la même séquence de nombres sera trouvée. Cette méthode n'est absolument pas "aléatoire", mais elle suffit dans la majorité des applications. Pour obtenir des nombres quasi-aléatoires, il faut introduire un élément imprévisible dans le processus. Par exemple, vous pouvez utilisez la lecture d'une entrée série, ou la valeur d'une horloge pour donner à votre suite aléatoire un peu plus de hasard. Variablemot est une variable (0 à 65535) qui est utilisée comme zone de travail de la routine et comme résultat. Chaque passage par cette instruction, done le nombre suivant dans la liste pseudo-aléatoire. Programme d'exemple: loop: RANDOM w1 ' Génère un nombre pseudo-aléatoire ' de 16 bits. sound 1,(b2,10) ' Génère une tonalité aléatoire sur ' la pin 1 en utilisant l'octet de ' poids faible (b2) comme valeur de ' note. goto loop 'Recommence au début Instructions du BASIC READ READ adresse,variable Lit l'EEPROM à l'adresse indiquée, puis stocke la valeur lue dans la variable. L'EEPROM peut-être utilisée aussi bien pour stocker des programmes (qui sont stockés depuis le haut vers le bas) et des données (qui sont stockées depuis le bas vers haut). Pour être certain que votre programme ne s'éfface pas lui-même, vous pouvez lire l'adresse 255 de l'EEPROM avant de commencer à écrire une valeur. En effet, l'adresse 255 contient l'adresse de la dernière instruction de votre programme. Dès lors, votre programme peut utiliser tout l'espace qui se trouve sous cette valeur. Par exemple, si la valeur lue en 255 est 100, votre programme pourra utiliser la zone comprise entre les adresses 0 et 99 pour le stockage des données. Adresse est une variable ou constante (0 à 255) qui indique l'adresse de l'EEPROM à laquelle on lit la valeur. Variable reçois la valeur stockée dans l'EEPROM. Programme d'exemple: READ 255, b2 ' Vas chercher le dernier ' emplacement utilisé par le ' programme. loop: b2 = b2 - 1 ' Décrémente cette adresse de 1 ' unité. serin 0,N300,b3 ' Reçois un octet sur le port série ' et le stocke dans b3. write b2,b3 ' Stocke l'octet reçu sur le port ' série dans l'EEPROM. if b2>0 then loop ' Recommence le procédé s'il reste ' de la place dans l'EEPROM. Instructions du BASIC RETURN RETURN Retour d'une sous-routine. La commande RETURN vas à l'adresse qui suit la commande GOSUB qui a été exécutée la dernière, et continue l'exécution du programme à partir de ce point. RETURN n'a pas de paramètres. Programme d'exemple: for b4 = 0 to 10 gosub abc ' Stocke l'adresse de retour et va ' à l'adresse abc. next abc: pulsout 0,b4 ' Sort une impulsion de b4X10æs sur ' la pin0. toggle1 ' Inverse l'état de la pin 1. RETURN ' Se branche à l'adresse qui suit le ' GOSUB (içi le NEXT). Instructions du BASIC REVERSE REVERSE pin Inverse la direction de la pin définie par pin. Si cette pin est une entrée, elle devient une sortie, et si elle est une sortie elle devient une entrée. Pin est une variable ou constante (0 à 7) qui spécifie quelle pin est redirigée. Programme d'exemple: dir3 = 0 ' Met la pin 3 en sortie. REVERSE 3 ' Met la pin 3 en entrée. REVERSE 3 ' Met la pin 3 en sortie. Instructions du BASIC SERIN SERIN pin,vitesse,(test,test,...) SERIN pin,vitesse,{#}variable,{#}variable,... SERIN pin,vitesse,(test,test,...),{#}variable,{#}variable Met une pin en entrée série à la vitesse indiquée, puis attend sur cette entrée certains test et/ou variables. Si un ou des test(s) sont donnés dans l'instruction, l'exécution du programme ne peu continuer que si les valeurs données apparaissent sur l'entrée série dans l'ordre exact. Si des variables sont données dans l'instruction, les valeurs reçues sur l'entrée série seront stockées dans les variables. Notez que seules les données reçues après les tests seront prise en compte. Les noms de variables peuvent-être précédés du signe dièse (#). Dans ce cas, la routine acceptera uniquement des "nombres ascii" en entrée pour les variables. Par exemple, supposons que la variable à mettre à jour par l'entrée série soit "abc". Si elle est écrite telle-quelle, l'octet suivant qui se présentera à l'entrée série sera stockée dans la variable "abc". Par contre si cette variable est précédée du signe dièse (#), alors, la routine fera une pause jusqu'a la réception d'un "nombre ascii". En fait, un "nombre ascii" est une série d'octet qui sont des codes ascii des nombres 0 à 9 (codes ascii de 48 à 57), suivi par un octet qui n'est pas compris dans cette fourchette. Cette méthode est très utile pour lire des nombres venant d'un terminal ou un autre périphérique ascii. La majorités de ces periphériques envoient autant de codes ascii que de chiffres dans le nombre. Par exemple, si un périphérique envoie le nombre "108", il enverra en fait les trois octets ("1","0","8") suivis par un espace (code ascii 32) ou un autres charactère. Pin est une variable ou constante (0 à 7) qui défini la pin à utiliser pour l'entrée série. Vitesse est une variable ou constante (0 à 7) qui défini le mode série qui sera utilisé sur l'entrée. Voiçi la définition des 8 modes d'entrée possibles. # Symbole Vit. Entrée inversée/directe 0 T2400 2400 Directe 1 T1200 1200 Directe 2 T600 600 Directe 3 T300 300 Directe 4 N2400 2400 Inversée 5 N1200 1200 Inversée 6 N600 600 Inversée 7 N300 300 Inversée Suite de la description de l'instruction SERIN à la page suivante. Instructions du BASIC SERIN (suite) Tests sont des variables ou constantes (0 à 255) optionnelles qui permettent d'attendre une entrée précise pour continuer l'exécution du programme. Variables sont des variables (0 à 255) optionnelles qui sont utilisées pour stockée les valeurs présentes en entrée. Si un ou des test(s) ont été définis, les valeurs de ces tests devront d'abord apparaître avant que les variables soient mises à jour. Lors de l'utilisation du STAMP en entrée série, seuls la vitesse de transmission et le mode inverse ou non peuvent-être définis. Les données en entrée devront toujours avoir le format suivant: 8 bits de data, pas de parité, 1 bit de stop. Programme d'exemple: read 255,b2 ' Lecture de l'occupation mémoire du ' programme dans l'EEPROM. loop: b2=b2-1 ' Décrémentation de l'adresse de ' l'EEPROM. SERIN 0,N300,("ABC"),b3 ' Attend la suite "ABC" sur le port ' série, puis prend l'octet suivant ' et le charge dans b3. write b2,b3 ' Range la valeur reçue (b3) dans ' l'EEPROM. if b2 > 0 then loop ' Prend l'octet suivant s'il reste ' de la place dans l'EEPROM. Si vous souhaitez connecter votre STAMP à une ligne RS232, il vous suffit d'ajouter une résistance série dans le circuit d'entrée. Cette résistance limitera le courant à une valeur acceptable pour le STAMP. Pour ce qui est de la tension du signal RS232, la protection d'entrée du PIC s'en chargera. Vous trouverez à la page 57 du manuel original en anglais, le schéma d'application de la protection de l'entrée série. Instructions du BASIC SEROUT SEROUT pin,vitesse,({#}data,{#}data,...) Programme le port série en sortie, puis envoie les données. Les datas, qu'ils soient variables ou constantes, peuvent être précédés du signe dièse (#). Cette option permet d'envoyer les variables en ascii. Supposez que vous voulez envoyer par la sortie RS232 la variable "abc" qui a pour valeur 108. Si vous l'écrivez "abc", le port série enverra un seul octet qui aurra pour valeur 108. Par contre, si vous écrivez la variable "#abc", alors, les trois valeurs "1","0" et "8" puis un espace, seront envoyés par la sortie RS232. Cela est parfois utile pour envoyer des données vers un terminal ou un autre périphérique qui travaille en format ASCII. Pin est une variable ou constante (0 à 7) qui désigne la pin qui sera utilisée pour la sortie série. Vitesse est une variable ou constante (0 à 15) qui défini les conditions d'utilisation du port série. Voiçi un tableau qui reprend la description des différentes valeurs de vitesse. # Symbole Vitesse Inverse/Direct Sortie 0 T2400 2400 Direct Commandée 1 T1200 1200 Direct Commandée 2 T600 600 Direct Commandée 3 T300 300 Direct Commandée 4 N2400 2400 Inverse Commandée 5 N1200 1200 Inverse Commandée 6 N600 600 Inverse Commandée 7 N300 300 Inverse Commandée 8 OT2400 2400 Direct Drain Ouvert 9 OT1200 1200 Direct Drain Ouvert 10 OT600 600 Direct Drain Ouvert 11 OT300 300 Direct Drain Ouvert 12 ON2400 2400 Inverse Source Ouvert 13 ON1200 1200 Inverse Source Ouvert 14 ON600 600 Inverse Source Ouvert 15 ON300 300 Inverse Source Ouvert Data sont des variables ou constantes (0 à 255) qui sont envoyées sur la pin qui sert de port série en sortie. La suite de la description de l'instruction SEROUT se trouve à la page suivante. Instructions du BASIC SEROUT (suite) Lors de l'utilisisation d'une sortie série avec le STAMP, seuls la vitesse, l'état inversé ou direct et l'état commandé ou drain/source ouvert peuvent être définis. Les données sont toujours envoyées avec le format 8 bits de datas, pas de bit de parité et 1 stop bit. Programme d'exemple: abc: pot 0,100,b2 ' Lecture du potentiommètre sur la ' pin 0. SEROUT 1,N300,(b2) ' Envoie la lecture du ' potentiommètre sur la sortie ' série. goto abc ' Recommence au début. La sortie série du STAMP utilise des niveaux de 0 et de 5 Volts. Les tensions RS232 étants de -15 volts à +15 volts, la plupart des éléments RS232 ne fonctionneront pas avec le STAMP sans adaptation de tension. Par contre, cette sortie fonctionne presque dans tous les cas, lorsque elle est connectée a l'entrée série d'un PC. Instructions du BASIC SLEEP SLEEP secondes Entre dans un mode d'attente (sleep) pendant une période définie en secondes. La résolution de cette instruction est d'environ 2.3 secondes, et sa précision est d'environ 99.9%. Pendant cette période, la consommation du STAMP est réduite à 20æA, et plus aucune charge n'est commandée. Secondes est une variable ou constante (1 à 65535) qui défini la durée de la mise en mode d'attente. Le temps de mise en attente peut varier de 2.3 secondes à 18 heures. Programme d'exemple: . . SLEEP 3600 ' Mise en mode d'attente pendant une ' heure. goto xyz ' Continuation du programme après ' une heure. Instructions du BASIC SOUND SOUND pin,(note,durée,note,durée,...) Joue une note pendant une durée déterminée. La pin utilisée doit être connectée au pôle positif d'un condensateur électrolitique, dont le pôle négatif est connecté à un haut-parleur de 40 Ohms ou à un résonnateur pièzo, dont l'autre connexion est reliée à la masse (voir le shéma çi-dessous). Les tons générésen sortie ont pour forme des ondes carrées. Pin est une variable ou constante (0 à 7) qui défini la pin utilisée pour générer le ton. Note(s) est une variable ou constante (0 à 255) qui définit le type d'onde et la hauteur du son. La valeur 0 correspond à un silence. Les valeurs de 1 à 127 définissent des notes ascendantes en onde carrée. Les valeurs de 128 à 255 définissent un bruit blanc avec une tonalité ascendante. Durée(s) est une variable ou constante (0 à 255) qui défini la durée de chaque note. Programme d'exemple: for b2=0 to 255 SOUND 1,(25,10,b2,10) ' Génération d'un ton constant (25) ' suivit par un ton ascendant (b2). ' Les deux tons ayant la même durée ' (10). next Vous trouverez le schéma d'application de la commande SOUND à la page 61 du mode d'emploi original en anglais. Instructions du BASIC TOGGLE TOGGLE pin Met la pin correspondante en sortie puis inverse son état. Pin est une variable ou constante (0 à 7) qui définit quelle pin d'entrée/sortie est utilisée. Progarmme d'exemple: for b2=1 to 25 TOGGLE 5 ' Change l'état de la pin 5. next Instructions du BASIC WRITE WRITE adresse,donnée Sauve une donnée à une adresse de l'EEPROM. L'EEPROM peut-être utilisée aussi-bien pour stocker des programmes (qui sont stockés depuis le haut vers le bas) et des données (qui sont stockées depuis le bas vers haut). Pour être certain que votre programme ne s'éfface pas lui-même, vous pouvez lire l'adresse 255 de l'EEPROM avant de commencer à écrire une valeur. En effet, l'adresse 255 contient l'adresse de la dernière instruction de votre programme. Dès lors, votre programme peut utiliser tout l'espace quise trouve sous cette valeur. Par exemple, si la valeur lue en 255 est 100, votre programme pourra utiliser la zone comprise entre les adresses 0 et 99 pour le stockage des données. Adresse est une variable ou constante (0 à 255) qui indique l'adresse de l'EEPROM à laquelle on va écrire la valeur. Donnée est une variable ou constante (0 à 255) qui contient la valeur à stocker dans l'EEPROM. Programme d'exemple: read 255,b2 ' Recherche la dernière adresse ' utilisée par le programme dans ' l'EEPROM. loop: b2 = b2 - 1 ' Décrémente l'adresse suivante de ' l'EEPROM. serin 0,N300,b3 ' Recoit un octet sur l'entrée série ' et le stocke en b3. WRITE b2,b3 ' Stocke l'octet reçu dans l'EEPROM ' à l'adresse b2. if b2 > 0 then loop ' Prend l'octet suivant s'il reste ' de la place dans l'EEPROM.