ch
http://www.bricobot.ch/docs/GCbasic.pdf
Chipdata Les noms et adresses des ports et registres Demos Quelques programmes de Maurice. Ces extensions des programmes source sont du type .gcb .bas, .bak ou .txt. Lditeur cre un .bak. Le compilateur gnre des fichiers .asm et .hex Docs Tutorial et licence de GCBASIC. Il est conseill dimprimer le Command Guide pour avoir la liste des instructions et commandes (8 pages). Le tutorial sappuie sur un robot e-racer et nest pas termin. Include Fichiers insrer caractrisant diffrentes plateformes robotiques. Les fichiers Bimo.h et BimoPlus.h sont en prparation. Source Les programmes source du GCBASIC. Editeur GCbide Lcran est divis en trois parties principales. La barre de tches avec les icnes La zone ddition pour le contenu du programme La zone de commentaires de compilation qui indique soit les erreurs ou la russite de la compilation Fonctions des icnes On utilise essentiellement le triangle bleu en 8e position pour lancer la compilation.
GCBASIC
page :2
07/02/2009
Exemple de programme aprs une compilation russie. Les erreurs sont signales dans la partie infrieure, avec indication du numro de la ligne en erreur.
Pour aider ldition des mots souvent utiliss, il suffit douvrir Key et faire un double clic sur le mot choisi pour que celui-ci soit copi sous le pointeur. Laide est bien faite et vous apprendra tout ce qui vous fait hsiter, mais tout est en anglais !
Le Basic ne connat que le dcimal, mais GCbasic a ajout lcriture dun mot binaire de 8 bits avec la notation b10110110. On dclarera naturellement toutes les combinaisons de bit utilises en leur donnant un nom explicite. Exemples de programmes Un programme comporte plusieurs parties : des indications gnrales, ce quil faut dire au Basic et au programmateur, puis le programme en mettant en vidence sa structure. ' Nom.gcb le nom du fichier sur le disque ce quil fait, sur quoi il tourne ' programme dit le: xx.xx.2008 ' programme test le: Processeur et configuration: #chip 16F630, 4 'frquence du Pic 4 MHz #config intrc_osc,cp_off, cpd_off, boden_off, pwrte_off , wdt_off
Cette ligne contient les fameux fusibles qui fixent le fonctionnement du Pic. Il est important de prciser toutes les valeurs, mme celles que lon utilise pas. Ces paramtres se trouvent dans le rpertoire gputils dans le dossier
GCBASIC
page :3
07/02/2009
Dclaration des variables du programme Toto = 3 Dclare et assigne ' Dclaration des constantes associes aux ports #Define Vert PortA.5 bit 5 du portA #define VertOn set PortA.5 on #define VertOff set PortA.5 off
Dans le programme, il suffira dcrire VertOn
main suivi de 2 points est une tiquette laquelle on peut sauter par des instructions au cours du programme. Exemple : instruction goto main
attente 500 ms
Linstruction doit tre suivie dun chiffre ou dun nombre et dune unit us = microsec., ms = millisec., s = seconde, m = minute, h = heure toutes ces units et un exemple de programme sont donnes dans licne Aide GCBASIC Cliquer Rechercher, taper Wait dans le champ, cliquer sur Rechercher et double cliquer sur linstruction Wait.
END
Tout programme doit se terminer par linstruction END
GCBASIC
page :4
07/02/2009
Une compilation russie gnre un fichier .hex qui peut tre charg dans le Pic du Bimo. Elle cre en mme temps un fichier .asm et un fichier .back. Ces trois fichiers se trouvent dans le dossier Demos de GCBASIC. Raccorder le PicKit2 au circuit Bimo Enficher une barrette mle aux pattes de 0.7 mm coude dans la barrette femelle de six ples situe droite de linterrupteur glissire. Insrer le PicKit2 selon images ci-dessous.
GCBASIC
page :5
07/02/2009
Transfert du programme sur le Bimo Avec le PicKit2 raccord au Bimo et la prise USB de lordinateur, dmarrez le programme PicKit2. Choisir le processeur, Midrange dans le menu Device family, puis 16F630 dans le menu Device .
Cliquer sur Import Hex et charger le fichier .hex La premire fois il faut aller le chercher sur le disque. Dans le dossier Demos de CGBASIC, cliquer sur 16F630led.hex, puis cliquer sur Ouvrir . Le message Hex file successfully imported saffiche.
GCBASIC
page :6
07/02/2009
Cliquer sur longlet Write Si le contact nest pas bon, le programmateur signale une erreur qui est parfois difficile rcuprer (voir ). Si le programme est modifi, recompil, il suffit de recliquer sur Write. Le logiciel signale par un Reloading file quil a vu que le code a chang et il reprend le nouveau fichier traduit.
Pour lancer lapplication cocher On dans la fentre VDD PicKit2 Situe droite, en dessous du sigle MICROCHIP, le processeur est aliment et tourne . Autres programmes PROGRAMME 16f630led.bas 'NOM DU PROGRAMME 16F630led.bas 'BUT: 'faire clignoter la led raccorde aux bornes RA4 et RA5 'COMMENTAIRES: 'MODIFICATIONS: 'DATE DE CREATION: 'programme dit le: 29.11.2008 'programme test le: 01.12.2008 'MARERIEL UTILISE: '1 circuit Bimo 'Pickit2 'PROCESSEUR ET CONFIGURATION: #chip 16F630, 4 'frquence du Pic 4 MHz #config intrc_osc,cp_off, cpd_off, boden_off, pwrte_off , wdt_off 'DECLARATION VARAIBLES PROGRAMME: 'DECLARATION VARIABLES PORTA: 'DECLARATION VARIABLES PORTC: 'DECLARATION CONSTANTES PROGRAMME: 'le GCBASIC ne supporte que les valeurs en dcimal pour les variables GCBASIC page :7 07/02/2009
'32 en dcimal = bit5 en binaire bit5 du portA = 1 '16 en dcimal = bit4 en binaire bit4 du portA = 1 '0 = tous les bits du portA = 0
'PROGRAMME PRINCIPAL Init: TRISA = b'00000000' 'PortA tout en sortie Set PortA = 0 'on peut crire PortC = 0 ou Set PortC =0 main: PortA = Rouge 'sortie RA4 active Wait 500 ms 'tempo 500 msec. PORTA = Eteint 'toutes les sorties du PortA dsactives Wait 500 ms 'temps 500 msec. PortA = Vert 'sortie RA5 active Wait 500 ms 'temps 500 msec PORTA = Eteint 'toutes les sorties du PortA dsactives Wait 500 ms 'temps 500 msec goto main 'saut l'tiquette main. END Ides de programmes Pour faire tourner les moteur en tout-ou-rien, il suffit de dclarer comme pour les LEDs #Define Avance PortA = 2100010 etc (pas vrifi, je vois avec Maurice) Pour faire tourner les moteurs vitesse variable, il faut une routine PWM par interruption. Maurice a test les interruptions, et cela doit tre faisable facilement. Lutilisateur aura deux paramtres manipuler pour avoir toutes les vitesses sur chaque moteur. Idem pour les sons. Annexes Le schma du Bimo, redessin par Maurice Wulliens
GCBASIC
page :8
07/02/2009
Interruptions
GCbasic permet les interruptions. Toutes les contraintes nont pas encore t identifies, et le programme ci-dessous a ncessit quelques ttonnements. Pour tester avec un 630, on modifiera la configuration : Un fil entre la masse et la broche RB0 remplacera le poussoir si ncessaire. On remarque dans le programme que les pull-up sur RB sont initialises, il ny a pas besoin de rajouter une rsistance pour garantir ltat 1 si lentre RB0 est en lair. #chip 16F630, 4 'frquence du Pic 4 MHz #config intrc_osc,cp_off, cpd_off, boden_off, pwrte_off , wdt_off Pour copier le programme suivant dans une fentre vide de GCbide, il faut ventuellement passer par on programme bloc-note pour liminer les complcations de Word. -------------------- programme f870intB0_2.gcb --------------'f870intB0_2 'S'excute sur 870 .. 877 Autres processeurs: adapter la configuration 'BUT 'comportement de l'instruction interrupt 'lors d'une instruction Interrupt par RB0 programme en BASIC 'le choix de l'interruption sur le flan montant ou descendant de l'entre RB0 'dpend de la slection du bit6 du registre OPTION_REG 'la fonction est d'allumer et d'teindre les leds RB1- RB7 du PortB ' une frquence dtermine par une sous-routine Delai 'la squence d'interrupt est commande par un fil reli au GND pour donner l'impulsion ' RB0, elle est dfinie dans une sous-routine Interrupt. 'cette squence allume un motif altern sur les leds RB1- RB7 'du PortB pdt 2 secondes 'IMPORTANT 'ne pas utiliser l'instruction WAIT, car l'interrupt ne retourne pas ' l'adresse suivante du programme. 'il faut remplacer l'instruction WAIT par une boucle For i = 0 to un nbre x 'programme dit le: 05.02.2009 'programme test le: 05.02.2009 'dernire modif. le: 08.02.2009 ' MATERIEL UTILISE 'PicKit 2 '1 carte M2840 16F870 '1 cartes LB8 affichage 'carte WDPicDev1_4 '1 boutons-poussoir #config xt_osc, wdt_off, pwrte_off, boden_off, lvp_off, cpd_off, wrt_enable_on #chip 16F877, 4 'DECLARATION VARIABLES PROGRAMME dim allume as byte GCBASIC page :9 07/02/2009
dim eteint as byte dim i as word dim l as word 'DECLARATION CONSTANTES PROGRAMME #define Bint PortB.0 'activ = low 'PROGRAMME PRINCIPAL Init: TRISA = b'00000' 'tout le port en sorties TRISB = b'00000001' 'RB0 en entre, le reste en sortie PortA = TRISA PortB = TRISB allume = b'00000000' eteint = b'11111111' motif = b'10101010' OPTION_REG = b'0100000' 'slection flan montant interrupt RB0 'initialise les pullups du PortB INTCON = b'11011000' 'paramtres interrupt l = 20000 'dure du dlai main: 'IntOff PortB = allume delai PortB = eteint delai goto main END sub delai for i = 0 to l next i end sub sub Interrupt if INTE = 1 then IntRB0 end sub sub IntRB0 PortB = Motif wait 2 s set INTF off end sub
'INTCON bit1, doit tre remis zro 'pour autoriser un nouvel interrupt
GCBASIC
page :10
07/02/2009