Home
PROGRAMMATION en langage BASIC
Contents
1. Ce tableau donne les cl s d acc s des EEPROM les plus courantes Mod le Taille m moire Contr le Largeur de bus 24LC01B 128 octets 01010xxx 8 bits 24LC02B 256 octets 01010xxx 8 bits 24LC04B 512 octets 01010xxb 8bits 24LC08B 1k octets 01010xbb 8bits 24LC16B 2K octets 01010bbb 8bits 24LC32B 4K octets 11010ddd 16 bits 24LC65 8K octets 11010ddd 16 bits bbb bits de s lection du ou des blocs internes pages ddd bits servant s lectionner le boitier xxx sans importance 220 Sch ma type de connexion d un PIC 16F84 avec une EEPROM 24LC01B EEPROM 24LCD1B PIC 16F84 Les lignes Data et Clock sont affect es respectivement au Port A0 et au Port A1 Ceci dans le but vident de laisser enti rement disponibles les 8 bits du Port B La ligne Data est bidirectionnelle Elle doit comporter une r sistance de Pull up de 4 7 221 12Cout Envoie des donn es sur un bus I2C SYNTAXE I2Cout Contr le Adresse Valeur Valeur crire 00 FF Adresse laquelle on veut crire Octet de contr le compos de la cl d acc s sp cifique au circuit I2C telle q elle a t d finie par le fabricant sur 4 bits 1 bit celui de plus fort poids d signant la valeur du bus des adresses 0 8 bits 1 16 bits 3 bits ceux de plus faible poids servant la s lection des blocs L criture d un octet dans
2. 0 Then ou IF BO Bit0 1 Then etc 196 Les constantes Les constantes num riques peuvent tre exprim es en trois bases d cimale binaire hexad cimale Pour dire au compilateur en quelle base on veut travailler on place un pr fixe devant le nombre En crivant un nombre sans pr fixe le compilateur traite ce nombre en d cimal Par exemple 100 sans pr fixe est interpr t comme 100 base d cimale En tapant 100 le compilateur interpr te le nombre 100 en binaire 00000100 c est dire 4 en d cimal Enfin en tapant 100 le compilateur interpr te le nombre 100 en hexad cimal 0001 0000 0000 c est dire 256 en d cimal 197 Les labels Les labels tiquettes doivent obligatoirement commencer la premi re colonne et doivent se terminer par deux points Elles servent g n ralement identifier des sous programmes pour que le PIC l issue d un test par exemple fasse une certaine chose si la condition est vraie ou une autre chose si la condition est fausse Ou devant la position d un interrupteur pour qu il fasse une certaine chose si l interrupteur est ouvert ou une certaine autre chose si l interrupteur est ferm etc Les tiquettes rep rent des adresses pour que le PIC y acc de quand on y fait r f rence 198 Les commentaires En PicBASIC les commentaires doivent obligatoirement tre pr c d s par une apostrophe Att
3. 246 RETURN C est l instruction qui termine tout sous programme Un sous programme commence par GOSUB et doit obligatoirement se terminer par RETURN Une fois le sous programme termin cette instruction provoque le retour au programme principal l instruction se trouvant just apr s le GOSUB ayant appel le sous programme 247 REVERSE Inverse le sens de fonctionnement de la patte sp cifi e 0 7 du Port B RB Si elle tait une entr e apr s cette instruction elle devient une sortie et inversement si elle tait une sortie elle devient une entr e SYNTAXE REVERSE Pin Num ro 0 7 de la pin du Port B RB dont on veut inverser le sens EXEMPLE OUTPUT 7 REVERSE 7 Met d abord RB7 en sortie puis inverse le sens et met RB7 en entr e NB Seul le num ro 0 7 de la pin du Port B RB doit tre not REVERSE 0 REVERSE 1 REVERSE 7 et non REVERSE Pin0 REVERSE Pinl 248 SERin Serial Input Cette instruction permet de recevoir des donn es sous forme s rie asynchrone par mots de 8 bits sans parit avec un seul bit de STOP La r ception doit avoir lieu en utilisant l une des pins 0 7 du Port B RB SYNTAXE SERIN Pin Mode Qualificateur Variable v Nom de la variable BO B51 dans laquelle on veut stocker les donn es re ues A noter entre parenth ses Ca peut tre un seul ou plusieurs Si plusieurs une virgule doit le
4. HIGH 2 PAUSE 10 etc jusqu 7 LOW 0 LOW 0 LOW 0 LOW 0 LOW 0 LOW 1 LOW 1 LOW 1 LOW 1 LOW 1 LOW 2 PAU PAU PAU PAUSE 500 PAU PAU PAU PAU PAU PAU PAU Le travail que doivent faire 212 chacune des valeurs NEXT Blg4 F de autant de fois NEXT B0 lt que chacune des valeurs de 0 SE 500 SE 500 SE 500 SE 500 SE 500 SE 500 SE 500 SE 500 SE 500 SE 500 On veut allumer toutes les LED du Port B Ecrivons le programme suivant LOOP FORB0 0TO7 END HIGH B0 NEXT BO 213 Si on ex cute ce m me programme sans l instruction NEXT B0 on constate que seule la LED reli e RBO s allume et pas les autres Ceci parce que l instruction NEXT incr mente la variable BO et referme la boucle en fournissant chaque tour une nouvelle valeur 0 1 2 7 correspondant diff rents RB et par l des LED diff rentes 214 GOSUB C est l instruction par laquelle on appelle un sous programme Le sous programme appel doit imp rativement se terminer par l instruction RETURN L instruction RETURN plac e la fin du sous programme fait revenir le programme principal l instruction se trouvant juste apr s GOSUB Ne pas confondre GOSUB avec GOTO qui renvoie elle aussi l ex cution du programme ailleurs mais cette fois sans retour SYNTAXE GOSUB Label RETURN NB Des paires d i
5. PIC 2N 1711 256 TOGLE Cette instruction inverse l tat logique de l un des bits 0 7 du Port B RB SYNTAXE TOGLE Pin Num ro de la pin 0 7 du Port B dont on veut inverser l tat EXEMPLE LOW 0 TOGLE 0 Dans un premier temps on met R B0 l tat bas puis on inverse l tat de RB0 RB0 passe de l tat bas l tat haut 257 TRISA Configure le Port A en sortie ou en entr e Exemples 1 SYMBOL PORTA 5 SYMBOL TRISA 85 POKE TRISA 0 On configure le Port A en sortie 2 SYMBOL PORTA 5 SYMBOL TRISA 85 POKE TRISA 255 On configure le Port A en entr e 258 WRITE C est l instruction avec laquelle on crit dans la m moire EEPROM de donn es Data Memory SYNTAXE WRITE Adresse Donn e Donn e crire Adresse laquelle on veut crire 00 EXEMPLE WRITE 6 B0 Ecrit l adresse 6 la donn e se trouvant dans la variable BO NB Les donn es entrent dans la m moire EEPROM une seule fois au moment de la programmation du PIC et non pas chaque fois qu on ex cute le programme 259 Exemples de programmes crits en langage PicBASIC Voici 17 exemples de programmes crits en MEL PicBASIC qu ils ne faut pas juger au nombre d instructions car ainsi que je d j dit les programmes crits PicBASIC sont souvent courts cela tant d la puissance de ses instructions Ce ne sont que des bases Ils illustrent le m c
6. Les variables correspondent des emplacements m moire utilis s pour stocker temporairement des donn es Le MEL PicBASIC propose d embl e des variables pr tes l emploi Selon que les donn es stocker soient de petites donn es et qu elles tiennent en un seul octet byte 8 bits ou qu elles soient de grandes donn es et que pour les accueillir il faille un mot word 16 bits MEL PicBASIC propose deux types de variables a les variables de type B byte utilis es pour stocker des variables 8 bits et b les variables de type W word utilis es pour stocker des variables 16 bits Pour le microcontr leur 16F84 PicBASIC a pr d fini 52 variables de type B de B0 B51 et 26 variables de type W de W0 W25 Les variables de type W sont constitu es de la juxtaposition de deux variables de type B Ainsi la variable WO est constitu e de la juxtaposition de la variable BO et de la variable B1 La variable W1 est constitu e de la juxtaposition de la variable B2 et de variable B3 et ainsi de suite Le compilateur ne peut utiliser que les registres du microcontr leur pour stocker les variables du programme Ce qui veut dire que le nombre des variables mises disposition d pend du mod le de PIC utilis 191 Les variables de bit Il faut savoir qu il existe aussi des variables de bit pr d finies Ce sont les variables BO et B1 qui les accueillent Dans ce cas les variables de bit qu elles loge
7. SYNTAXE PAUSE P riode Dur e exprim e millisecondes Pour un 16F84 cadenc 4 MHz l unit de temps est approximativement 1 milliseconde EXEMPLE PAUSE 500 Engendre un temporisation de 500 ms 1 2 seconde Contrairement l instruction NAP qui fournit des d lais pr d finis et approximatifs car issus du Watchdog Timer l instruction PAUSE fournit des d lais la demande et plus pr cis bien qu encore pas tout fait exacts sa pr cision d pendant entre autre de celle du quartz et de l tat de l alimentation 231 PEEK Cette instruction lit le contenu d une adresse et le stocke dans une variable SYNTAXE PEEK Adresse Variable Nom de la variable dans laquelle on veut stocker le r sultat de la lecture Adresse dont on veut lire le contenu EXEMPLE PEEK PORTA DO On lit le contenu du Port A et on le m morise dans la variable Autre EXEMPLE Symbol PORTA 5 Symbol TRISA 85 POKE TRISA 255 PEEK PORTA Ensuite on peut continuer comme ceci IF BITO 0 THEN IF BITO 1 THEN On lit le Port A par l interm diaire de la variable BO Ensuite on peut tester et agir en fonction de l tat de chaque bit 232 PINS Cette instruction met en sortie sur le Port B l octet sp cifi apr s le signe SYNTAXE PINS X X X X X X X X Octet sp cifier EXEMPLES 1 PINS 2B Met la valeur hexad cimale 2B 00101100 sur le P
8. BONJOUR SERout 0 N2400 B1 NEXT B0 On donne successivement 0 les valeurs de 0 7 pour r cup rer dans la variable B1 l une apr s l autre toutes les lettres de BONJOUR lesquelles sortent ensuite en s rie sur RB1 227 LOW Cette instruction met l tat logique bas 0 une ligne 0 7 du Port B RB SYNTAXE LOW Pin v Num ro de la pin 0 7 du Port B qu on veut mettre l tat bas EXEMPLE LOW 3 Met l tat logique bas RB3 NB Seul le num ro de la pin de RB doit tre sp cifi Exemple 4 et non pas Pin 4 Une instruction mal r dig e conduirait une ex cution erron e du programme 228 NAP Cette instruction met le microcontr leur en veille pendant le temps d fini par P riode SYNTAXE NAP P riode N 0 7 Ces dur es sont approximatives car d riv es du Watchdog Timer pilot par son horloge R C interne et donc pouvant diff rer d un microcontr leur l autre 229 OUTPUT Cette instruction place en sortie l une des 8 pins du Port B RB SYNTAXE OUTPUT Pin Num ro de la pin du Port B RB qu on veut placer en sortie EXEMPLE OUTPUT 3 Met RB3 en sortie NB Seul le num ro de la pin de RB doit tre sp cifi Exemple 3 et non pas Pin 3 Une instruction mal r dig e conduirait une ex cution erron e du programme 230 PAUSE Instruction introduisant une temporisation
9. Si par contre la recherche est infructueuse aucune action n a lieu et Index reste inchang Par exemple si la liste des Constantes est 3 12 14 27 9 et la valeur de Recherche est 14 Index prendra la valeur 2 puisque 14 est la troisi me constante de la liste le d compte commence 0 EXEMPLE SERin 1 N2400 0 LOOKDOWN B0 0123456789ABCDEF SERout 0 N2400 B1 Lit les caract res arrivant dans une r ception s rie sur pin 1 du Port B les stocke un la fois dans la variable BO et fournit la position de chacun d eux dans la variable B1 mise ensuite en sortie sur RBO pin 0 du Port B 226 LOOKup Cette instruction permet de r cup rer une valeur partir d une table de constantes On donne une valeur et on demande l instruction de sauvegarder dans une Variable la valeur correspondant son rang dans la liste des variables Si Index vaut 0 Variable assume la valeur de la premi re constante Si Index vaut 1 Variable assume la valeur de la deuxi me constante et ainsi de suite Si ndex est un nombre sup rieur au nombre des constantes il ne se passe rien et Variable reste inchang e SYNTAXE LOOKUP ndex Constante Constante Constante mg Nom de la variable dans laquelle on veut m moriser la variable recherch e Constantes rang es par rang Rang correspondant la valeur qu on veut r cup rer EXEMPLE FOR B0 0 to 6 LOOKUP B0
10. assume tour tour Variable chaque fois qu on tourne l axe du potentiom tre renseigne suffisamment sur la position de l axe et par l m me sur la valeur prise par la r sistance si on connait sa valeur de but e EXEMPLE POT 7 255 BO SERout 0 N2400 B0 Lit un potentiom tre reli RB7 m morise le r sultat dans la variable puis met cette valeur en sortie sur en mode s rie Le sch ma de branchement est le suivant 237 PULSin Mesure la dur e d une impulsion arrivant sur une pin du Port B RB La pin d sign e est automatiquement mise en entr e NB La dur e est exprim e par unit s de 10 us Autrement dit le r sultat de la mesure est multiplier par 10 pour avoir le nombre de microsecondes recherch SYNTAXE PULSin Pin Etat Variable Nom de la variable 16 bits donc de type W dans laquelle on veut m moriser le r sultat de la mesure Cette variable peut aller de 1 65 535 correspondant respectivement 1x 10 us 10 us 65 535 x 10 us 655 350 us soit 655 35 ms ou encore 0 65535 secondes Ooul D finit la partie du signal dont on veut lire la dur e 1 1 la partie haute 0 la partie basse 0 7 Num ro de la pin du Port B RB qui re oit le signal dont on veut mesurer la dur e Attention seul le num ro de la pin doit tre not 0 7 238 EXEMPLE PULSin 5 1 WO Mesure la dur e de la partie haute d
11. convertisseur D A tout simple 10 K FH analogique PIC 1 LF 242 La modulation par largeur d impulsions modulation d impulsions en dur e ou modulation par nombre d impulsions dans le temps est une technique qui consiste faire varier la puissance moyenne de sortie dans le temps en agissant sur le rapport cyclique temps ON temps de cycle Le temps de cycle est un tat ON plus un tat OFF Temps de cycle Temps ON Temps OFF La puissance moyenne du signal diminue ou augmente en fonction du temps Le temps de cycle est constant mais le temps ON varie sa dur e diminue ou augmente Ce type de modulation pr sente au moins trois avantages un seul bit de Port suffit commander les transitions ON OFF le signal ainsi modul r duit la dissipation de puissance perte de chaleur par exemple et peut commander une charge puissance variable Temps de cycle un temps lt ON gt un temps lt OFF y Temps ON Rapport cyclique Temps de cycle Un exercice pour vous entra ner utiliser cette instruction consiste brancher un voltm tre pour visualiser et mesurer un signal PWM en y associant une LED servant dans une certaine mesure de confirmation Le voltm tre sera un mod le analogique aiguille de pr f rence un mod le digital La tension de sortie moyenne est proportionnelle au rapport cyclique et ind pendante du temps de cycl
12. de vous en procurer ou d accepter une version quelconque de BASIC pour PIC pensant faire une bonne affaire Car vous vous habitueriez travailler avec ses instructions et si un jour vous vous rendiez compte des limites de votre BASIC et vous vouliez passer au MEL PicBASIC vous auriez de la difficult chasser de votre m moire les instructions de l ancien BASIC avec le risque de les m langer et fatalement d avoir corriger des erreurs Faites donc d s pr sent l effort de cet achat et je vous assure que vous ne le regretterez pas Le langage ASSEMBLEUR l architecture du 188 PIC la Page 0 la Pagel le Registre STATUS le Registre OPTION et tout le reste sera vite oubli Vous ne verrez plus que votre programme C est comme si pour pr parer un programme commandant l ouverture de la porte de votre garage a avec le langage ASSEMBLEUR vous devriez crire approchez vous de la porte du garage mettez la main gauche dans la poche gauche de votre veste prenez la cl de la porte du garage avez vous la cl en main non mettez alors la main droite dans la poche droite de votre veste prenez la cl de la porte du garage avez vous la cl en main oui sortez la main droite de la poche droite de votre veste introduisez la cl dans la serrure de la porte du garage tournez la cl etc etc fin b alors qu avec le langage MEL PicBASIC il suffirait d crire approch
13. donn es entrent dans la m moire EEPROM une seule fois lors de la programmation du circuit et non pas chaque fois qu on ex cute le programme 209 END C est l instruction que l on doit obligatoirement placer la fin de tout programme Elle termine l ex cution du programme et place le microcontr leur en mode veille Pour r veiller le microcontr leur on est oblig de faire un Reset mat riel 210 FOR NEXT Cette instruction introduit une boucle en faisant ex cuter un certain nombre de fois les actions d taill es dans ce que l on appelle le corps de l instruction SYNTAXE FOR Variable D but TO Fin Pas NEXT Variable Variable prend d abord la valeur d finie D but puis successivement toutes les valeurs suivantes par incr mentation automatique jusqu atteindre la valeur d finie par Fin et chaque fois pour chaque valeur de Variable ex cute les instructions d taill es dans le corps de l instruction A chaque passage Variable s incr mente de 1 Mais on peut aussi incr menter la Variable au pas qu on veut Dans ce cas il faut le pr ciser en donnant une valeur Pas plac e entre deux parenth ses Par exemple si l on crit FOR B1 0 TO 10 2 B1 prendra successivement non pas les valeurs 0 1 2 3 4 5 6 7 8 et 9 mais 0 2 4 6 8 et 10 EXEMPLE FOR B1 1 TO 10 HIGH 0 PAUSE 200 LOW 0 PAUSE 200 NEXT BI 211 Fait clignoter 10 fois de suit
14. octet transmettre SERout 6 N2400 B1 2 Plusieurs octets transmettre SERout 6 N2400 B0 0F C3 3 Envoyer sur RB0 la valeur ASCII contenue dans la variable suivie d un saut de ligne SERout 0 N2400 4 BO 10 4 Envoi d un octet stock dans la variable B1 pr c d d une cl servant de code secret SERout 6 N2400 S E A M B B1 Octet proprement dit Caract res servant de cl caract res secrets Cette fa on de coder est particuli rement utile dans le cas de syst mes d antivol Le r cepteur sans avoir au pr alable re u le mot SESAME ne peut m moriser le mot fourni par B1 253 SLEEP Met le PIC en mode veille pendant un certain temps d fini par P riode exprim en secondes P riode est une variable de 16 bits pouvant aller de 1 65 535 plus de 18 heures avec une pr cision qui d pend du timer interne celui associ au chien de garde qui est du type R C Cette pr cision n est qu approximative et ne doit pas tre utilis e comme r f rence temporelle absolue En plus il faut savoir que la plus courte P riode ne peut tre inf rieure celle du time out maximum du chien de garde qui est de 2 3 secondes En mode SLEEP le microcontr leur passe en mode basse consommation low power Lorsque le d lai sp cifi est coul l ex cution du programme reprend avec l instruction suivante SYNTAXE SLEEP P riode
15. une EEPROM s rie prend environ 10 ms Par cons quent si on veut crire plusieurs octets en suivant il faut imp rativement respecter ce d lai sinon si une op ration d criture est encore en route l acc s la m moire est ignor Diff rent est le cas si au lieu d avoir affaire des m moires EEPROM on a affaire des composants de la famille I2C ne demandant pas un aussi long d lai entre deux critures EXEMPLE I2Cout 01010000 17 42 PAUSE 10 I2Cout 0101000 125 B3 PAUSE 10 On crit 42 l adresse 17 On laisse passer 10 ms pour que l op ration d criture s ach ve Puis on crit le contenu de la variable B3 l adresse 125 et on laisse encore passer 10 ms Les lignes DATA et CLOCK sont affect es respectivement PORTAO et PORTA1 Ceci dans le soucis de laisser enti rement disponibles les 8 bits Port B La ligne DATA est bidirectionnelle Elle doit comporter une r sistance de Pull up de 4 7 KO 222 If Then Cette instruction teste une condition Si la condition est vraie le programme saute au sous programme indiqu apr s Then Then est ici une sorte de Goto C est pourquoi apr s Then on doit imp rativement indiquer le nom du sous programme auquel le programme doit se rendre Si la condition est fausse le programme continue en s quence et analyse l instruction suivante SYNTAXE IF Comparaison THEN Label Nom du sous programme ex cuter si la condition est vraie Ce
16. une impulsion arrivant sur 5 et stocke le r sultat dans la variable 16 bits WO NB Si aucun front n est d tect ou si l impulsion dure plus longtemps que 0 65535 seconde Variable est mise 0 Si on d finit une variable de type B variable 8 bits au lieu d une variable de type W variable 16 bits seuls les 8 bits de poids faible sont m moris s 239 PULSout G n re sur une pin du Port B une impulsion de dur e calibr e exprim e par unit s de 10 us La pin d sign e est automatiquement mise en sortie Le niveau haut ou bas de l impulsion calibr e mise en sortie d pend de l tat de la pin avant l ex cution de cette instruction car lorsque cette instruction survient elle inverse l tat actuel pour marquer un d but partir duquel elle peut calculer la dur e SYNTAXE PULSout Pin P riode Dur e de l impulsion de 1 65 535 par pas de 10 us 1 correspond 1x10 us soit 10 us 2 correspond 2x10 us soit 20 us 65 535 correspond 65 535x10 us soit 0 65535 secondes 0 7 D signe le num ro de la pin du Port B RB sur laquelle on veut sortir l impulsion calibr e Attention seul le num ro 1 2 3 7 de la pin doit tre not et non pas Pin 1 Pin 2 Pin 7 EXEMPLE PULSout 4 100 Envoie sur RB4 une impulsion de 1 ms 100x10 us 240 PWM Pulse With Modulation Modulation par largeur d impulsions Exemple de largeurs d impu
17. 187 PROGRAMMATION en langage BASIC Le BASIC que nous allons utiliser est le PicBASIC labor par la Soci t t MICRO ENGINEERING Labs repr sent e en France par SELECTRONIC Lille Le COMPILATEUR PicBASIC tient sur une disquette est propos en deux versions la version standard et la version professionnelle Tous les exemples que je fournis ont t r alis s avec la version standard qui permet de r aliser n importe quel programme sans limitations Ce que l on trouve en plus dans la version Pro c est un plus grand confort de travail possibilit d ouvrir plusieurs fen tres en m me temps num rotation des lignes du fichier source etc La disquette est accompagn e d un manuel d utilisation en anglais et d une traduction en fran ais Ce logiciel vendu par SELECTRONIC Lille au moment de la r daction de ces pages co te 129 50 prix au 16 09 2002 Si vous voulez mon conseil n h sitez pas vous le procurer fera de vous des programmeurs enthousiastes car programmer avec le PicBASIC de MICRO ENGINEERING Labs MEL est extr mement facile Il n y a rien de comparable entre la programmation en langage ASSEMBLEUR et la programmation en langage MEL PicBASIC Bien qu il existe d autres BASIC pour les microcontr leurs PIC propos s par d autres Soci t s celui de MEL est de loin le meilleur car extr mement puissant et tr s facile prendre en main Alors un conseil ne c dez pas la tentation
18. PAUSE 50 NEXT BI NEXT B0 GOTO LOOP 269 Programme 8 Faire clignoter en s quence 5 fois chacune l une apr s l autre et une la fois les 8 LED du Port B en commen ant par la LED associ e RB1 jusqu celle associ e RB7 Puis recommencer LOOP FOR B0 1 5 lt FOR 0 TO 7 gt HIGH PAUSE 100 LOW PAUSE 500 NEXT Bl NEXT GOTO LOOP END Ce programme fait clignoter toutes les LED du Port B 0 7 cinq fois l une apr s l autre un intervalle de demi seconde cr ant l illusion d une LED qui se d cale en clignotant 270 Programme 9 Allumer les 8 LED du Port B en s quence binaire DIRS 255 LOOP FOR 0 TO 255 PINS Bl PAUSE 200 NEXT Bl GOTO LOOP Dans ce programme DIRS 255 d finit les 8 lignes du Port B comme sorties Le comptage se fait de 0 255 d cimal on pourrait crire FOR 0 TO 9611111111 ou aussi FOR 0 TO FF chaque incr ment de la valeur assum e par la variable B1 de 0 255 en d cimal l instructions PINS visualise la valeur courante de B1 L instruction PAUSE 200 maintient cette visualisation active pendant 200 ms 271 Programme 10 G n rer sur RB3 un signal modul en largeur d impulsions PWM sous le contr le de 2 interrupteurs l un plac sur faisant augmenter la luminosit de la LED lorsqu il est ferm l autre plac sur RAI faisant diminuer l
19. a luminosit de la LED lorsqu il est ferm NB Un transistor peut tre branch sur RB3 pour commander une charge plus importante ou un triac pour commander une lampe secteur SYMBOL PORTA 5 SYMBOL TRISA 85 POKE TRISA 255 127 LOOP PEEK PORTA 0 PWM 3 B1 10 IF Bit 0 1 THEN INC IF Bit 1 1 THEN DEC GOTO LOOP INC IF B1 gt 250 THEN LOOP B1 B1 5 GOTO LOOP DEC IF B1 lt 5 THEN LOOP B1 B1 5 GOTO LOOP END Les trois premi res lignes sont des initialisations On y dit que PORTA est l adresse 5 TRISA est l adresse 85 et qu on veut tous les bits du Port A en entr e 127 donne la LED une luminosit initiale moyenne 127 est la moiti entre 1 et 256 PEEK PORTA 0 lit l tat de RAO Puis on d finit les param tres de la PWM avec un coefficient changeant de 5 par coup sur 10 cycles et si RAO est 1 on incr mente la variable en appelant le sous programme INC tandis que si RAI est 1 on d cr mente la variable B1 en appelant le sous programme DEC 272 Programme 11 R aliser une syr ne 2 tons LOOP SOUND 7 10 100 50 100 GOTO LOOP END Ce programme g n re sur RB7 un son de hauteur 10 pendant 100 ms suivi d un deuxi me de hauteur 50 pendant 100 ms Puis on recommence 273 Programme 12 G n rer une m lodie r p titive 3 notes LOOP SOUND 7 10 100 60 100 120 100 GOTO LOOP END Ce programme g n re sur RB7 un prem
20. anisme de la programmation en MEL PicBASIC je rappelle que MEL est l acronime de MICRO ENGINERING LABS la Soci t qui a d velopp ce BASIC pour PIC Je vous encourage vous procurer un Editer MEL PicBASIC et faire comme moi Vous verrez que d velopper avec ce logiciel devient un jeu d enfants Bonne programmation 260 Programme 1 Faire clignoter une LED reli e RB0 pin 0 du Port B LOOP HIGH 0 PAUSE 1000 LOW 0 PAUSE 1000 LOOP END La LED s allume pendant 1 seconde 1000 ms puis s teint pendant 1 seconde Puis le cycle recommence ind finiment Pour que la LED clignote plus vite il faut ajuster la dur e de PAUSE Exemple LOOP HIGH 0 PAUSE 100 LOW 0 PAUSE 100 GOTO LOOP END Dans ce cas la LED s allume pendant 100 ms puis s teint pendant 100 ms Puis le cycle recommence ind finiment 261 Programme 2 Faire clignoter une LED rel e RBS bit 5 du Port B si Pinterrupteur reli bit 0 du Port A est l tat haut LOOP IF PIN 0 1 THEN LED GOTO LOOP LED HIGH 5 PAUSE 100 LOW 5 PAUSE 100 GOTO LOOP END Lire Faire clignoter la LED sur RB5 PAUSE tant ici positionn e 100 la LED clignote plut t rapidement 262 Pour faire clignoter la LED moins rapidement il suffit de modifier la valeur de PAUSE LOOP IF PIN 0 1 THEN LED GOTO LOOP LED HIGH 5 PAUSE 1000 LOW 5 PAUSE 1000 GOTO LOOP END 1000 ms 1 seconde Ici la LED
21. auto r p tition tester si l interrupteur ferme vers la masse ou vers le faire un GOTO un sous programme selon que l interrupteur soit ouvert ou ferm SYNTAXE BUTTON Pin Down Delay Rate Var Action Label Nom du sous programme auquel il faut sauter Etat auquel l interrupteur doit se trouver 0 si ouvert 1 si ferm pour que le saut ait lieu Nom de la variable B0 B51 servant au d comptage des auto r p titions Nombre de fois 0 255 qu on veut faire tourner l auto r p tition pour lire l tat de l interrupteur Nombre de cycles 0 255 qu on veut laisser passer partir du moment o l interrupteur a t actionn avant de d clencher une proc dure d auto r p tition Si Delay vaut 0 les fonctions anti rebonds et r p tition automatique n ont pas lieu Si Delay vaut 255 seule la fonction anti rebonds a lieu pas celle d auto r p tition Etat de l interrupteur au moment o il est appuy Num ro de la pin du Port B RB sur laquelle se trouve l interrupteur 0 7 204 EXEMPLE BUTTON 2 0 100 10 B0 0 CLIGNOTE Lit l tat de l interrupteur plac sur RB2 en supprimant les rebonds des contacts et si l interrupteur est ouvert saute au sous programme appel CLIGNOTE CALL 205 Appelle un sous programme crit en langage ASSEMBLEUR C est une instruction qui assure une sorte de passerelle gr ce laquelle on peut incorporer des instru
22. clignote lentement On y remarque deux labels LOOP et LED Chacune renvoit un sous programme Les noms des labels sont suivis du signe deux points LOOP LED Dans le premier sous programme on dit Si la pin 0 du Port A est l tat 1 cesse d ex cuter les instructions en ligne et saute au sous programme LED sinon ligne suivante GOTO LOOP surveille l tat logique de cette pin Si elle est l tat 0 continue surveiller Dans le deuxi me sous programme on dit Allume la pin 0 du Port B pendant 1 seconde puis teins la pendant 1 seconde Puis recommence la scrutation de l tat de la Pin 0 du Port A Les pins auxquelles le langage MEL PicBASIC fait tacitement r f rence sont celle du Port B HIGH 5 signifie met l tat haut la pin 5 du Port B HIGH mets l tat haut 5 la pin 5 du Port B 263 Programme 3 Faire clignoter une LED reli e RBS pin 5 du Port B si les interrupteurs reli s RA0 et RA1 sont ferm s LOOP IF Pin 0 1 AND Pin 1 1 THEN LED GOTO LOOP LED HIGH 5 PAUSE 100 LOW 5 PAUSE 100 GOTO LOOP END Si la pin 0 RAO et la pin 1 RAT du Port A sont 1 on ex cute le sous programme LED sinon on continue surveiller l tat de RAO et de RAI Lorsque les conditions sont remplies on allume la LED reli e RB5 pin 5 du Port B pendant 100 ms puis on l teint pendant 100 ms Puis on revient au d but pour voir si les deux interrupteurs sont ferm
23. configurer le Port A en sortie il faut faire de m me premi rement s adresser au Registre du Port A situ l adresse 5 Puis d finir la direction de ce Port en s adressant au Registre TRISA situ l adresse 85 Les bits mis 0 deviennent des entr es Tandis que les bits mis 1 deviennent des sorties Pour configurer tout le Port A en sortie il faut donc crire Symbol PORTA 5 Symbol TRISA 85 POKE TRISA 0 0 00000000 Tous bits du Port A en sortie 194 Port B Pour configurer le Port B on utilise l instruction DIRS X X X X X X XX DIRS suivi du signe gal et apr s le signe gal des 0 et des 1 formant de configuration conform ment la fa on dont on veut configurer le Port 0 entr e 1 sortie Exemples DIRS 11111111 Tous bits du Port B configur s en ou DIRS 255 sortie DIRS 00000000 Tous bits du Port B configur s en ou DIRS 0 entr e DIRS 00001111 Bits 0 3 configur s en sortie et ou DIRS 15 bits 4 7 configur s en entr e etc tous les cas de figure sont permis 195 Lecture des Ports Pour lire l tat d un Port on utilise l instruction PEEK Comme ceci PORTA BO qui signifie le contenu du Port et le stocker dans la variable BO En fait cette variable peut tre l une quelconque des variables pr d finies pour le 16F84 BO B51 Ensuite on peut affiner par IF
24. ctions crites en PicBASIC des instructions crites en langage ASSEMBLEUR SYNTAXE CALL Label EXEMPLE CALL DELAI DELAI DECFSZ GOTO MOVLW MOVWF DECFSZ GOTO MOVLW MOVWF MOVLW MOVWF RETURN 1 DELAI 255 COMPTI COMPT2 1 DELAI 255 COMPTI 255 COMPT2 206 DEBUG Sert lors de la mise au point d un programme La mise au point d un programme est une phase d licate Le programme est crit mais des erreurs de syntaxe ou de compilation peuvent Le programme ne se d roule pas correctement Il faut alors le d boguer Pour cela il existe diff rentes techniques L une d elles consiste placer une instruction DEBUG dans le programme pour provoquer l affichage de valeurs permettant de d limiter des tapes dans le d roulement du programme et localiser l erreur L instruction DEBUG se comporte comme une sorte de point d arr t dynamique Elle ne peut tre utilis e que pendant la phase du d veloppement et ne peut pas figurer dans un programme mis au point Dans tous les cas il faut retirer cette instruction d aide la mise au point lors de la fabrication de la version finale du programme De toutes fa ons si l instruction DEBUG restait dans le programme elle serait ignor e une fois que celui ci ait t correctement compil Au fur et mesure que vous r alisez votre programme ayez toujours la mise au point en t te Si vous modifiez temporairement des i
25. cture Adresse m moire dont on veut lire le contenu Octet compos de la cl d acc s sp cifique au circuit I2C utilis telle qu elle a t d finie par son fabricant sur 4 bits 1 bit celui de plus fort poids d signant la largeur du bus d adresses 0 8 bits 1 16 bits 3 bits ceux de plus faible poids servant la s lection des blocs internes pages de 256 octets Cette instruction fait plusieurs choses de suite sort la cl permettant l acc s au circuit DC va l adresse voulue lit son contenu le stocke dans la variable figurant en argument EXEMPLE I2Cin 01010000 12 BO Lit le contenu de l adresse 12 et le stocke dans la variable L octet Contr le 01010000 ou 50 se lit comme le bit de plus fort poids 0 sp cifie un bus d adresse de 8 bits les quatre bits suivants 1010 correspondent la cl d acc s d finie par le fabricant les trois bits de plus faible poids non utilis s dans ce type de m moire sont mis z ro 000 219 Cette instruction permet notamment d ajouter au PIC une m moire EEPROM s rie au standard DC 24LC01B 24LC02B 24LC04B 24LC08B 24LC16B 24LC32B 24LC65 toutes les 24 C0x en g n ral et de disposer ainsi d une plus grande taille m moire Bien entendu ce n est pas seulement des EEPROM que le PIC peut tre associ mais n importe quel circuit du standard I2C capteur de temp rature convertisseur A D etc
26. de d charge du condensateur associ la r sistance avec laquelle il forme une cellule R C SYNTAXE POT Pin Echelle Variable Nom de la variable dans laquelle on veut m moriser le r sultat de la mesure Si Echelle est positionn sa valeur optimale Variable prend une valeur proche de O lorsque le potentiom tre est tourn sur le minimum et une valeur proche de 255 lorsque le potentiom tre est tourn sur le maximum 1 255 est un facteur de conversion qui d pend des caract ristiques de la cellule R C Sa valeur doit tre d termin e exp rimentalement Pour de grandes constantes de temps R C la valeur d Echelle doit tre petite le minimum est 1 Au contraire pour de petites constantes de temps la valeur donner Echelle doit tre grande 255 0 7 D signe la pin du Port B RB sur laquelle on veut lire la valeur de la r sistance Pour d terminer au plus juste la valeur qu il convient de donner Echelle la m thode consiste la faire valuer par le PIC lui m me Pour cela r glez d abord la valeur de la r sistance son maximum et lisez la avec Echelle provisoirement positionn e 255 Cette valeur stock e dans Variable valu e par le PIC est celle que vous pourriez alors donner Echelle valeur optimale Evidemment pas question de s attendre lire une valeur pr cise de R sistance exprim e en Ohms 236 Ici en d finitive on lit des paliers Mais la valeur qu
27. e Avec un temps de cycle maximum vous risquez de voir l aiguille du voltm tre se d placer tr s l g rement 243 Un autre exercice pourrait consister faire varier le temps ON et le temps OFF en fonction des donn es d un tableau Avec ces prescriptions par exemple Rapport Temps Temps Temps cyclique ON OFF de cycle 20 20 30 40 60 90 244 RANDOM G n re un nombre al atoire sur 16 bits et le stocke dans une variable de type W variable de 16 bits compos e de la juxtapposition de deux variables de 8 bits Exemple la variable WO est compos e de la juxtapposition des variables BO et B1 SYNTAXE RANDOM Variable Nom d un variable de 16 bits W0 W25 dans laquelle le programme va stocker le nombre al atoire EXEMPLE RANDOM W0 G n re un nombre al atoire de 16 bits et le stocke dans la wariable WO NB Le nombre al atoire pouvant tre g n r par cette instruction peut aller de 1 65 535 Le nombre 0 n est pas g n r 245 READ Avec cette instruction on lit une donn e dans la m moire EEPROM Le r sutlat de la lecture est m moris dans la variable sp cifi e SYNTAXE READ Adresse Variable Nom de la variable BO B51 dans laquelle on veut stocker le r sultat de la lecture Adresse EEPROM dont on veut lire le contenu Rappel Pour crire dans cette m moire on utilise l instruction EEPROM
28. e allume pendant 200 millisecondes puis teint pendant 200 millisecondes la LED connect e sur RB0 Pin 0 du Port B NB Des boucles FOR NEXT peuvent tre imbriqu es dans d autres boucles FOR NEXT jusqu un maximum de 16 imbriquements EXEMPLE LOOP FOR 1 TO 5 FOR 1 TO 7 HIGH BI PAUSE 10 LOW BI PAUSE 500 NEXT BI NEXT B0 GOTO LOOP Pour chacune des valeurs pouvant tre prises par c est dire 1 7 C est la boucle interne faire le travail d fini par la boucle interne autant de fois que les valeurs pouvant tre prises par BO boucle externe Dans le cas de cet exemple la boucle externe tourne 5 fois avant que Bl passe d une valeur la suivante Ici donc la LED reli e clignote 5 fois puis la LED reli e clignote 5 fois puis la LED reli e RB2 clignote 5 fois jusqu celle reli e RB7 Puis ca recommence Restons sur cet exemple et tudions le de plus pr s Cela en vaut la peine car les boucles FOR NEXT sont tr s utilis es quand on programme en PicBASIC LOOP L importance de NEXT est tr s grande Voyons la au moyen d un autre exemple FOR B0 1 TO 5 FOR B1 0 TO 7 HIGH Bl PAUSE 10 LOW BI PAUSE 500 GOTO LOOP Autrement dit HIGH 0 PAUSE 10 HIGH 0 PAUSE 10 HIGH 0 PAUSE 10 HIGH 0 PAUSE 10 HIGH 0 PAUSE 10 HIGH 1 PAUSE 10 HIGH 1 PAUSE 10 HIGH 1 PAUSE 10 HIGH 1 PAUSE 10 HIGH 1 PAUSE 10
29. e la valeur d cimale correspondante Ainsi par exemple 123 fera mettre lt 1 gt puis 2 puis 3 D finit la fois la vitesse de la transmission Baud Rate la forme des donn es TTL vrai ou TTL TTL invers et la configuration de l tage de sortie Drain ouvert ou Collecteur ouvert On peut choisir parmi 16 modes possibles selon les sp cifications du tableau suivant 251 Symbole Valeur Baud Rate Mode T2400 0 2400 T1200 1 1200 vrai T9600 2 9600 T300 3 300 N2400 4 2400 N1200 5 1200 TTL invers N9600 6 9600 N300 7 300 OT2400 8 2400 OT1200 9 1200 Drain OT9600 10 9600 ouvert OT300 11 300 ON2400 1 2400 ON1200 2 1200 Source ON9600 13 9600 ouvert ON300 14 300 Pin d signe le num ro 0 7 de la pin du Port B RB que l on veut utiliser pour sortir le signal s rie Etant donn que les circuits d interface RS232 m me les plus conomiques pr sentent d excellentes caract ristiques d entr e sortie les signaux peuvent tre g r s par les PIC sans besoin d un convertisseur de niveux Les signaux pr sent s en format TTL invers doivent tre utilis s moyennant une r sistance de limitation de courant Fin du PIC R5232 Rx RS232 Masse a 252 Sur fiche DB9 Sur fiche BD25 RS232 Rx Pin 2 Pin 3 RS233 Masse Pin 5 Pin 7 EXEMPLES 1 Un seul
30. ention la directive REM n existe pas en PicBASIC Tout ce qui est crit apr s une apostrophe est ignor par le compilateur Les commentaires servent garder une trace de ce que fait le programme L criture d un programme sans commentaires n est pas envisager car m me si la compr hension d un programme peut para tre vidente au moment de sa cr ation elle peut s av rer difficile quelque temps apr s ou sa lecture impossible pour ceux qui devraient en assurer la maintenance Ne soyez pas avares de commentaires Mettez les m me quand les seules instructions du programme pourraient donner une impression d vidence 199 Le set INSTRUCTIONS du MEL PicBASIC Le MEL PicBASIC est constitu de 40 instructions Ne confondez pas je vous prie les 40 instructions de ce langage avec les 37 instructions du langage ASSEMBLEUR cela n a strictement rien voir Examinons ces 40 instructions une par une en les pr sentant par ordre alphab tique pour que vous les retrouviez plus facilement Je signale qu elles peuvent tre crites comme on veut en majuscules en minuscules et m me en m langeant majuscules et minuscules Par exemple l instruction GOTO peut s crire GOTO Goto goto GoTO go TO gOto etc 200 Classement par ordre alphab tique BRANCH BUTTON CALL DEBUG DIRS EEPROM END FOR NEXT GOSUB GOTO HIGH DCin 12Cout IF THEN INPUT LET LOOKdo
31. ez vous de la porte du garage prenez la cl ouvrez la porte du garage fin Ce sont les instructions du PicBASIC qui avec leur puissance comprennent ce que vous voulez faire et effectuent toutes les petites t ches interm diaires votre place sans que vous ayez besoin de les d tailler Merveilleux non Avant d examiner chaque instruction une par une il est indispensable de s arr ter sur quelques particularit s qui facilitent grandement l apprentissage du langage MEL PicBASIC 189 Symbol Avec la directive Symbol on peut associer un nom une variable ou une pin du microcontr leur Ainsi d finies telle variable ou telle pin du microcontr leur peuvent alors tre plus facilement utilis es dans l criture d un programme Par exemple Symbol LED Pin 0 Signifie associe Pin 0 c est dire RB0 le nom LED Ainsi par exemple l instruction LED 1 est plus facile lire dans le programme car on comprend qu elle allume la LED met au niveau logique haut la pin O du Port B Symbol permet de renommer un chiffre le plus souvent ou une variable Chiffres et variables qui rencontr s dans la lecture d un programme ne diraient pas grand chose deviennent plus explicites apr s avoir t rebaptis s par Symbol car il est beaucoup plus facile de retenir un nom qu une adresse le nom tant charg d une signification alors qu une adresse ne dit rien 190 Les variables de type B et W
32. ier son de hauteur 10 pendant environ 100 ms puis un deuxi me son de hauteur 60 pendant approximativement 100 ms et enfin un troisi me son de hauteur 120 pendant encore approximativement 100 ms Puis on recommence sans cesse 274 Programme 13 G n rer une m lodie en crescendo de 20 notes jou es en continuation LOOP B0 0 INC FORB0 B0 5 SOUND 7 B0 100 NEXT B0 IF B0 gt 100 THEN LOOP GOTO INC END La variable BO prend ici les 20 valeurs 5 qui renvoient des sons de diff rente hauteur en crescendo 275 Proeramme 14 Lire l tat de 5 interrupteurs plac s sur le Port A et visualiser l tat de chacun d eux sur une rang e de 5 LED reli es au Port B SYMBOL SYMBOL LOOP ZERO UN DEUX TROIS QUATRE PORTA 5 TRISA 85 POKE TRISA 255 PEEK PORTA IF 1 THEN ZERO IF Bitl 1 THEN UN IF Bit2 1 THEN DEUX IF Bit3 1 THEN TROIS IF Bit4 1 THEN QUATRE GOTO LOOP HIGH 0 GOTO LOOP HIGH 1 GOTO LOOP HIGH 2 GOTO LOOP HIGH 3 GOTO LOOP HIGH 4 GOTO LOOP END Apr s les initialisations et apr s avoir m moris le Port A dans la variable BO on teste chaque bit qui s il est 1 renvoie un sous programme sp cifique qui allume la LED correspondante 276 Programme 15 Lire l tat de 5 interrupteurs plac s sur le Port A et dire lequel d eux a t ferm moyennant l mission de bips sur un haut parleur plac sur RB7 un
33. lsions allant en augmentant ici l tat haut MARK devient de plus en plus large MARK spse 4 82 V ovi 2127 c im 7 ee d a PL e E H A A A 3 D WI Wu u E Wing vient SPACE Exemple de largeurs d impulsions allant en diminuant ici l tat haut MARK devient de plus en plus court MARK 77 T 882 m ASE e i NA NO AL NS lt EE a7 x v E 7 x wm P Rs x Sie 5 rt mn partu SPACE Cette instruction g n re sur une pin du Port B RB un train d impulsions modul es en largeur 241 La pin d sign e est automatiquement mise en sortie mais sit t le cycle termin elle est automatiquement remise en entr e SYNTAXE PWM Pin Duty Cycle Nombre d impulsions qu on veut largir ou retr cir D signe en pourcentage le cycle de travail de chaque train d impulsions peut varier de 0 255 C est le coefficient d largissement ou de retr cissement qu on veut appliquer aux impulsions Num ro de la pin du Port B RB sur laquelle on veut g n rer le train d impulsions PWM Une LED command e par un signal PWM voit sa luminosit s accro tre progressivement ou diminuer progressivement selon le mode de programmation comme si elle tait associ e un variateur produisant ainsi une sorte d effet cr pucsulaire Moyennant un r seau R C cette instruction permet de mettre en place un
34. nstructions ayez une feuille volante avec leur liste C est la meilleure fa on pour ne pas oublier de toutes les restaurer ensuite 207 DIRS D finit la direction des lignes du Port B SYNTAXE DIRS X X X X X X X X octet de configuration 0 entr e 1 sortie EXEMPLES 1 DIRS 255 255 d cimal donc 11111111 en binaire Cela peut s crire aussi DIRS 9611111111 Tous bits du Port B configur s en sortie 2 DIRS 0 Tous bits du Ports B configur s en entr e 208 EEPROM C est l instruction avec laquelle on crit dans EEPROM du PIC dans des adresses cons cutives partir de celle qu on lui indique comme tant l adresse de d part SYNTAXE EEPROM Adresse Donn e Donn e Donn e v Dans les parenth ses espac es par des virgules les donn es crire dans constantes num riques ou caract res ASCII Adresse de d part partir de laquelle on veut crire dans l EEPROM Si on ne met rien dans ce param tre l criture d marre automatiquement l adresse 0 NB Dans le uC 16F84 l tendue de l EEPROM va de 00 3F EXEMPLE EEPROM 8 2 4 8 16 32 64 128 On stocke 2 l adresse EEPROM 08 On stocke 4 l adresse EEPROM 09 On stocke 8 l adresse EEPROM 0A On stocke 16 l adresse EEPROM On stocke 32 l adresse EEPROM OC On stocke 64 l adresse OD On stocke 128 l adresse EEPROM OE NB Les
35. nstructions GOSUB RETURN peuvent tre imbriqu es Mais sans aller au del de 4 niveaux on ne peut pas imbriquer plus de 4 paires l une dans l autre L exemple qui suit illustre le fonctionnement de GOSUB et de RETURN Programme principal DEBUT FIN INSTRUCTION 1 INSTRUCTION 2 INSTRUCTION 3 INSTRUCTION 37 INSTRUCTION 38 GOSUB TEMPO INSTRUCTION 40 INSTRUCTION 41 215 Sous programme TEMPO INSTRUCTION a INSTRUCTION b INSTRUCTION c INSTRUCTION d INSTRUCTION e 216 GOTO Renvoie un autre endroit du programme SYNTAXE GOTO Label Rep re adresse de l endroit de la m moire auquel le programme doit se rendre pour poursuivre son ex cution EXEMPLE GOTO END Arr te le programme 217 HIGH Cette instruction fait deux choses en m me temps apr s avoir mis en sortie une ligne du Port B RB la place aussit t l tat logique haut 1 SYNTAXE HIGH Pin v Num ro de la pin 0 7 du Port B RB qu on veut mettre l tat haut EXEMPLE HIGH 0 Sort un 1 sur RB0 NB Seul le num ro de la pin du RB doit tre sp cifi exemple HIGH 7 et non pas HIGH Pin 7 car une instruction ainsi r dig e n est pas admise et conduirait une ex cution erron e du programme 218 12Cin Re oit des donn es partir d un bus DC SYNTAXE 12Cin Contr le Adresse Variable Nom de la variable BO 51 dans laquelle on veut stocker le r sultat de la le
36. nt s appellent Bit0 Bit1 Bit2 et ainsi de suite jusqu Bit15 192 D nomination des lignes de PORTS MEL PicBASIC n appelle pas de la m me fa on les bits du Port A et les bits du Port B a Les bits du Port A Les bits du Port A sont appel s Pin0 Pinl Pin2 Pin3 Pins b Les bits du Port B Les bits du Port B sont appel s JOU Q D Attention donc Pour vous r f rer l un des 5 bits du Port A vous direz 0 Pinl Pin2 Pin3 Pind Pour vous r f rer l un des 8 bits du Port B vous direz 0 1 2 3 4 5 6 7 193 Configuration des bits de chaque Port Chaque bit de Port Port A et Port B peut tre configur en entr e ou en sortie tout bit mis O est configur en entr e tout bit mis 1 est configur en sortie Mais la fa on dont MEL PicBASIC configure les bits n est pas la m me pour le Port A et pour le Port B Port A a Pour configurer le Port A en entr e associ par exemple des interrupteurs il faut premi rement s adresser au Registre du Port A situ l adresse 5 Puis il faut d finir la direction de ce Port en s adressant au Registre TRISA situ l adresse 85 Les bits mis 0 deviennent des entr es Tandis que les bits mis 1 deviennent des sorties Pour configurer tout le Port A en entr e il faut donc crire Symbol PORTA 5 Symbol TRISA 85 POKE TRISA 255 255 11111111 Tous bits du Port A en entr e b Pour
37. ort B Ce qui a pour effet de mettre le bit 0 0 le bit 1 0 lebit2 1 le bit 3 1 le bit 4 0 lebit5 1 le bit 6 0 le bit 7 O 2 PINS Bl Met chacun des bits du Port B l tat haut ou l tat bas conform ment l octet se trouvant dans la variable 3 PINS 255 Met l tat haut tous les bits du Port B 4 DIRS 255 Port B en sortie 233 LOOP FORBI 0 TO 255 PINS Bl PAUSE 500 NEXT BI GOTO LOOP END On affiche sur le Port B toutes les valeurs de 0 255 FOR 0 TO 255 NEXT un intervalle de 500 ms Puis on recommence ind finiment 234 POKE C est l instruction par laquelle on crit une donn e l adresse que l on d signe SYNTAXE POKE Adresse Donn e Donn e crire Adresse laquelle on veut crire la donn e EXEMPLES 1 POKE TRISA 0 Met 0 dans TRISA 2 SYMBOL PORTA 5 Adresse de PORTA SYMBOL TRISA 85 Adresse de TRISA POKE TRISA 0 Port A en sortie PEEK PORTA BO Copie Port A dans 0 BITI 1 BIT2 0 etc POKE PORTA B0 END Ainsi faisant on copie sur le Port A ce qui se trouve dans la variable 235 POT Lit la valeur d une r sistance potentiom tre thermistance jauge de contrainte capteur de position ou autre composant r sistif sur l une des pins 0 7 du Port B La valeur de la r sistance pouvant aller de 5 KQ 50 est d termin e en fait en mesurant le temps
38. que l on veut comparer ceci gal cela ceci inf rieur cela lt ceci sup rieur cela gt ceci sup rieur ou gal cela gt ceci diff rent de cela lt gt EXEMPLE IF Pin0 0 THEN OUVERT IF BO gt 9 THEN PORTE Si l interrupteur connect la pin 0 du Port A est ouvert 0 ex cute le sous programme appel OUVERT Si la variable B a une valeur sup rieure ou gale 9 ex cute le sous programme appel PORTE 223 INPUT Place en entr e l une des 8 lignes du Port B RB SYNTAXE INPUT Pin Num ro de la pin du Port B RB qu on veut placer en entr e EXEMPLE INPUT 3 Met RB3 en entr e NB Seul le num ro de la pin doit tre not C est dire 0 7 et non 0 Pin7 224 LET Avec cette instruction on affecte une valeur une variable EXEMPLE LET B0 37 Affecte la variable BO la valeur 37 225 LOOKdown Cherche une valeur Recherche dans une liste Constante Constante Constante et fournit en Index sa position dans la liste SYNTAXE LOOKDOWN Recherche Constante Constante Constante Index L instruction compare une variable une liste de constantes jusqu ce qu elle trouve une galit et dans ce cas place dans une variable le num ro du rang de cette valeur Si la valeur recherch e est la premi re de la liste Index prend la valeur 0 si c est la deuxi me Index prend la valeur 1 etc
39. s L instruction SERout 6 T2400 B0 envoie sur la pin 6 du Port B le code stock dans la variable aux normes T2400 2400 Bauds mode TTL vrai 278 Programme 17 Recevoir en mode s rie 2400 Bauds un code entrant sur la pin RB6 Stocker le code recu dans la variable B0 LOOP SERin 6 N2400 0 IF BO gt 0 THEN CODE OK GOTO LOOP CODE POKE PORTA 0 END Le code re u est stock dans la variable BO L instruction IF gt 0 sert d tecter l arriv e d un code Si un code autre que 0 est d tect alors on le stocke dans 0 En l absence de code on continue guetter
40. s Si Pin0 et Pinl ne sont pas tous les deux enfonc s il ne se passe rien la LED reste teinte 264 Programme 4 Allumer successivement toutes les LED du Port B LOOP FOR 0 TO 7 HIGH B0 NEXT B0 END 265 Programme 5 Allume et teint en s quence une la fois toutes les LED du Port B de RB0 RB7 avec un petit intervalle de temps entre chaque LOOP FOR 0 TO 7 HIGH B0 PAUSE 100 LOW B0 PAUSE 900 NEXT B0 GOTO LOOP END 266 Programme 6 Faire clignoter simultan ment toutes les 8 LED du Port B On pourrait certes crire LOOP HIGH 0 HIGH 1 HIGH 2 HIGH 3 HIGH 4 HIGH 5 HIGH 6 HIGH 7 PAUSE 100 LOW 0 LOW 1 LOW 2 LOW 3 LOW 4 LOW 5 LOW 6 LOW 7 PAUSE 100 GOTO LOOP END Pas tr s beau L utilisation d une variable simplifie l criture LOOP FOR B0 0 TO 7 HIGH B0 NEXT B0 PAUSE 100 FOR B0 0 TO 7 LOW B0 NEXT B0 PAUSE 100 GOTO LOOP END 267 Les deux programmes font exactement la m me chose mais le deuxi me utilise beaucoup moins d instructions Faire des conomies d instructions dans un si court programme n a pas de sens mais cela vaut la peine quand on crit des programmes longs Exercez vous donc toujours recourir aux instructions les mieux adapt es 268 Programme 7 Faire clignoter 5 fois toutes les LED du Port B ensemble LOOP FOR 0 TO 7 HIGH BI PAUSE 50 LOW BI PAUSE 500 NEXT BI FOR 1 TO 5 HIGH BI PAUSE 50 LOW BI
41. s doivent tre utilis s moyennant une r sistance de limitation de courant 22 K Pin RS 232 Tx DEEE 5232 lasse EXEMPLE LOOP SERin 7 n1200 BO IF B0 gt 0 THEN SORTIE SORTIE POKE Pin3 PAUSE 300 GOTO LOOP Re oit un signal s rie sur RB7 en TTL invers la vitesse de 1200 Bauds et le stocke dans la variable BO Si BO contient une donn e elle est envoy e sur la pin 3 du Port A RA3 On temporise 300 ms Puis on recommence avec l octet suivant 250 SERout Serial Output Cette instruction permet d envoyer des donn es sous forme s rie asynchrone par mots de 8 bits sans parit avec un seul bit de STOP L mission doit avoir lieu en utilisant l une des pins 0 7 du Port B RB SYNTAXE SERout Pin Mode Donn e Donn e VIYI A noter entre parenth ses Ca peut tre une ou plusieurs Si plusieurs une virgule doit les s parer Il s agit des informations transmettre Ces informations peuvent tre des constantes des variables ou une chaine de caract res Une chaine de caract res est trait e comme une suite de caract res Chacun d eux est mis individuellement Une valeur num rique variable ou constante est mise sous la forme de son quivalent ASCII Ainsi par exemple 13 est un retour chariot et 10 est un saut de ligne Une valeur num rique pr c d e du signe di se est mise sous la forme de la repr sentation en ASCII d
42. s s parer Il s agit des informations optionnelles formant une sorte de cl qui doivent tre re ues exactement dans l ordre sp cifi avant que la ou les donn es ne soient prises en compte Si lors de la r ception de plusieurs Qualificateurs un seul ne correspond pas la cl laquelle ils sont compar s un un le processus revient au d but et le programme reprend les examiner depuis le premier Un Qualificateur peut tre une constante une variable ou une chaine de caract res dans ce dernier cas chaque caract re de la chaine est trait individuellement pris en sa valeur ASCII Cela sert s curiser une transmission Tr s utile notamment dans le cas des t l commandes d alarmes ou d anti vol distance D finit la fois la vitesse de transmission Baud Rate et la forme des donn es TTL vrai ou TTL invers On peut choisir parmi 8 modes possibles selon les sp cifications du tableau suivant 249 Symbole Valeur Baud Rate Mode T2400 0 2400 T1200 1 1200 TTL vrai T9600 2 9600 T300 3 300 N2400 4 2400 N1200 5 1200 TTL invers N9600 6 9600 N300 7 300 Etant donn que les circuits d interface RS232 m me les plus conomiques pr sentent d excellentes caract ristiques d entr e sortie les signaux peuvent tre g r s par les PIC sans besoin d un convertisseur de niveux Les signaux pr sent s en format TTL inver
43. seul bip pour informer qu il s agit de l interrupteur n 1 deux bips pour le n 2 et ainsi de suite 5 bips pour P interrupteur n 5 SYMBOL SYMBOL LOOP 1 bip 2_bips 3_bips 4 bips 5 bips PORTA 5 TRISA 85 POKE TRISA 255 PEEK PORTA B0 IF Bit 1 THEN 1 IF Bitl 1 THEN 2 bips IF Bit 1 THEN 3 bips IF Bit3 1 THEN 4 bips IF Bit4 1 THEN 5 bips GOTO LOOP SOUND 7 100 50 GOTO LOOP SOUND 7 100 50 100 50 GOTO LOOP SOUND 7 100 50 100 50 100 50 GOTO LOOP SOUND 7 100 50 100 50 100 50 100 50 GOTO LOOP SOUND 7 100 50 100 50 100 50 100 50 100 50 GOTO LOOP END Apr s les initialisations et apr s avoir m moris le Port A dans la variable BO on teste chaque bit qui s il est 1 renvoie un sous programme sp cifique qui met le nombre de bips correspondant Les bips ont tous la m me hauteur et la m me dur e 100 50 100 correspond la hauteur de la note 50 correspond sa dur e 277 Programme 16 Transmettre en mode s rie 2400 Bauds via la pin RB6 un code de 4 bits issu de 4 interrupteurs plac s sur le Port A SYMBOL PORTA 5 SYMBOL TRISA 85 POKE TRISA 255 Port A en entr e LOOP PEEK PORTA 0 M morise le Port A dans B0 PAUSE 200 SERout T2400 B0 GOTO LOOP END L instruction PAUSE 200 est n cessaire ici car le code provient d interrupteurs pouvant g n rer des rebond
44. v Dur e de veille xprim e en secondes EXEMPLE SLEEP 60 Met le uC en veille pendant 1 minute 60 secondes 254 SOUND G n re un son sur la pin d sign e du Port B RB SYNTAXE SOUND Pin Note Dur e Note Dur e v Dur e de la note ms Hauteur de la note de 1 127 notes audibles de 128 256 bruit blanc Num ro 0 7 de la pin du Port B RB sur laquelle on veut faire sortir le son EXEMPLES 1 SOUND 7 100 50 G n re sur RB7 une note de hauteur 100 pendant 50 ms 2 SOUND 7 1 100 65 100 127 100 G n re sur RB7 trois notes une note grave pendant 100 ms suivie d une note moyenne pendant 100 ms suivie encore d une note aig e pendant 100 ms Le son g n r a la forme d un signal carr La Dur e et la hauteur de la Note sont d terminer exp rimentalement car elles peuvent varier d un uC l autre en fonction notamment de la fr quence du quartz pilote mais aussi de la tension d alimentation de la temp rature etc Les param tres enferm s dans les parenth ses doivent indiquer la note et sa dur e la note et sa dur e la note et sa dur e Leur nombre doit tre forc ment pair On peut mettre dans les parenth ses autant de param tres qu on veut Il y a bien s r une limite la taille m moire maximale du PIC 255 Voici deux fa ons possibles de raccorder un haut parleur une pin du Port B 10 pF 10 V PIC
45. wn LOOKup LOW NAP OUTPUT PAUSE PEEK PINS POKE POT PULSin PULSout PWM RANDOM READ RETURN REVERSE SERin SERout SLEEP SOUND TOGLE TRISA WRITE Classement par genre BUTTON DIRS HIGH INPUT LOW OUTPUT PINS POT PULSin PULSout PWM REVERSE SERin SERout SOUND TOGLE 201 DEBUG EEPROM END FOR NEXT IF THEN LET LOOKDOWN LOOKUP NAP PAUSE PEEK POKE RANDOM READ SLEEP WRITE 202 BRANCH Cette instruction est une variante de GOTO Comme GOTO elle permet de sauter des sous programmes Mais ici en fonction de la valeur prise par la variable donn e en offset SYNTAXE BRANCH offset Labell Label2 Si offset vaut 0 le programme saute Label S il vaut 1 le programme saute Label et ainsi de suite EXEMPLE BRANCH 5 Labell Label2 Label3 Si 5 vaut 0 le programme fait un GOTO au sous programme appel Labell S il vautl le programme fait un GOTO au sous programme appel Label2 S il vaut2 le programme fait un GOTO au sous programme appel Label3 Si la valeur de l offset ici B5 prend une valeur sup rieure au nombre des sous programmes indiqu s dans les parenth ses ici 0 1 2 le programme n effectue aucun saut et continue en s quence 203 BUTTON Cette instruction lit l tat d un interrupteur plac sur l une des 8 lignes 0 7 du Port B RB et peut d clencher une proc dure d anti rebonds d clencher une proc dure d
Download Pdf Manuals
Related Search
Related Contents
Vita-Mix VM0800 User's Manual Solar Controller - manuale d`installazione Manuale Zebra DS6878-HC M O D U L E - 5 C Model CS-130 Revo RCBS20-1 surveillance camera FTA-102L Free Roaming Gateway User Manual PORTech 取扱説明書 (日本語) Axor Massaud Wash Bowl 42300000 User's Manual Sistema de rayos X panorámicos Vantage de Progeny Copyright © All rights reserved.
Failed to retrieve file