Pierre LOGLISCI
Edition de lAuteur
Cet ouvrage est la proprit de lAuteur. Il est protg par les Lois sur le Copyright. Aucune partie de ce livre ne peut tre reproduite, sous aucune forme ou par un quelconque procd (lectronique, photocopie, CD ou autre), sans lautorisation crite de lAuteur. La bible pour dsassembler la main est une nouveat mondiale, ide originale de lAuteur.
- Le nom et le logo MICROCHIP sont des Marques dposes de MICROCHIP Technology Inc. - Arizona - USA - PIC, PICmicro, PICMASTER, PICSTART Plus, PROMATE 2, MPASM, MPLAB, MPLAB-ICE, MPLAB-IDE, MPLIB et MPLINK sont des Marques de MICROCHIP - WINDOWS, MICROSOFT et MICROSOFT INTERNET EXPLORER sont des Marques dposes de MICROSOFT - PicBASIC est une Marque dpose de Micro Engineering Labs
Ddicace
Lorsque ce travail ntait quun manuscrit, mon plus grand problme fut de savoir comment faire pour lui donner une forme dactylographique acceptable pour tre lu par tous. Je navais que trs peu de connaissances en ce qui concerne lutilisation du clavier, des logiciels de traitement de texte et dimages, et du scanner... Je ne savais pas comment crer les indispensables tableaux, ni comment accder aux caractres spciaux.... Je navais aucune exprience de composition et de mise en page... Bref : je ne savais pas comment my prendre pour faire en sorte quun tas de feuilles gribouilles la main deviennent un livre... Si jy suis parvenu, cest grce laide spontane et constante que ma apporte ma fille Elodie qui - comme un guide de haute montagne - ma prcd dans la difficile ascension en mouvrant des chemins faciles et srs, toujours en se mettant ma place, dosant les difficults la mesure de leffort quelle savait que jtais capable de fournir . Sans jamais faire de concessions, elle sest de nombreuses fois oblige chercher - chez elle, sur son propre PC - les solutions pratiques aux problmes que je lui soumettais, au fur et mesure quils se prsentaient.
Pour son aide, bien sr ; mais aussi pour les constants encouragements rpts quelle ma donns, lenthousiasme quelle a partag avec moi pendant tout le temps que jai consacr au projet, et son doux sourire, dont elle mentoure encore.
Avant-propos
Bien quil existe une dj abondante littrature sur les microcontrleurs PIC en gnral, lamateur qui veut sattaquer une ralisation personnelle utilisant le modle 16F84 ny arrive quau prix de gros efforts. Ceci cause du fait quil y a plusieurs modles de PIC qui, tout en possdant la mme philosophie, diffrent sensiblement lun de lautre (par le nombre dinstructions, le nombre de pages mmoire, le nom des registres, la prsence ou labsence de ressources internes...) et droutent celui qui en entreprend ltude pour la premire fois. Or, si les ouvrages traitant les microcontrleurs PIC en gnral sont nombreux, aucun naborde le 16F84 en particulier. Dans ces conditions, le lecteur qui ne sintresse qu ce modle exclusivement, doit se livrer tout un travail pour sparer ce qui est important et ncessaire (parce que a concerne le 16F84) de ce qui est superflu (parce que a ne concerne pas le 16F84 mais se rfre dautres modles). Aussi jai condens dans cet ouvrage les seules notions pratiques ncessaires pour aborder un montage personnel base de 16F84. Il y a plusieurs raisons cela. En premier lieu, ce modle possdant une mmoire EEPROM effaable lectriquement, simpose comme la solution idale pour ceux qui veulent apprendre utiliser un microcontrleur PIC, du fait quil est reprogrammable jusqu plus de 1.000 fois (selon les spcifications du fabricant). Associ de simples organes priphriques, il reprsente loutil dapprentissage par excellence, car le lecteur peut tester tous les programmes avec le mme microcontrleur et revenir sur les erreurs, les corriger et rapidement re-tester lapplication.
6 Ce microcontrleur possde un fusible interne, accessible par programmation, quil faudra se garder de laisser intact. Car lorsque ce fusible a t brl, le microcontrleur, sil peut encore tre effac et reprogramm, ne peut plus tre lu correctement , car sa mmoire est restitue compltement dsorganise. Bien utile pour ceux qui mettent au point une application commerciale quils veulent protger et mettre labri de copies sauvages, ce fusible doit tre ignor pendant la dure de ltude. Cette accessibilit permanente de la mmoire reprsente laspect le plus original de tous les microcontrleurs mmoire flash, parmi lesquels trne le 16F84. De plus, la capacit mmoire de ce modle (ni trop petite ni trop grande) le prdestine comme le compromis idal non seulement pour lauto-apprentissage, mais aussi pour les premires applications personnelles que chacun aura envie dinventer. Car, sil est incontestable quon peut parvenir la ralisation dun grand nombre de dispositifs en tlchargeant programmes et circuits imprims partir des nombreux sites consacrs aux microcontrleurs, dans ce domaine particulier de la microlectronique seules les capacits personnelles comptent. Cest pourquoi ce livre sadresse tout particulirement qui veut vraiment prendre ... dans une main le PIC 16F84 ... et dans lautre les indispensables outils de dveloppement et... le fer souder ! Les seules connaissances exiges pour en aborder la lecture sont les bases fondamentales de llectronique gnrale et de llectronique logique. Un avertissement tout de mme - sil tait ncessaire - consiste rappeler que pour matriser la ralisation dun montage incorporant un microcontrleur 16F84 il faut disposer dun ordinateur et dun outil de dveloppement (pouvant tre soit une copie de lassembleur MPLAB que Microchip distribue gratuitement sur son site Internet, soit un compilateur BASIC). Nous verrons ceci plus loin, dans la section traitant de la programmation.
Du contrleur au microcontrleur
Pour le dire avec des mots simples, un contrleur est un dispositif qui - plac au cur dun processus - surveille lvolution dun vnement et compare son tat (ou sa valeur) une donne prdtermine, pour intervenir ds que les limites prfixes sont atteintes. De ce point de vue, un contrleur nest pas forcment lectronique. Il peut tre mcanique, pneumatique, thermique, etc.. Son travail consiste surveiller (lire) la valeur dune situation, et la comparer en permanence une valeur fixe davance. Lorsquil y a une diffrence entre la valeur lue et celle fixe, le contrleur gnre une commande qui - envoye un endroit appropri du processus rduit cette diffrence ou ramne les choses la normale. Aussi, un thermostat dambiance ou la valve de scurit installe sur le couvercle dune cocotte-minute, sont des exemples de contrleurs simples. Un contrleur peut accomplir une ou plusieurs tches la suite. Les plus souples de tous les contrleurs sont videmment les contrleurs faisant appel llectronique, et plus particulirement les microcontrleurs. La surveillance de la valeur dune situation se fait alors au moyen dune ou plusieurs lignes dacquisition de donnes configures en entres, tandis que lenvoi de commandes se fait au moyen dune ou plusieurs lignes configures en sorties. Lensemble des tches confies un microcontrleur sappelle programme.
Le microcontrleur 16F84
Prsentation gnrale
Ce modle de PIC (Programmable Interface Controler) est un circuit de petite taille, fabriqu par la Socit amricaine Arizona MICROCHIP Technology. En le regardant pour la premire fois, il fait davantage penser un banal circuit intgr logique TTL ou MOS, plutt qu un microcontrleur. Son botier est un DIL (Dual In Line) de 2x9 pattes. En dpit de sa petite taille, il est caractris par une architecture interne qui lui confre souplesse et vitesse incomparables. Ses principales caractristiques sont : - 13 lignes dentres/sorties, rparties en un port de 5 lignes (Port A) et un port de 8 lignes (Port B) - alimentation sous 5 Volts - architecture interne rvolutionnaire lui confrant une extraordinaire rapidit - une mmoire de programme pouvant contenir 1.019 instructions de 14 bits chacune (allant de ladresse 005 ladresse 3FF) - une mmoire RAM utilisateur de 68 emplacements 8 bits (de ladresse 0C ladresse 4F) - une mmoire RAM de 2x12 emplacements rserve aux registres spciaux - une mmoire EEPROM de 64 emplacements - une horloge interne, avec pr diviseur et chien de garde - possibilit dtre programm in-circuit, cest dire sans quil soit ncessaire de le retirer du support de lapplication - vecteur de Reset situ ladresse 000 - un vecteur dinterruption, situ ladresse 004 - bus dadresses de 13 lignes - prsence dun code de protection permettant den empcher la duplication - facilit de programmation - simplicit - faible prix .
10
Indpendamment de ce quon veut faire de ses 13 lignes (que lon dfinit par lignes dentre/sortie) et quelle que soit lapplication laquelle on le destine, un microcontrleur PIC 16F84, pour pouvoir fonctionner, a ncessairement besoin de : - une alimentation de 5 Volts ; - un quartz et deux condensateurs (si un pilotage prcis par base de temps quartz est ncessaire), ou une rsistance et un condensateur (pour une base de temps de type RC, conomique, utilisable dans les cas ne demandant pas une extrme prcision de cadencement) ; - un condensateur de dcouplage (pour rduire les transitoires se formant invitablement dans tout systme impulsionnel) ; - un bouton poussoir et une rsistance, pour la mise en place dune commande de Reset. Ces lments - quil convient de considrer comme des invariants devant ncessairement figurer dans tout montage - reprsentent le cortge obligatoire de tout microcontrleur PIC 16F84, de la mme faon pourrais-je dire - quun transistor demande, pour fonctionner, une rsistance de Base et une rsistance de Collecteur. Les applications type sont celles des deux pages suivantes :
11
12
13
Les Entres/Sorties
A part les cinq pins rserves au cortge des invariants devant ncessairement figurer dans tout montage, les treize autres pins du 16F84 servent dentres/sorties. Elles sont regroupes en deux ports : Port A et Port B. Le Port A possde 5 lignes, nommes: RA0..........pin 17 RA1..........pin 18 RA2..........pin 1 RA3..........pin 2 RA4..........pin 3 (RA4/T0CKI) (NB : RA = Register A) Le Port B possde 8 lignes, nommes: RB0..........pin 6 (RB0/INT) RB1..........pin 7 RB2..........pin 8 RB3..........pin 9 RB4..........pin 10 RB5..........pin 11 RB6..........pin 12 RB7..........pin 13 (NB : RB = Register B) A remarquer que RB0 (pin 6) et RA4 (pin 3), outre qu pouvoir servir dentres/sorties, selon la faon dont on les programme peuvent respectivement servir lune comme entre dinterruption et lautre comme entre dhorloge externe pour le pilotage du timer (TMR0).
14
003
004 Vecteur dInterruption 005
. . 1019 adresses restantes, disponibles pour y loger les instructions de votre programme
3FF
15 Cette mmoire est celle dans laquelle le programmateur crit les instructions du programme. Dans cet espace mmoire, les cinq premires adresses (000, 001, 002, 003, et 004) sont rserves au microcontrleur. Certaines dentre elles sont particulirement remarquables : a) ladresse 000 correspond au vecteur de Reset. A la mise sous tension, ou chaque fois que des instructions spcifiques lobligent, le Program Counter (PC) se rend cette adresse et cest l que le systme trouve la premire instruction excuter. Cest une case devant obligatoirement tre remplie et contenir lorigine du programme (ORG). Si cette adresse tait vide, le microcontrleur ne ferait rien, car aucun programme ne serait excut. b) ladresse 004 correspond au vecteur dinterruption. Cest ladresse point de rencontre dfinie par le fabricant, laquelle systme et utilisateur se rendent lorsquun problme surgit, pour se dire ce quil se passe et quel sont les remdes durgence apporter.
2) une mmoire de donnes (Data Memory) EEPROM flash, de 64 emplacements 8 bits, allant de ladresse 00 ladresse 3F, auxquels on accde uniquement par lintermdiaire de quatre registres spciaux: -EEADR (EEprom ADRess) pour ce qui concerne les adresses - EEDATA (EEprom DATA) pour ce qui concerne les donnes - EECON1 (EEprom CONtrol) permettant de dfinir le - EECON2 mode de fonctionnement de cette mmoire. Pour lire dans cette mmoire, les tapes suivre sont les suivantes : 1) on crit ladresse dans le registre EEADR ; 2) on met 1 le bit 0 (RD : Read Data) du registre EECON1 (ce qui provoque le transfert de la donne dans le registre EEDATA) ; 3) on lit la donne dans le registre EEDATA o elle est devenue disponible.
16 Exemple : on veut lire le contenu de lemplacement mmoire 03 : BCF MOVLW MOVWF BSF BSF BCF STATUS,RP0 03 EEADR STATUS,RP0 EECON1,0 STATUS,RP0
A partir de ce moment, ayant autoris le mode lecture , la donne contenue ladresse 03 est disponible dans le registre EEDATA, et on peut lutiliser comme on veut. Ainsi, par exemple, on veut lire une donne en EEPROM et la porter dans le registre W : BCF MOVLW MOVWF BSF BSF BCF MOVF STATUS,RP0 adresse dont on veut lire le contenu EEADR STATUS,RP0 EECON1,0 STATUS,RP0 EEDATA,W
Voyons maintenant comment crire une donne en EEPROM : BCF BCF MOVLW MOVWF MOVLW MOVWF BSF BCF BSF MOVLW MOVWF MOVLW MOVWF STATUS,RP0 INTCON,7 donne que lon veut crire EEDATA adresse EEADR STATUS,RP0 EECON1,4 EECON1,2 55 EECON2 AA EECON2
Cette squence montre que pour crire dans cette mmoire, les tapes suivre sont un peu plus complexes, car on est oblig de passer dabord par EECON2 avant de confirmer la donne par EECON1 : 1) on interdit les interruptions ; 2) on crit la donne dans le registre EEDATA ; 3) on crit ladresse dans le registre EEADR ; 4) on configure le registre EECON1 5) on envoie la squence dfinie par Microchip (55 et AA) 6) on reconfigure les registres EECON1, INTCON et STATUS. Voyons les choses plus en dtail au moyen dun autre exemple montrant lcriture dune donne (par exemple : 13) une certaine adresse (par exemple : 1F) : EEDATA EEADR EECON1 EECON2 INTCON EQU EQU EQU EQU EQU BCF MOVLW MOVWF MOVLW MOVWF BSF BCF BSF MOVLW MOVWF MOVLW MOVWF BSF BCF BSF BCF 08 09 88 89 0B INTCON,7 13 EEDATA 1F EEADR STATUS,RP0 EECON1,4 EECON1,2 55 EECON2 AA EECON2 EECON1,1 EECON1,2 INTCON,7 STATUS,RP0
18 3) Une mmoire RAM 8 bits, que Microchip appelle Register File, rserve aux donnes. A plus proprement parler, il sagit dune RAM statique (SRAM). Cet espace est son tour rparti en deux zones : a) une zone RAM de 24 emplacements 8 bits rserve aux registres spciaux, dont 12 situs en Page 0 (adresses 00 0B) et 12 situs en Page 1 (adresses 80 8B) selon la mappe suivante : Page 0 Adressage indirect TMR0 PCL STATUS FSR PORT A PORT B EEDATA EEADR PCLATH INTCON Page 1 Adressage indirect OPTION PCL STATUS FSR TRIS A TRIS B EECON1 EECON2 PCLATH INTCON
00 01 02 03 04 05 06 07 08 09 0A 0B
80 81 82 83 84 85 86 87
88
89 8A 8B
Ces registres - auxquels on accde en programmant le bit 5 (RP0) du registre STATUS - servent contrler le fonctionnement de nombreux organes internes au PIC. Nous y reviendrons plus en dtail; b) une zone RAM de donnes, constitue de 68 emplacements 8 bits (adresses de 0C 4F) situs juste au dessous des registres spciaux, formant la RAM utilisateur proprement dite, selon la mappe dtaille ciaprs : 0C 0D 0E 0F 10
19 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 32 33 34 35 36 37 38 39 3A
20 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F Lors de la programmation il faut toujours indiquer ladresse de la zone RAM partir de laquelle le C doit commencer crire, ainsi que le nombre demplacements rserver pour chaque variable. Comme ceci, par exemple : Compteur ORG RES OC 3
Ce qui revient dire : rserve trois emplacements la variable Compteur, dans lordre suivant : Compteur ladresse 0C Compteur+1 ladresse 0D Compteur+2 ladresse 0E . Ainsi, par exemple : pour effacer les donnes de ladresse OE, on crira : CLRF Compteur+2.
21 4) et enfin une toute petite mmoire EEPROM, contenant seulement 8 cases, de ladresse 2000 ladresse 2007, rserves au microcontrleur. Les adresses 2000, 2001, 2002 et 2003 correspondent aux emplacements dans lesquels lutilisateur peut stocker un code didentification (en nutilisant que les quatre bits de poids faible de chacun de ces mots 14 bits). Ladresse 2007 correspond au registre de configuration du microcontrleur. Lui aussi mot de 14 bits, dont les cinq premiers seulement sont utilisables :
4 3 2 1 0
CP
PWRTE
WDTE
FOSC1
FOSC0
- Bit 0 - FOSC0 (OSCillateur zro) et - Bit 1 - FOSC1 (OSCillateur un) sont programmer en fonction du type doscillateur utilis, conformment aux spcifications du tableau suivant: FOSC1 0 0 1 1 FOSC0 0 1 0 1 Type doscillateur Caractristiques LP (Low Power) Quartz jusqu 200 KHz XT Quartz (XT ou 4) MHz HS (High Speed) jusqu 20 MHz RC RC jusqu 4 MHz
- Bit 2 - WDTE (Watch-Dog Timer Enable) 1 = autorise le chien de garde 0 = nautorise pas le chien de garde - Bit 3 - PWRTE (PoWeR Timer Enable) Le C possde un timer permettant de retarder de 72 ms le lancement du programme aprs la mise sous tension du circuit. 1 = le C attend 72 ms 0 = le C dmarre tout de suite
22 - Bit 4 - CP (Code Protection) 1 = pas de protection (le C pourra tre lu correctement) 0 = avec protection (le C ne pourra plus tre lu correctement. Le contenu de la mmoire sera dsorganis).
23
24
25
EEIF
WRERR WREN
WR
RD
Bit 0 : RD (ReaD) Normalement 0. Il se met dans cet tat de lui-mme. Le programmeur ne peut y crire que un 1. Naccepte pas dtre programm zro. Bit 1 : WR (WRite) Normalement 0. Il se met dans cet tat de lui-mme. Le programmeur ne peut crire que un 1. Naccepte pas dtre programm zro. Bit 2 : WREN (WRite ENable) Mis zro, interdit toute criture en mmoire. Mis 1, autorise une criture en mmoire. Bit 3 : WRERR (WRite ERRor) Flag derreur. Normalement zro. Passe 1 pour signaler quune erreur sest produite juste au moment o une criture tait en cours (Celle-ci na pu aboutir parce quun vnement inopin sest produit ; par exemple un Reset). Bit 4 : EEIF (EEprom Interrupt Flag) Flag dinterruption. Il est automatiquement mis 1 lorsque la programmation de lEEPROM de donnes est termine. Doit tre mis zro par programmation.
26
27
28
29
GIE
EEIE
TOIE
INTE
RBIE
TOIF
INTF
RBIF
Bit 7 : GIE (Global Interrupt Enable) Le chef suprme du registre INTCON. Le roi de toutes les interruptions ! Mis 1, il autorise la prise en compte de tous les autres bits de loctet ; tandis que mis zro, il les masque (mme sils sont positionns). Sous laction dun Reset il est automatiquement mis zro. Pour interdire la prise en compte de toute ventuelle demande dinterruption pouvant surgir pendant que le microcontrleur est dj occup en traiter une, ce bit (GIE) passe automatiquement zro jusqu ce que dans le programme apparat linstruction RETFIE, qui le repositionne 1. Au cas o lutilisation de ce bit soit ncessaire, il ne faut pas oublier que: aprs lavoir activ (pour ouvrir laccs au(x) bit(s) concern(s), et aprs linstruction RETFIE, cest dire la fin dun sous-programme dinterruption, lorsque son utilisation nest plus ncessaire, il faut le mettre zro, au risque de placer les demandes dinterruption dans un cycle qui les ferait revenir continuellement. Bit 6 : EEIE (EEprom Interrupt Enable) Mis 1, autorise linterruption que lEEPROM gnre la fin de la programmation.
7 6 5 4 3 2 1 0
EEIE
TOIE Mis 1, il autorise les interruptions provoques par le dbordement du timer interne (passage de FF 00).
INTE Mis 1, il autorise les demandes dinterruption provenant de lextrieur, appliques sur la pin 6 (RB0 /INT). NB : ces demandes peuvent se dclencher soit lapparition dun Front montant, soit lapparition dun front descendant, selon la faon Dont on a programm le bit 6 du registre OPTION (INTEDG) 1 = sur front montant 0 = sur front descendant
RBIE Mis 1, il autorise les interruptions provoques par un changement dtat sur les lignes du port B (RB4, BR5, RB6, RB7).
TOIF Le fonctionnement de ce flag est conditionn par ltat du bit 5. Il ne fonctionne que si le bit 5 a pralablement t mis 1. Dans la mesure o le bit 5 est 1, ce flag passe 1 chaque fois que le timer TMR0 dborde (passage de FF 00).
INTF Le fonctionnement de ce flag est conditionn par ltat du bit 4. Il ne fonctionne que si le bit 4 a pralablement t mis 1. Dans la mesure o le bit 4 est 1, ce flag passe 1 chaque fois quune demande dinterruption surgit, provenant de lextrieur, applique sur la pin 6 du botier (RB0/INT).
RBIF Le fonctionnement de ce flag est conditionn par ltat du bit 3. Il ne fonctionne que si le bit 3 a pralablement t mis 1. Dans la mesure o le bit 3 est 1, ce bit passe 1 chaque fois quil y a un changement dtat sur lune des lignes du port B (RB4, RB5, RB6 ou RB7) par rapport la dernire opration de lecture du port B (dans la mesure, videmment, o les lignes de ce port sont configures en entre).
33
OPTION
Est le registre qui prside au fonctionnement de lhorloge interne du microcontrleur (TMR0) :
7 6 5 4 3 2 1 0
RBPU
INTEDG
T0CS
T0SE
PSA
PS2
PS1
PS0
Bit 7 : RBPU (Register B Pull Up) Mis zro (actif ltat bas) valide les rsistances de pull-up prsentes, lintrieur du botier, sur les lignes du port B. Bit 6 : INTEDG (INTerrupt EDGe) Dtermine le front du signal dhorloge sur lequel on veut que soit prise en compte une demande dinterruption provenant de lextrieur (commande applique sur la pin 6 : RB0/INT). Car on peut faire agir une telle demande soit lapparition dun front montant (passage de zro 1), soit lapparition dun front descendant (passage de 1 zro). 1 = interruption programme pour se dclencher
).
Bit 5 : T0CS (Timer zero Clock Source) Sert choisir la provenance du signal quon souhaite utiliser comme clock pour piloter lhorloge interne. Il existe deux choix possibles : soit utiliser lhorloge interne utilisant le quartz pilote du microcontrleur et fournissant un signal dont la frquence est celle du quartz divise par 4, soit utiliser un signal externe prlev sur la pin RA4 (bit 4 du port A). 0 = le timer est pilot par lhorloge interne 1 = le timer est pilot par un signal externe.
34 Bit 4 : T0SE (Timer zero Signal Edge) Sert dterminer si lhorloge doit avancer sur front montant ou sur front descendant. 0 = lhorloge avance sur front montant
) ).
1 = lhorloge avance sur front descendant ( Bit 3 : PSA (Pre-Scaler Assignment) Sert affecter le prdiviseur soit au timer TMR0 soit au Watch-Dog. 0 = le pr diviseur est affect au timer TMR0 1 = le pr diviseur est affect au Watch-Dog. Bits 2 1 0 : PS2 PS1 PS0 (Pre-Scaler rate) Ces trois bits servent programmer le facteur de division quon veut assigner au prdiviseur dans le but davoir des signaux plus lents. A remarquer que le facteur de division nest pas le mme selon que le pr diviseur soit affect au TMR0 (timer) ou au Watch-Dog (chien de garde) : Facteur de division PS2 0 0 0 0 1 1 1 1 PS1 0 0 1 1 0 0 1 1 PS0 0 1 0 1 0 1 0 1 Pour le TMR0 2 4 8 16 32 64 128 256
Pour crire dans ce registre on utilise soit linstruction BSF,bit Soit linstruction BCF,bit.
35
36
37
Ladresse du compteur de programme est obtenue en mettant ensemble la partie basse fournie par PCL (Program Counter Low) et la partie haute fournie par PCLATH. Contrairement ce quon pourrait penser, ce registre ne fournit pas un nombre complmentaire fixe de bits, mais un nombre de bits variable, en fonction des instructions qui sont traites.
38
PORT A
PORT B
Alors que TRIS A et TRIS B se limitent dfinir le sens de chaque ligne des ports (entre ou sortie), PORT A et PORT B permettent concrtement au microcontrleur de communiquer avec lextrieur. Voici des exemples : 1) Comment crire un 0 sur une ligne de port (par exemple, sur RA0) : MOVLW (en binaire, pour que ce soit plus parlant). Octet de configuration de port : 0 = sortie 1 = entre Dans ce cas : on veut programmer le bit 0 en sortie, et tous les autres en entre. TRISA Charge loctet de configuration dans le registre TRIS A, mais toutes les lignes sont encore maintenues en haute impdance. PORTA,0 Met zro (clear) le bit 0 du port A. Toutes les autres lignes du port restent haute impdance. 11111110
MOVWF
BCF
2) Comment crire un 1 sur une ligne de port (par exemple, sur RA2) : MOVLW 11111110 (en binaire, pour que ce soit plus parlant). Octet de configuration de port : 0 = sortie 1 = entre Dans ce cas : on veut programmer le bit 2 en sortie et tous les autres en entre. Charge loctet de configuration dans le registre TRIS A.
MOVWF
TRISA
39 BSF PORTA,2 Met 1 (set) le bit 2 du port A. Toutes les autres lignes du port restent haute impdance.
3) Comment lire ltat logique dune ligne de port. Cest dire : comment savoir si une ligne est 0 ou 1 : MOVLW 11111111 (en binaire). Octet de configution de port (on veut que toutes les lignes du port soient des entres). TRISA Charge loctet de configuration dans le registre TRIS A. PORTA,3 Teste le bit 3 des lignes du port A. Sil est 1, linstruction suivante est excute. Si par contre il est 0, linstruction suivante est ignore et le programme excute linstruction se trouvant encore aprs. NB : Au lieu de BTFSC, on aurait pu utiliser linstruction BTFSS pour, dans ce cas, exter linstruction suivante si le bit test est 0.
MOVWF BTFSC
4) Comment lire loctet entier dun port configur en entre : MOVF PORTA,W Charge le contenu du port A dans le registre W.
40
RP0
TO
PD
DC
Bit 0 : C (Carry) Flag indiquant si une retenue a eu lieu dans un octet lors dune addition ou dune soustraction. Si une retenue a t gnre, ce bit passe 1. Bit 1 : DC (Digit Carry) Flag fonctionnant comme le bit de Carry, sauf quici la surveillance de la retenue sexerce non pas sur loctet entier, mais sur le premier demi-octet. Ce flag se positionne 1 si une retenue est gnre du bit 3 (bit de poids fort du quartet infrieur) vers le bit 0 du quartet suprieur. Il est utile pour corriger le rsultat doprations effectues en code BCD. Bit 2 : Z (Zero) Ce flag passe 1 si le rsultat dune opration (arithmtique ou logique) est 0. Bit 3 : PD (Power Down) Mise en veilleuse de lalimentation, effectue par linstruction SLEEP. Passe 1 lorsquon utilise linstruction CLWDT, ou la mise sous tension.
41 Bit 4 : TO (Time Out) Dpassement de dlai. Passe 0 si le timer du Watch-Dog (chien de garde) dborde. Est mis 1 par les instructions CLWDT et SLEEP, ainsi qu la mise sous tension. Bit 5 : RP0 (Register Page zero) Sert slectionner lune des deux pages de registres (Page 0 ou Page 1). 0 = slectionne la page mmoire 0 (adresses de 00 7F) 1 = slectionne la page mmoire 1 (adresses de 80 FF). Exemples de programmation : 1) BCF STATUS, RP0 (Bit Clear File STATUS Register Page 0). Met zro le bit RP0 du registre dtat. Autrement dit : slectionne le banc mmoire 0 (adresses 00 7F). STATUS,RP0
(Bit Set File STATUS Register Page 0). Met 1 le bit RP0 du registre
2)
BSF
42
43
TRIS A
TRIS B
Ce sont les registres qui dfinissent le sens de chacune des lignes des ports A et B. Toute ligne mise 1 est programme comme entre, tandis que toute ligne mise zro est programme comme sortie. Il ny a aucune instruction permettant dcrire directement dans ces registres : on y accde en transitant par le registre de travail W. En programmation, on commence donc par charger loctet de configuration dans le registre W, puis on copie celui-ci dans TRIS A ou TRIS B. Exemple : MOVLW MOVWF 00000001 (en binaire, sinon 01 en hexa) TRISA
Le bit 0 du port A est dfini comme entre, tandis que les sept autres lignes sont dfinies comme sorties.
44
La PROGRAMMATION
Diffrentes faons de programmer
Il existe plus dun chemin possible pour programmer les PIC. Nous en examinerons deux : 1) la programmation en langage ASSEMBLEUR 2) la programmation en langage BASIC.
45
46
47
48
49
50
Equivalences Initialisation de la RAM et rservation dun certain nombre dadresses mmoire Dbut du programme aprs Reset Configuration des lignes de port Instructions Sous programmes
ORG 00
Fin du programme
END
51
52
53 Je vous propose quatre types de classement: a) classement par ordre alphabtique b) classement par genre c) classement par type d) classement par ordre croissant dencodage. Toutes les instructions sont codes en un seul mot de 14 bits (0 13). Elles sont toutes excutes en un seul cycle dhorloge , sauf CALL, GOTO, RETFIE, RETLW et RETURN qui demandent 2 cycles, et BTFSC, BTFSS, DECFSZ, INCFSZ qui selon le cas peuvent demander soit un cycle, soit deux cycles. NB : Parmi les 37 instructions constituant le set du 16F84, deux lui sont spcifiques (je lai dj dit) et ont un caractre spcial : OPTION et TRIS. Ces deux instructions ne figurent pas dans les autres modles de PIC. Aussi Microchip recommande de ne pas les utiliser, dans le but de laisser compatibles les programmes (crits pour ce C) avec ceux crits pour dautres modles de PIC. Il suffit de le savoir. Mais ceci nest pas un obstacle pour nous, du fait que notre intrt est exclusivement tourn vers le 16F84.
54
55 RRF SLEEP SUBLW SUBWF SWAPF TRIS XORLW XORWF Rotate Right File SUBtract Literal with W SUBtract W from File SWAP File TRIState port eXclusive OR Literal and W eXclusive OR W and File
56
57 - instructions de saut et branchement : CALL GOTO RETFIE RETLW RETURN - instructions agissant sur les bits : BCF BSF BTFSC BTFSS - instructions diverses : NOP OPTION TRIS SLEEP SWAPF
58
59 - instructions travaillant avec un registre (f) mais proposant un choix (d) dans la destination du rsultat : - d = 0 : le rsultat est plac dans W - d = 1 : le rsultat est plac dans le registre f ADDWF f,d ANDWF f,d COMF f,d DECF f,d DECFSZ f,d INCF f,d INCFSZ f,d IORWF f,d MOVF f,d RLF f,d RRF f,d SUBWF f,d SWAPF f,d XORWF f,d
60
0 0000 NOP 0008 RETURN 0009 RETFIE 0062 OPTION 0063 SLEEP 0064 CLWDT 006x TRIS 00xx MOVWF 0100 CLRW 01xx CLRF 02xx SUBWF 03xx DECF 04xx IORWF 05xx ANDWF 06xx XORWF 07xx ADDWF 08xx MOVF 09xx COMF 0Axx INCF 0Bxx DECFSZ 0Cxx RRF 0Dxx RLF 0Exx SWAPF 0Fxx INCFSZ
3 30xx MOVLW 34xx RETLW 38xx IORLW 39xx ANDLW 3Axx XORLW 3Cxx SUBLW 3Exx ADDLW
61
ADDLW
ADD Literal to W - Additionne de manire immdiate le literal au contenu du registre W, et place le rsultat dans W. - Le literal est un mot de 8 bits (de 00 FF). - Cette instruction affecte 3 bits du registre dtat : le flag C : Carry le flag DC : Digit Carry le flag Z : Zero - 1 cycle dhorloge - Encodage de linstruction :
13 0
11 111x kkkk kkkk 3 E Valeur de loctet que lon veut ajouter W (valeur pouvant aller de 00 FF). - Exemple de programmation : ADDLW 06
En supposant que W contienne 04 avant linstruction, aprs linstruction il contient 0A (en hexa : 06 + 04 = 0A).
62
ADDWF
ADD W to File - Additionne le contenu du registre W loctet situ (en mmoire RAM) ladresse indique de suite (adresse comprise entre 0C et 4F) ; avec deux variantes : le rsultat peut tre plac soit dans le registre W, soit dans la mmoire RAM la place de loctet utilis pour faire laddition (la nouvelle valeur prend la place de lancienne). - Cette instruction affecte 3 bits du registre dtat : le flag C : Carry le flag DC : Digit Carry le flag Z : Zero - 1 cycle dhorloge - Encodage de linstruction:
13 0
00 0111 0
dfff
ffff
7 (W) 0 ou (registre) 1
De 000 1100 100 1111 Adresse de la RAM (entre 0C et 4F) dont le contenu est additionner W. - Exemples de programmation : 1) MOVF ADDWF,0 VentesDuMois,W
Lexemple 1 met dans W ce qui se trouve ladresse VentesDu Mois, puis additionne VentesDuMois au contenu de W, et range le rsultat dans W. Lexemple 2 met dans W ce qui se trouve ladresse VentesDu Mois, puis additionne VentesDuMois au contenu de W, et range le rsultat ladresse VentesDuMois, en renplaant lancienne valeur par le total quon vient de trouver.
64
ANDLW
AND Literal and W - Effectue une opration logique ET (AND) entre la valeur immdiate du literal et loctet se trouvant dans le registre W. - Le literal est un mot de 8 bits (de 00 FF) - Cette instruction affecte le bit Z du registre dtat - 1 cycle dhorloge - Encodage de linstruction :
13 0
11 1001 kkkk kkkk 3 9 Valeur de loctet avec laquelle on veut effectuer le ET logique (valeur pouvant aller de 00 FF). - Table de vrit dune porte ET :
A B Q 0 0 0 0 1 0 1 0 0 1 1 1
65
En supposant que W contienne 5C (01011100) avant linstruction, aprs linstruction W contient 04. A7 = 10100111 5C = 01011100 AND = 00000100 (04 en hexa) Pourquoi cette instruction dans le set du 16F84 ? A quoi sert-elle ? Elle sert lorsque dans un octet on a besoin de rcuprer un bit en particulier (ou certains bits en particulier). Pour cela il suffit de prparer un masque, cest dire on octet compos de 0 (aux emplacements o se trouvent les bits liminer) et de 1 (aux emplacements o se trouvent les bits rcuprer). Exemple : on souhaite rcuprer uniquement le bit 5 de loctet 01111010. On prpare alors le masque 00100000 et on fait un ET logique entre loctet et le masque. Comme ceci : 01111010 (octet) 00100000 (masque) Ce qui donne : 00100000 (rsultat) Le rsultat de lopration permet donc bien de rcuprer uniquement le bit 5 de loctet : ici cest un 1 (00100000). Une fois rcupr, on peut utiliser ce bit comme on veut.
66
ANDWF
AND W and File - Effectue une opration logique ET (AND) entre loctet se trouvant dans le registre W et loctet situ (en mmoire RAM) ladresse indique de suite (adresse comprise entre 0C et 4F) ; avec deux variantes : le rsultat peut tre plac soit dans le registre W, soit dans la mmoire RAM la place de loctet utilis pour effectuer le ET logique (la nouvelle valeur prend la place de lancienne). - Cette instruction affecte le bit Z du registre dtat - 1 cycle dhorloge - Encodage de linstruction:
13 0
00 0101 0 5
dfff
ffff
(W) 0 ou (registre) 1 De 000 1100 100 1111 Adresse de la RAM (entre 0C et 4F) o se trouve loctet avec lequel on veut faire le ET logique. - Exemples de programmation : 1) 2) ANDWF,0 ANDWF,1 Adresse Adresse
67 Lexemple 1 effectue un ET logique entre loctet se trouvant dans W et loctet se trouvant Adresse, et range le rsultat dans W. Lexemple 2 effectue un ET logique entre loctet se trouvant dans W et loctet se trouvant Adresse, et range le rsultat dans Adresse. - Table de vrit dune porte ET :
A B Q 0 0 0 0 1 0 1 0 0 1 1 1 Pourquoi cette instruction dans le set du 16F84 ? A quoi sert-elle ? Elle sert lorsque dans un octet on a besoin de rcuprer un bit en particulier (ou certains bits en particulier). Pour cela il suffit de prparer un masque, cest dire on octet compos de 0 (aux emplacements o se trouvent les bits liminer) et de 1 (aux emplacements o se trouvent les bits rcuprer). Exemple : on souhaite rcuprer uniquement le bit 5 de loctet 01111010. On prpare alors le masque 00100000 et on fait un ET logique entre loctet et le masque. Comme ceci : 01111010 (octet) 00100000 (masque) Ce qui donne : 00100000 (rsultat) Le rsultat de lopration permet donc bien de rcuprer uniquement le bit 5 de loctet : ici cest un 1 (00100000). Une fois rcupr, on peut utiliser ce bit comme on veut.
68
BCF
Bit Clear File - Met zro le bit dsign de loctet situ (en mmoire RAM) ladresse indique de suite (adresse comprise entre 0C et 4F). - 1 cycle dhorloge - Encodage de linstruction:
13 0
01 00bb 1
bfff
ffff
Position du bit dans loctet.
De 000 1100 100 1111 Adresse de la RAM (entre 0C et 4F) o se trouve loctet sur lequel on veut oprer. - Position du bit dans loctet : 111 110 101 100 11 10
0
0
- Exemples de programmation : En supposant quon veuille mettre zro (Clear) un certain bit de loctet situ ladresse 27 de la mmoire RAM, la programmation serait :
69
(pour mettre zro le bit 0) (pour mettre zro le bit 1) 27,2 (pour mettre zro le bit 2)
70
BSF
Bit Set File - Met 1 (Set) le bit dsign de loctet situ (en mmoire RAM) ladresse indique de suite (adresse comprise entre 0C et 4F). - 1 cycle dhorloge - Encodage de linstruction:
13 0
01 01bb 1
bfff
ffff
Position du bit dans loctet.
De 000 1100 100 1111 Adresse de la RAM (entre 0C et 4F) o se trouve loctet sur lequel on veut oprer. - Position du bit dans loctet : 111 110 101 100 11 10
0
0
- Exemples de programmation : En supposant quon veuille mettre 1 (Set) un certain bit de loctet situ ladresse 1C de la mmoire RAM, la programmation serait :
71
72
BTFSC
Bit Test File, Skip if Clear - Vrifie ltat logique du bit dsign de loctet situ (en mmoire RAM) ladresse indique de suite (adresse comprise entre 0C et 4F). Est-il zro ? Sil est zro, ignore linstruction suivante. - Selon que la rponse soit OUI ou NON, linstruction prend 1 ou 2 cycles dhorloge. - Encodage de linstruction:
13 0
01 10bb 1
bfff
ffff
Position du bit dans loctet.
De 000 1100 100 1111 Adresse de la RAM (entre 0C et 4F) o se trouve loctet sur lequel on veut oprer. - Position du bit dans loctet : 111 110 101 100 11 10
0
0
73 - Organigramme du traitement :
- Exemple de programmation : En supposant que loctet dont on veut tester un bit soit situ ladresse 1A, la programmation serait la suivante : BTFSC 1A,0 ou ou BTFSC 1A,1 BTFSC 1A,2 etc... (pour tester le bit 0) (pour tester le bit 1) (pour tester le bit 2)
74
BTFSS
Bit Test File, Skip if Set - Vrifie ltat logique du bit dsign de loctet situ (en mmoire RAM) ladresse indique de suite (adresse comprise entre 0C et 4F). Est-il 1 ? Sil est 1, ignore linstruction suivante. - Selon que la rponse soit OUI ou NON, linstruction prend 1 ou 2 cycles dhorloge. - Encodage de linstruction:
13 0
01 11bb 1
bfff
ffff
Position du bit dans loctet.
De 000 1100 100 1111 Adresse de la RAM (entre 0C et 4F) o se trouve loctet sur lequel on veut oprer.
0
0
75 - Organigramme du traitement :
- Exemple de programmation : En supposant que loctet dont on veut tester un bit soit situ ladresse 1C, la programmation serait la suivante : BTFSS 1C,0 ou ou BTFSS 1C,1 BTFSS 1C,2 etc... (pour tester le bit 0) (pour tester le bit 1) (pour tester le bit 2)
76
CALL
CALL subroutine - Appel sous-programme. - Le C sauvegarde ladresse de retour dans la pile (stack), puis charge dans le PC (Program Counter) ladresse laquelle il est invit se rendre. Il peut sagir aussi bien dune adresse que dune label ; et cest l que dmarre le sous-programme. - Tout sous-programme appel par linstruction CALL doit obligatoirement se terminer soit par linstruction RETURN, soit par linstruction RETLW qui renvoient au programme principal. Ne pas confondre linstruction CALL avec linstruction GOTO. Linstruction CALL fait toujours revenir le programme principal lendroit o il avait t abandonn ; tandis que linstruction GOTO provoque labandon total de la squence et peut conduire soit une toute autre action, soit larrt total du programme. - La pile (stack) est une zone de mmoire ne pouvant contenir que 8 mots de 13 bits. Ceci limite 8 niveaux les possibilits dimbrication. Sil y en avait un neuvime, la premire adresse de retour serait perdue... - Cette instruction prend 2 cycles dhorloge. - Encodage de linstruction :
13 0
10 0kkk kkkk kkkk 2 Adresse de lEEPROM de programme laquelle est log le sous-programme (adresse comprise entre 000 et 3FF).
77 - Organigramme du traitement :
Programme principal .................................. .................................. .................................. CALL sous-programme---------------->.................................. .................................. .................................. sous-programme <----- .................................. .................................. <-- RETURN
78
CLRF
CLeaR File - Efface (Clear) ce qui se trouve (en mmoire RAM) ladresse indique de suite (adresse comprise entre 00 et 4F). - Cette instruction affecte le bit Z du registre dtat - 1 cycle dhorloge - Encodage de linstruction :
13 0
00 0001 0 1
1fff ffff Adresse de la RAM (entre 00 et 4F) o se trouve loctet quon veut effacer.
- Exemples de programmation : 1) CLRF INTCON 2) CLRF PORTB 3) CLRF 1E (pour dsactiver les interruptions) (pour mettre zro tous les bits du port B) (pour effacer ce qui se trouve ladresse 1E)
79
CLRW
CLeaR W - Efface (Clear) le registre W. - Cette instruction affecte le bit Z du registre dtat - 1 cycle dhorloge - Encodage de linstruction :
13 0
80
CLRWDT
CLeaR Wach Dog Timer - Met zro le compteur du chien de garde (ainsi que celui du pr diviseur, si celui-ci est activ). - Cette instruction affecte deux bits du registre dtat : - le flag TO (Time Out) passe 1 - le flag PD (Power Down) passe 1 - 1 cycle dhorloge - Encodage de linstruction :
13 0
00 0000 0110 0100 0 0 6 4 - Exemple de programmation : CLWDT (efface le compteur du chien de garde).
Peu importe o en tait le compteur du chien de garde, cette instruction le fait revenir zro.
81
COMF
COMplement File - Effectue un complment bit bit sur loctet situ (en mmoire RAM) ladresse indique de suite (adresse comprise entre 0C et 4F) ; avec deux variantes : le rsultat peut tre plac soit dans le registre W, soit dans la mmoire RAM la place de loctet utilis pour faire le complment (la nouvelle valeur prend la place de lancienne). Faire le complment bit bit dun octet quivaut changer ses zros en 1, et inversement. Exemple : le complment de 00111100 est 11000011. - Cette instruction affecte le bit Z du registre dtat - 1 cycle dhorloge - Encodage de linstruction:
13 0
00 1001 0 9
dfff
ffff
(W) 0 ou (registre) 1 De 000 1100 100 1111 Adresse de la RAM (entre 0C et 4F) o se trouve loctet sur lequel on veut oprer. - Exemples de programmation : 1) COMF 2B,0 (effectue le complment bit bit de loctet situ ladresse 2B et range le rsultat dans W) En supposant que 2B contienne 11100000 avant linstruction, aprs linstruction cette valeur est transforme en 00011111.
82
2) COMF
2B,1 (mme chose, mais le rsultat est rang la place de loctet utilis pour faire le complment).
83
DECF
DECrement File - Dcrmente la valeur de loctet situ (en mmoire RAM) ladresse indique de suite (adresse comprise entre 0C et 4F) ; avec deux variantes : le rsultat peut tre plac soit dans le registre W, soit dans la mmoire RAM la place de loctet quon a dcrment (la nouvelle valeur prend la place de lancienne). - Cette instruction affecte le bit Z du registre dtat - 1 cycle dhorloge - Encodage de linstruction:
13 0
00 0011 0 3
dfff
ffff
(W) 0 ou (registre) 1 De 000 1100 100 1111 Adresse de la RAM (entre 0C et 4F) o se trouve loctet quon veut dcrmenter. - Exemples de programmation : 1) DECF COMPTEUR,0 (dcrmente loctet se trouvant ladresse COMPTEUR, et range le rsultat dans W) (mme chose, mais cette fois le rsultat est rang ladresse COMPTEUR).
2) DECF
COMPTEUR,1
84
DECFSZ
DECrement File, Skip if Zero - Dcrmente la valeur de loctet situ (en mmoire RAM) ladresse indique de suite (adresse comprise entre 0C et 4F), et effectue un test : loctet a-t-il atteint zro ? Si OUI, ignore linstruction suivante. Avec deux variantes : le rsultat peut tre plac soit dans le registre W, soit dans la mmoire RAM la place de loctet dcrment (la nouvelle valeur prend la place de lancienne). - Selon qu la suite de la dcrmentation loctet ait atteint ou pas la valeur zro, linstruction prend 1 ou 2 cycles dhorloge. - Encodage de linstruction:
13 0
00 1011 0
dfff
ffff
B (W) 0 ou (registre) 1 De 000 1100 100 1111 Adresse de la RAM (entre 0C et 4F) o se trouve loctet quon veut dcrmenter.
- Cette instruction est gnralement suivie par linstruction CALL. - Exemples de programmation : 1) DECFSZ 2F,0 (dcrmente loctet se trouvant ladresse 2F, et range le rsultat dans W. Si le rsultat est zro, ignore linstruction suivante).
85 2) DECFSZ 2F,1 (mme chose, mais cette fois le rsultat est rang ladresse 2F. La nouvelle valeur prend la place de lancienne).
86
GOTO
- Branchement inconditionnel. Va de faon inconditionnelle ladresse indique de suite (adresse de dmarrage du sous-programme). Il peut sagir aussi bien dune adresse que dune label. Cette instruction interrompt lexcution squentielle des instructions et oblige poursuivre le programme dune adresse compltement ailleurs. A la diffrence de linstruction CALL (qui fait toujours revenir le programme principal lendroit o il avait t abandonn) , linstruction GOTO provoque labandon complet de la squence et peut conduire soit une toute autre action, soit larrt total du programme. - Cette instruction prend 2 cycles dhorloge. - Encodage de linstruction :
13 0
10 1kkk kkkk kkkk 2 Adresse de lEEPROM de programme, laquelle le programme doit se rendre pour poursuivre (adresse comprise entre 005 et 3FF). - Exemple de programmation GOTO ALLUMAGE Aprs cette instruction, le PC (Program Counter) est charg avec la valeur de ladresse laquelle commence le programme ALLUMAGE.
87
INCF
INCrement File - Incrmente la valeur de loctet situ (en mmoire RAM) ladresse indique de suite (adresse comprise entre 0C et 4F) ; avec deux variantes : le rsultat peut tre plac soit dans le registre W, soit dans la mmoire RAM la place de loctet quon a incrment (la nouvelle valeur prend la place de lancienne). - Cette instruction affecte le bit Z du registre dtat - 1 cycle dhorloge - Encodage de linstruction:
13 0
00 1010 0
dfff
ffff
A (W) 0 ou (registre) 1 De 000 1100 100 1111 Adresse de la RAM (entre 0C et 4F) o se trouve loctet quon veut incrmenter.
- Exemples de programmation : 1) INCF NOMBRE,0 (incrmente loctet se trouvant ladresse NOMBRE, et range le rsultat dans W) NOMBRE,1 (mme chose, mais cette fois le rsultat est rang ladresse NOMBRE. La nouvelle valeur prend la place de lancienne).
2) INCF
88
INCFSZ
INCcrement File, Skip if Zero - Incrmente la valeur de loctet situ (en mmoire RAM) ladresse indique de suite (adresse comprise entre 0C et 4F), et effectue un test : loctet a-t-il atteint zro ? Si OUI, ignore linstruction suivante. Avec deux variantes : le rsultat peut tre plac soit dans le registre W, soit dans la mmoire RAM la place de loctet incrment (la nouvelle valeur prend la place de lancienne). - Selon qu la suite de lincrmentation loctet ait atteint ou pas la valeur zro, linstruction prend 1 cycle ou deux dhorloge. - Encodage de linstruction:
13 0
00 1111 0
dfff
ffff
F (W) 0 ou (registre) 1 De 000 1100 100 1111 Adresse de la RAM (entre 0C et 4F) o se trouve loctet quon veut incrmenter.
- Cette instruction est gnralement suivie par CALL. - Exemples de programmation : 1) INCFSZ DATE,0 (incrmente loctet se trouvant ladresse DATE, et range le rsultat dans W. Si le rsultat est zro, ignore linstruction suivante).
89 2) INCFSZ DATE,1 (mme chose, mais cette fois le rsultat est rang ladresse DATE. La nouvelle valeur prend la place de lancienne).
90
IORLW
Inclusive OR Literal with W - Effectue une opration logique OU inclusif (Inclusive OR) entre la valeur immdiate du literal et loctet se trouvant dans le registre W. Le rsultat de lopration reste dans le registre W. - Le literal est un mot de 8 bits (de 00 FF) - Cette instruction affecte le bit Z du registre dtat - 1 cycle dhorloge - Encodage de linstruction :
13 0
11 1000 kkkk kkkk 3 8 Valeur de loctet avec lequel on veut effectuer le OU inclusif (valeur pouvant aller de 00 FF). - Table de vrit dune porte OU inclusif :
A B Q 0 0 0 0 1 1 1 0 1 1 1 1
En supposant que W contienne 49 (01001001) avant linstruction, aprs linstruction il contient FD. B5 = 10110101 49 = 01001001 OR = 11111101 (FD en hexa) Pourquoi cette instruction dans le set du 16F84 ? A quoi sert-elle ? Elle sert lorsque dans un octet on a besoin de forcer 1 un bit en particulier (ou certains bits en particulier). Pour cela il suffit de prparer un masque, cest dire on octet compos de 0 (aux emplacements o se trouvent les bits ignorer) et de 1 (aux emplacements o se trouvent les bits quon veut forcer 1). Exemple : on souhaite forcer 1 les bits 7 et 6 de loctet 01111010. On prpare alors le masque 11000000 et on fait un OU logique entre loctet et le masque. Comme ceci : 01111010 (octet) 11000000 (masque) Ce qui donne : 11111010 (rsultat) Le rsultat de lopration permet donc bien de forcer 1 les bits 7 et 6 de loctet. Il se trouve quici le bit 6 tait dj 1. Mais le programme ne le savait pas. Linstruction IORLW permet de prciser les choses. Une fois forcs 1, on peut utiliser ces bits (ou loctet) comme on veut.
92
IORWF
Inclusive OR With File - Effectue une opration logique OU inclusif (Inclusive OR) entre loctet se trouvant dans le registre W et loctet situ (en mmoire RAM) ladresse situe de suite (adresse comprise entre 0C et 4F) ; avec deux variantes : le rsultat peut tre plac soit dans le registre W, soit dans la mmoire RAM la place de loctet utilis pour faire le OU inclusif (la nouvelle valeur prend la place de lancienne). - Cette instruction affecte le bit Z du registre dtat - 1 cycle dhorloge - Encodage de linstruction:
13 0
00 0100 0 4
dfff
ffff
(W) 0 ou (registre) 1 De 000 1100 100 1111 Adresse de la RAM (entre 0C et 4F) o se trouve loctet avec lequel on veut faire le OU inclusif. - Table de vrit dune porte OU inclusif :
A B Q 0 0 0 0 1 1 1 0 1 1 1 1
93 - Exemples de programmation : 1) 29,0 (effectue le OU inclusif entre loctet se trouvant dans W et celui situ ladresse 29, et range le rsultat dans W). En supposant que le contenu de ladresse 29 soit C7 (11000111) et que W contienne 69 (01101001), aprs linstruction on obtient EF (11101111). 2) IORWF 29,1 (mme chose, mais le rsultat est rang ladresse 29, la place de loctet utilis pour faire le OU inclusif). IORWF
Pourquoi cette instruction dans le set du 16F84 ? A quoi sert-elle ? Elle sert lorsque dans un octet on a besoin de forcer 1 un bit en particulier (ou certains bits en particulier). Pour cela il suffit de prparer un masque, cest dire on octet compos de 0 (aux emplacements o se trouvent les bits ignorer) et de 1 (aux emplacements o se trouvent les bits quon veut forcer 1). Exemple : on souhaite forcer 1 les bits 7 et 6 de loctet 01111010. On prpare alors le masque 11000000 et on fait un OU logique entre loctet et le masque. Comme ceci : 01111010 (octet) 11000000 (masque) Ce qui donne : 11111010 (rsultat) Le rsultat de lopration permet donc bien de forcer 1 les bits 7 et 6 de loctet. Il se trouve quici le bit 6 tait dj 1. Mais le programme ne le savait pas. Linstruction IORLW permet de prciser les choses. Une fois forcs 1, on peut utiliser ces bits (ou loctet) comme on veut.
94
MOVF
MOVe File - Cette instruction peut faire deux choses : 1) soit porter dans W le contenu situ (en mmoire RAM) ladresse indique de suite (adresse comprise entre 0C et 4F), avec loption de programmation ,0 2) soit copier loctet sur lui-mme au mme emplacement de la RAM, avec loption de programmation ,1 Bien que a paraisse comique de copier le contenu dun registre sur luimme, en fait - tant donn que cette opration modifie le bit Z du registre dtat - elle est utile quand on a besoin de faire un test zro sur loctet, en toute scurit. - Cette instruction affecte le bit Z du registre dtat - 1 cycle dhorloge - Encodage de linstruction:
13 0
00 1000 0 8
dfff
ffff
(W) 0 ou (registre) 1 De 000 1100 100 1111 Adresse de la RAM (entre 0C et 4F) o se trouve loctet quon veut traiter.
95 - Exemples de programmation : 1) 1) MOVF MOVF PORTB,0 18,1 (porte dans W ltat es lignes du port B). (copie le contenu de ladresse 18 sur lui-mme).
96
MOVLW
MOVe Literal to W - Charge de manire immdiate le literal dans le registre W - Le literal est un mot de 8 bits (de 00 FF) - 1 cycle dhorloge - Encodage de linstruction :
13 0
97
MOVWF
MOVe W to File - Prend le contenu du registre W et le met (dans la mmoire RAM) ladresse indique de suite (adresse de 0C 4F) - 1 cycle dhorloge - Encodage de linstruction:
13 0
00 0000 1fff ffff 0 0 Adresse de la RAM (entre 0C et 4F) laquelle on veut mettre la valeur du registre W. - Exemple de programmation : MOVWF 0D (crit le contenu de W ladresse RAM 0D).
98
NOP
No OPeration - Linstruction la plus paresseuse ! Ne fait rien. Elle sert juste occuper le processeur pour laisser passer un peu de temps (1 cycle dhorloge). Sutilise essentiellement pour crer des temporisations. - 1 cycle dhorloge - Encodage de linstruction:
13 0
00 0000 0 0
0xx0 0
0000 0
99
OPTION
load OPTION register - NB : cette instruction est spcifique au 16F84. Microchip recommande de ne pas lutiliser, dans le but de laisser les programmes (crits pour ce type de microcontrleur) compatibles avec ceux crits pour dautres modles de PIC. Il suffit de le savoir. Mais ceci nest pas un obstacle pour nous, du fait que notre intrt est exclusivement tourn vers le 16F84. - Charge le registre OPTION, cest -dire le registre qui sert configurer le TMR0 ( lhorloge interne du microcontrleur) ainsi que le prdiviseur. - Sagissant dun registre lecture/criture simultane, on ne peut pas y crire directement, mais il faut obligatoirement transiter par le registre W. En programmation, on commence par crire loctet de configuration dans W. Puis linstruction OPTION - en mme temps quelle adresse ce registrey copie automatiquement loctet de configuration.
100
RETFIE
RETurn From IntErrupt - Retour au programme principal aprs excution dun sous-programme dinterruption. Charge le PC (Program Counter : compteur dinstructions) avec la valeur qui se trouve au sommet de la pile (stack) ; ce qui provoque le retour au programme principal. - Lorsquune interruption est demande, le microcontrleur, avant de sauter ladresse 004 de lEEPROM mmoire de programme, sauve la valeur du Program Counter dans la pile. Cette valeur - comme dans une pile dassiettes - se place tout en haut de la pile (dans laquelle il y a seulement 8 places). A la fin du sous-programme de rponse linterruption, le C rencontre linstruction RETFIE par laquelle il rcupre la valeur se trouvant au sommet de la pile (correspondant la dernire valeur entre) et la positionne dans le Program Counter, faisant ainsi revenir le programme son flux normal (pile de type LIFO : Last In, First Out). - Aprs cette instruction, le pointeur de pile (stack pointer) se positionne tout en haut de la pile, et le bit du GIE (General Interrupt Enable) du registre INTCON (bit7) bascule 1. - Cette instruction prend 2 cycles dhorloge - Encodage de linstruction:
13 0
00 0000 0 0
0000 0
1001 9
101
RETLW
RETurn from subroutine with Literal in W - Instruction jusqu un certain point similaire RETURN, en ce sens quelle ferme un sous-programme et provoque le retour au programme principal lendroit o il avait t abandonn ; mais avec une particularit en plus : charge dans le registre W la valeur du literal. - Le literal est un mot de 8 bits (de 00 FF) - Cette instruction prend 2 cycles dhorloge - Encodage de linstruction:
13 0
11 01xx kkkk kkkk 3 4 Valeur de loctet avec laquelle on veut charger W en rentrant du sous-programme (valeur pouvant aller de 00 FF).
102
RETURN
RETURN from subroutine - Retour dun sous-programme. Le PC (Program Counter) est charg avec ladresse se trouvant au sommet de la pile. - Cest linstruction qui ferme un sous-programme et provoque le retour au programme principal lendroit auquel il avait t abandonn. - Cette instruction prend 2 cycles dhorloge - Encodage de linstruction:
13 0
00 0000 0 0
0000 0
1000 8
103
RLF
Rotate Left File - Rotation gauche.
C 7
- Effectue le dplacement dune position vers la gauche des bits de loctet situ (en mmoire RAM) ladresse indique de suite (adresse comprise entre 0C et 4F) en utilisant le bit de CARRY du registre dtat : le contenu du bit de CARRY devient le nouveau bit 0 de loctet ayant effectu la rotation gauche, tandis que lancien bit 7 entre dans CARRY ; avec deux variantes : le rsultat de la rotation peut tre rang soit dans le registre W, soit dans la mmoire RAM la place de loctet utilis pour effectuer la rotation (la nouvelle valeur prend la place de lancienne). - NB : Avant dutiliser cette instruction il convient de pralablement effacer le bit de CARRY. Car, supposer que dans CARRY il ait un 1, aprs une rotation gauche de 00000001 on aurait 00000011 alors quon sattendait 00000010. Linstruction qui efface le bit de CARRY est : BCF STATUS,0 (efface le bit zro du registre STATUS, cest -dire le bit de CARRY). - Cette instruction affecte le bit C du registre dtat - 1 cycle dhorloge
00 1101 0
dfff
ffff
D (W) 0 ou (registre) 1 De 000 1100 100 1111 Adresse de la RAM (entre 0C et 4F) o se trouve loctet dont on veut effectuer la rotation gauche.
105
RRF
Rotate Right File - Rotation droite.
C 7
- Effectue le dplacement dune position vers la droite des bits de loctet situ (en mmoire RAM) ladresse indique de suite (adresse comprise entre 0C et 4F) en utilisant le bit de CARRY du registre dtat : le contenu du bit de CARRY devient le nouveau bit 7 de loctet ayant effectu la rotation droite, tandis que lancien bit 0 entre dans CARRY ; avec deux variantes : le rsultat de la rotation peut tre rang soit dans le registre W, soit dans la mmoire RAM la place de loctet utilis pour effectuer la rotation (la nouvelle valeur prend la place de lancienne). - NB : Avant dutiliser cette instruction il convient de pralablement effacer le bit de CARRY . Linstruction qui efface le bit de CARRY est : BCF STATUS,0 (efface le bit zro du registre STATUS, cest -dire le bit de CARRY). - Cette instruction affecte le bit C du registre dtat - 1 cycle dhorloge
00 1100 0
dfff
ffff
C (W) 0 ou (registre) 1 De 000 1100 100 1111 Adresse de la RAM (entre 0C et 4F) o se trouve loctet dont on veut effectuer la rotation droite.
107
SLEEP
- Mise en veilleuse. Cette instruction sutilise non pas pour mettre le C hors tension, mais pour arrter le squencement des instructions (ralentir le signal dhorloge jusqu lextrme limite : la frquence zro). Pendant cette mise en veilleuse, lhorloge externe (faisant partie de ce que nous avons appel le cortge des invariants) est coupe. Le flux du programme est bloqu. Seul le chronomtre du Watch Dog (chien de garde) reste actif. La consommation du botier (qui normalement est de 2 mA) tombe 30 A. Parmi les causes pouvant rveiller le C retenons : une demande dinterruption, ou un signal provenant du chronomtre (timer) du chien de garde. - Cette instruction affecte deux bits du registre dtat : TO (Time Out) passe 1 PD (Power Down) passe 0 En plus, elle met zro le chronomtre du chien de garde, ainsi que le pr diviseur. - 1 cycle dhorloge - Encodage de linstruction:
13 0
00 0000 0 0
0110 6
0011 3
108
SUBLW
SUBtract Literal with W - Soustrait le literal (valeur immdiate reprsente par un octet pouvant aller de 00 FF) du contenu du registre W, et place le rsultat dans W. Literal - W = rsultat diminuende - diminuteur = diffrence
- Cette instruction affecte 3 bits du registre dtat : - le flag C (Carry) - le flag DC (Digit Carry) - le flag Z (Zero) - 1 cycle dhorloge - Encodage de linstruction:
13 0
11 110x kkkk kkkk 3 C Valeur de loctet (literal) reprsentant le diminuende (valeur pouvant aller de 00 FF).
109
SUBWF
SUBtract W from File - Soustrait la valeur contenue dans le registre W de la valeur se trouvant (en mmoire RAM) ladresse indique de suite (adresse comprise entre 0C et 4F) ; avec deux variantes : le rsultat (diffrence) peut tre rang soit dans le registre W, soit dans la mmoire RAM la place du diminuende. File (valeur se trouvant lemplacement RAM, le diminuende) - W (valeur contenue dans le registre W, le diminuteur ) Rsultat diffrence - Cette instruction affecte 3 bits du registre dtat : - le flag C (Carry) - le flag DC (Digit Carry) - le flag Z (Zero) - 1 cycle dhorloge - Encodage de linstruction:
13 0
00 0010 0 2
dfff
ffff
(W) 0 ou (registre) 1 De 000 1100 100 1111 Adresse de la RAM (entre 0C et 4F) laquelle on veut ranger la diffrence.
110
SWAPF
SWAP File - Echange les quatre bits de poids fort dun octet se trouvant (en mmoire RAM) ladresse indique de suite (adresse comprise entre 00 et 4F), avec ses propres quatre bits de poids faible : 1 0 0 0 1 0 1 1 devient 1 0 1 1 1 0 0 0 Avec deux variantes : le rsultat de lchange peut tre plac soit dans le registre W, soit dans la mmoire RAM en lieu et place de loctet utilis pour effectuer le swap. - 1 cycle dhorloge - Encodage de linstruction:
13 0
00 1110 0
dfff
ffff
E (W) 0 ou (registre) 1 De 000 1100 100 1111 Adresse de la RAM (entre 0C et 4F) o se trouve loctet dont on veut changer les quartets.
111
TRIS
TRIState port - NB : cette instruction est spcifique au 16F84. Microchip recommande de ne pas lutiliser, dans le but de laisser les programmes (crits pour ce type de microcontrleur) compatibles avec ceux crits pour dautres modles de PIC. Il suffit de le savoir. Mais ceci nest pas un obstacle pour nous, du fait que notre intrt est exclusivement tourn vers le 16F84. - Charge le registre TRIS (A ou B), et met les lignes de port haute impdance. Ce registre configure, cest dire dfinit le sens de fonctionnement de chacune des lignes des ports A et B ; assigne chaque ligne soit le rle dentre, soit le rle de sortie, sans pour autant provoquer aucune entre ni aucune sortie. - Il sagit dun registre de 8 bits, pouvant tous se programmer individuellement par 0 ou par 1 : 0 = la ligne de port (qui lui correspond) est configure comme sortie 1 = la ligne de port (qui lui correspond) est configure comme entre - Sagissant dun registre lecture/criture simultane, on ne peut pas y crire directement, mais il faut obligatoirement transiter par le registre W. En programmation, on commence par crire loctet de configuration dans W. Puis linstruction TRIS (A ou B), en mme temps quelle adresse ce registre, copie automatiquement loctet de configuration dans le port A ou dans le port B.
00 0000 0110 0 0 6
0fff Ne peut prendre que deux valeurs : 101 (pour dsigner le port A) 110 (pour dsigner le port B)
On charge dans le registre W loctet de configuration de port (ligne 2 en entre, toutes les autres lignes en sortie), que linstruction TRIS valide. A partir de ce moment le port est configur, mais aucune donne ny entre, aucune donne ny sort. Les lignes du port sont mises en haute impdance (tristate).
113
XORLW
EXclusive OR Literal and W - Effectue un OU exclusif (Exclusive OR) entre la valeur immdiate du literal et loctet se trouvant dans le registre W. Le rsultat est rang dans W. - Le literal est un mot de 8 bits (de 00 FF). - Un OR exclusif permet de comparer deux octets bit bit. Si les bits de mme poids sont au mme niveau, le rsultat est zro. Si par contre ils sont des niveaux diffrents, le rsultat est 1. Exemple de XOR entre deux octets : 00110011 01110010 rsultat = 01000001 - Un OR exclusif permet dinverser un tat logique. Exemple : Soit au dpart loctet 11111111. Si le XOR se fait avec 00000000 , rien ne change ; le rsultat est : 11111111. Si par contre le XOR se fait avec 00000001,le rsultat est :11111110 (Alors que les zros ne font rien changer, les 1 provoquent un basculement dtat). - Table de vrit dune porte OU exclusif :
A 0 0 1 1
B 0 1 0 1
Q 0 1 1 0
114 - Cette instruction affecte le bit Z du registre dtat - 1 cycle dhorloge - Encodage de linstruction:
13 0
11 1010 kkkk kkkk 3 A Valeur de loctet avec lequel on veut effectuer le OU exclusif (valeur pouvant aller de 00 FF). Pourquoi cette instruction dans le set du 16F84 ? A quoi sertelle pratiquement ? Elle sert lorsque dans un octet on a besoin dinverser un bit en particulier (ou certains bits en particulier). Pour cela il suffit de prparer un masque, cest dire on octet compos de 0 (aux emplacements o se trouvent les bits ignorer) et de 1 (aux emplacements o se trouvent les bits quon veut inverser). Exemple : on souhaite inverser les bits 7, 6, 5 et 4 de loctet 01111010. On prpare alors le masque 11110000 et on fait un OU logique entre loctet et le masque. Comme ceci : 01111010 (octet) 11110000 (masque) Ce qui donne : 10001010 (rsultat) Linstruction XORLW a donc bien invers ltat logique des bits 7, 6, 5 et 4 de loctet se trouvant dans W. Les bits qui taient 0 sont passs 1, et inversement.
115
XORWF
Exclusive OR W and File - Effectue un OU exclusif (Exclusive OR) entre loctet se trouvant dans le registre W et loctet situ (en mmoire RAM) ladresse indique de suite (adresse comprise entre 0C et 4F) ; avec deux variantes : le rsultat peut tre rang soit dans le registre W, soit dans la mmoire RAM la place de loctet utilis pour effectuer le OU exclusif (la nouvelle valeur prend la place de lancienne). - Un OR exclusif permet de comparer deux octets bit bit. Si les bits de mme poids sont au mme niveau, le rsultat est zro. Si par contre ils sont des niveaux diffrents, le rsultat est 1. Exemple de XOR entre deux octets : 00110011 01110010 rsultat = 01000001 - Un OR exclusif permet dinverser un tat logique. Exemple : Soit au dpart loctet 11111111. Si le XOR se fait avec 00000000 , rien ne change ; le rsultat est : 11111111. Si par contre le XOR se fait avec 00000001, le rsultat est :11111110. (Alors que les zros ne font rien changer, les 1 provoquent un basculement dtat). - Table de vrit dune porte OU exclusif :
A 0 0 1 1
B 0 1 0 1
Q 0 1 1 0
116 - Cette instruction affecte le bit Z du registre dtat - 1 cycle dhorloge - Encodage de linstruction:
13 0
00 0110 0 6
dfff
ffff
(W) 0 ou (registre) 1 De 000 1100 100 1111 Adresse de la RAM (entre 0C et 4F) o se trouve loctet avec lequel on veut effectuer le OU exclusif.
Pourquoi cette instruction dans le set du 16F84? A quoi sertelle pratiquement? Elle sert essentiellement lorsque dans un octet on a besoin dinverser un bit en particulier (ou certains bits en particulier). Pour cela il suffit de prparer un masque, cest dire on octet compos de 0 (aux emplacements o se trouvent les bits ignorer) et de 1 (aux emplacements o se trouvent les bits quon veut inverser). Exemple : on souhaite inverser les bits 7, 6, 5 et 4 de loctet 01111010. On prpare alors le masque 11110000 et on fait un OU logique entre loctet et le masque. Comme ceci : 01111010 (octet) 11110000 (masque) Ce qui donne : 10001010 (rsultat) Linstruction XORWF a donc bien invers ltat logique des bits 7, 6, 5 et 4 de loctet en mmoire. Les bits qui taient 0 sont passs 1, et inversement.
117
x = valeur indiffrente : peut tre soit 0 soit 1. Lassembleur lui donne automatiquement la valeur 0 (forme recommande par Microchip)
118
a) Organigramme
119
STATUS,RP0
MOVLW b00000000
120
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; PROGRAMME ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ LOOP BSF PORTB,0 ;Allume la LED, car linstruction ; BSF met 1 (set). ;Dans le cas prsent, elle met 1 le ;bit zro du Port B (PORTB,0). GOTO END LOOP ;Le programme se reboucle. ;La LED reste indfiniment allume. ;Fin du programme.
121
Programme 2 a) Organigramme
122
STATUS,RP0
MOVLW b00000000
123
;Port B comme SORTIES. ;La notation b00000000 indique que ;la valeur 00000000 est interprter ;en tant que chiffre binaire. MOVWF TRISB BCF STATUS,RP0 ;Port B configur, mais encore en ;haute impdance (Trhee-state). ;Retour la page 0 du Register File.
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; PROGRAMME PRINCIPAL ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ MAIN BCF PORTB,0 ;LED teinte car linstruction ; BCF met 0 (clear). ;Ici, elle met 0 le bit 0 du ;Port B (PORTB,0). CALL BSF DELAI PORTB,0 ;Appelle le sous-programme de ;retard (DELAI). ;LED allume, car linstruction ; BSF met 1 (set). ;Ici elle met 1 le bit 0 du ;Port B (PORTB,0). ;On appelle nouveau le ;sous-programme de retard. ;Retour au programme principal.
CALL GOTO
DELAI MAIN
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; SOUS-PROGRAMME de TEMPORISATION ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DELAI DECFSZ COMPT1,1 ;Dcrmente COMPT1et - sil nest pas GOTO DELAI ; zro - va DELAI MOVLW .255 MOVWF COMPT1 DECFSZ COMPT2,1 GOTO DELAI MOVLW .255 MOVWF COMPT1 MOVLW .255 MOVWF COMPT2 RETURN END ;Charge la variable COMPT1 (adresse ;RAM 0C) avec 255 (en dcimal). ;Dcrmente COMPT2, et sil nest pas ; zro, va DELAI ;Recharge COMPT1 avec 255 ;Recharge COMPT2 avec 255 ;Fin du sous-programme DELAI ;Fin du programme.
124
125
PROGRAMME 3 a) Organigramme
126
STATUS,RP0
MOVLW b00000000
127
;Port B comme SORTIES. ;La notation b00000000 indique que ;la valeur 00000000 est interprter ;en tant que chiffre binaire. MOVWF TRISB BCF GOTO STATUS,RP0 MAIN1 ;Port B configur, mais encore en ;haute impdance (Trhee-state). ;Retour la page 0 du Register File. ;Renvoi ladresse correspondant ;la label MAIN1.
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; SOUS-PROGRAMME de TEMPORISATION ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ TEMPO MOVLW .255 ;Charge COMPT2 ( grande boucle ) MOVWF COMPT2 ;avec la valeur dcimale 255. DELAI2 MOVLW .255 MOVWF COMPT1 DELAI1 DECFSZ COMPT1,1 GOTO DELAI1 DECFSZ COMPT2,1 GOTO DELAI2 RETURN ;Charge COMPT1 ( petite boucle ) ;avec la valeur dcimale 255. ;Dcrmente COMPT1et - sil nest pas ; zro - va DELAI1 ;Dcrmente COMPT2, et sil nest pas ; zro, va DELAI2. ;Fin du sous-programme TEMPO.
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; PROGRAMME PRINCIPAL ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ MAIN1 MOVLW .2 ;On dfinit le nombre de cycles de la MOVWF nFOIS ;premire phase (ici : 2 clignotements) LED1 BCF PORTB,0 ;LED teinte car linstruction ; BCF met 0 (clear). ;Ici, elle met 0 le bit 0 du ;Port B (PORTB,0). ;Appelle le sous-programme de ;retard (TEMPO). ;LED allume, car linstruction ; BSF met 1 (set). ;Ici elle met 1 le bit 0 du ;Port B (PORTB,0). ;On appelle nouveau le ;sous-programme de retard.
CALL BSF
TEMPO PORTB,0
CALL
TEMPO
128
DECFSZ nFOIS,1 GOTO LED1 GOTO MAIN2 ;Dcrmente le nombre de cycles ;affects LED1, et si le compteur ;nest pas arriv 0, effectue un ;nouveau cycle. Si par contre nFOIS ;est 0, linstruction GOTO LED1 ;est ignore et le programme saute ; GOTO MAIN2 . ;On dfinit le nombre de cycles de la ;deuxime phase (ici :5 clignotements) ;LED teinte car linstruction ; BCF met 0 (clear). ;Ici, elle met 0 le bit 1 du ;Port B (PORTB,1). ;Appelle le sous-programme de ;retard (TEMPO). ;LED allume, car linstruction ; BSF met 1 (set). ;Ici elle met 1 le bit 1 du ;Port B (PORTB,1). ;On appelle nouveau le ;sous-programme de retard. ;Dcrmente le nombre de cycles ;affects LED2, et si le compteur ;nest pas arriv 0, effectue un ;nouveau cycle. Si par contre nFOIS ;est 0, linstruction GOTO LED2 ;est ignore et le programme saute ; GOTO MAIN1 . ;Fin du programme.
MAIN2 LED2
CALL BSF
TEMPO PORTB,1
CALL
TEMPO
END
129
130
PROGRAMME 4
a) Organigramme
131
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; INITIALISATIONS ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CLRF BSF PORTB STATUS,RP0 ;Efface les 8 bits du Port B. ;Met 1 (set) le bit 5 (RP0) du ;registre dtat (STATUS). ;Autrement dit : slectionne la ;page 1 du Register File pour atteindre ;le Registre TRISB ( ladresse 86).
132
MOVLW 00 MOVWF TRISB MOVLW 0xFF MOVWF TRISA ;Met des zros dans le registre W, ;pour les porter ensuite dans le ;Registre TRISB ;matrialisant ainsi notre intention ;dutiliser les 8 lignes du Port B ;comme sorties. ;Met 11111111 dans le Registre W, ;pour les porter ensuite dans le ;Registre TRISA ;matrialisant ainsi notre intention ;dutiliser les 8 lignes du Port A ;comme entres. ;Retour la page 0 du Register File. ;Renvoi au programme principal.
BCF GOTO
STATUS,RP0 MAIN
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; SOUS-PROGRAMMES ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ TEMPO MOVLW .255 MOVWF COMPT2 DELAI2 MOVLW .255 MOVWF COMPT1 DELAI1 DECFSZ COMPT1,1 GOTO DELAI1 ;Dbut du sous-programme TEMPO ;Charge COMPT2 ( grande boucle ) ;avec la valeur dcimale 255 ;Charge COMPT1 (petite boucle ) ;avec la valeur dcimale 255 ;Dcrmente COMPT1, et sil nest pas ;arriv zro, va DELAI1. Ces deux ;instructions permettent de vider la ;variable COMPT1 (qui est une zone ;RAM et qui pourrait, au dmarrage du ;systme, contenir une valeur ;alatoire), pour ensuite lui donner ;une valeur prcise. ;Dcrmente COMPT2, et sil nest ;pas zro, va DELAI2, grande ;boucle engendrant un retard long ;COMPT2 fois la valeur de COMPT1. ;Fin du sous-programme TEMPO ;et retour au programme principal ; la ligne situe juste aprs ;linstruction CALL TEMPO . ;Dbut du sous-programme LED BSF PORTB,0 ;Allume la LED.
LED
133
CALL BCF CALL RETURN TEMPO PORTB,0 TEMPO ;Appel du sous-programme de ;temporisation. ;Eteint la LED. ;Nouvel appel du sous;programme de temporisation. ;Fin du sous-programme LED .
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; PROGRAMME PRINCIPAL ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ MAIN BTFSS PORTA,4 ;Est-ce que lentre RA4 est active ? GOTO CALL GOTO END MAIN LED MAIN ;NON. Alors on continue tester. ;OUI. Dans ce cas on appelle le ;sous-programme LED. ;Retour au programme principal.
134
PROGRAMME 5
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; VECTEURS ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ORG 00 ;Vecteur de Reset. GOTO START ORG GOTO 04 INT_VECT ;Vecteur dinterruption.
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; START ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ START ORG 05 ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; INITIALISATIONS ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ BSF STATUS,RP0 ;On passe en Page 1. ;Port B en sortie.
135
MOVLW b00000111 MOVWF OPTION_REG BCF CLRF CLRF STATUS,RP0 TMR0 PORTB ;On configure OPTION. .Le pr diviseur divise par 255. ;On revient en Page 0. ;Timer zro. ;Toutes LED teintes. ;On configure INTCON. ; - GIE (bit 7) 1 ; - T0IE (bit 5) 1 ; - tous les autres bits zro.
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; PROGRAMME PRINCIPAL ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ LOOP GOTO LOOP ;Boucle introduite juste pour occuper ;le processeur, car le but du programme ;est dattendre lapparition du signal ;dinterruption. ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; PROGRAMME dINTERRUPTION ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INT_VECT MOVWF SAVE_W MOVF STATUS,W MOVWF SAVE_STAT BCF INTCON,T0IF ;Phase de PUSH (store). ;On sauve le Registre W ;ainsi que le Registre ;STATUS. ;On met zro le flag ;T0IF qui passe 1 chaque ;dbordement du TMR0 ;(bit 2). ;On allume la LED RB0. ;On teint la LED RB0. ;Phase de POP (restore). ;On remet en place le :Registre STATUS, ainsi ;que le Registre W.
;Lorsquune interruption est gnre, ;le PIC met automatiquement zro le ;bit GIE du Registre INTCON pendant ;toute la dure dexcution du ;sous-programme dinterruption (pour
136
;empcher la prise en compte dune ;nouvelle interruption pouvant surgir, ;alors quil est justement en train den ;traiter une. (On dit que pendant ce ;temps-l les interruptions sont ;masques). :Linstruction RETFIE, en mme temps ;quelle provoque le retour au ;programme principal, remet 1 le bit ;GIE (Global Interrupt Enable). END
137
PROGRAMME 6
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; VECTEURS ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ORG 00 ;Vecteur de Reset. GOTO START ORG GOTO 04 INT_VECT ;Vecteur dinterruption.
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; START ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ START ORG 05 ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; INITIALISATIONS ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ BSF STATUS,RP0 ;On passe en Page 1.
138
MOVLW b00000000 MOVWF TRISB MOVLW b00000111 MOVWF OPTION_REG BCF CLRF CLRF STATUS,RP0 TMR0 PORTB ;Port B en sortie. ;On configure OPTION. .Le pr diviseur divise par 255. ;On revient en Page 0. ;Timer zro. ;Toutes LED teintes. ;On configure INTCON. ; - GIE (bit 7) 1 ; - T0IE (bit 5) 1 ; - tous les autres bits zro.
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; PROGRAMME PRINCIPAL ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ MAIN BSF PORTB,1 ;On allume la LED (BR1) et on la GOTO MAIN ;laisse toujours allume, en attendant ;lapparition dune interruption. ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; PROGRAMME dINTERRUPTION ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INT_VECT MOVWF SAVE_W MOVF STATUS,W MOVWF SAVE_STAT BCF INTCON,T0IF ;Phase de PUSH (store). ;On sauve W ;et STATUS dans la RAM. ;On met zro le flag ;T0IF qui passe 1 chaque ;dbordement du TMR0 ;(bit 2). ;On allume la LED RB0. ;On teint la LED RB0. ;Phase de POP (restore). ;On remet en place :STATUS et W.
;Lorsquune interruption est gnre, ;le PIC met automatiquement zro le ;bit GIE du Registre INTCON pendant ;toute la dure dexcution du ;sous-programme dinterruption (pour
139
;empcher la prise en compte dune ;nouvelle interruption pouvant surgir, ;alors quil est justement en train den ;traiter une. (On dit que pendant ce ;temps-l les interruptions sont ;masques). :Linstruction RETFIE, en mme temps ;quelle provoque le retour au ;programme principal, remet 1 le bit ;GIE (Global Interrupt Enable). END
140
PROGRAMME 7
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; INITIALISATIONS ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ START ORG 05 ;Saut introduit intentionnellement ;pour passer au-dessus des adresses ;EEPROM 01 02 03 et 04, ;et obliger le programme dmarrer ; ladresse 05. BSF STATUS,RP0 ;On passe en Page 1 pour atteindre ;TRISB (adresse 86) et OPTION ;(adresse 81). ;Port B configur en sortie (0=sortie). ;Pr diviseur affect au TMR0, et
141
MOVWF OPTION_REG BCF STATUS,RP0 ;configurer pour diviser par 32. ;On revient en Page 0.
MOVLW .125 MOVWF COMPT1 MOVLW b10100000 MOVWF INTCON ;On configure le Registre INTCON : ; - GIE (bit 7) 1 ; - T0IE (bit 5) 1 ; - tous les autres bits zro
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; PROGRAMME PRINCIPAL ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ LOOP1 GOTO LOOP1 ;Boucle introduite pour occuper le ;processeur, car le but principal du ;programme est dattendre lapparition ;du signal dinterruption pour ;dclencher lanimation du chenillard. ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; PROGRAMME dINTERRUPTION ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INT_VECT MOVLW b00000001 ;On allume la LED MOVWF SHIFT ;branche sur RB0, MOVF SHIFT,0 ;en transitant par MOVWF PORTB ;la variable SHIFT. BCF RLF STATUS,0 SHIFT,1 ;Pour crer un effet de ;chenillard, on utilise ;linstruction RLF (Rotate ;Left File) laquelle : ; 1) provoque un glissement (rotation) ; gauche (Left), et ; 2) insre le contenu du bit de CARRY ; dans le bit 0 du Registre STATUS. ; Comme on ignore la valeur (0 ou 1) ; de la CARRY, il est impratif de ; leffacer au pralable. SHIFT,4 ;Lorsque de rotation en
BTFSC rotation
SWAPF
;le 1 baladeur atteint le bit 4, on ;provoque un SWAP (croisement) entre ;le demi octet de poids faible et le demi ;octet de poids fort (on inverse les ;demi octets) SHIFT,1 ;Aprs chaque rotation, loctet est ;gard dans le mme Registre SHIFT, ;pour y voluer. DELAI ;On appelle le sous programme DELAI
CALL
142
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; SOUS-PROGRAMME de TEMPORISATION ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DELAI MOVLW .6 MOVWF TMR0 MOVF BTFSS TMR0,0 STATUS,Z ;On initialise le TMR0 avec la valeur ;6 (dcimal), afin quil dborde ;aprs 250 impulsions. ;On porte la valeur du TMR0 dans ;W pour pouvoir la tester : ;a-t-elle vu arriver (256 6) ;250 impulsions ? ;Cest dire : est-ce que le TMR0 ;est arriv FF ? ;Si NON : on continue tester. ;Si OUI : on recharge TMR0 ;avec 6 (dcimal) et ensuite ;on dcrmente la variable COMPT1 ;Est-ce que COMPT1 = 0 ? ;NON : on continue dcrmenter. ;OUI : 1 seconde sest coule. ;On recharge ;le TMR0. ;On recharge ;la variable COMPT1. ;Fin du sous-programme DELAI. ;Fin du programme.
TEST
143
MPLAB
144 Il offre beaucoup de flexibilit aux dveloppeurs, notamment grce aux nombreuses fentres pouvant tre ouvertes tout moment lors dune mise au point, permettant de voir le contenu dun quelconque emplacement mmoire et dun quelconque registre.
145
146
Pour pouvoir tre install, MPLAB ncessite la configuration minimale suivante : - un PC compatible 486 ou mieux ; - Microsoft Windows depuis 3.1 jusqu la version la plus rcente ; - cran VGA ; - 8 Mga de mmoire (32 Mga recommands) ; - 20 Mga despace disponible sur le disque dur ; - la souris.
147
MPLAB sinstalle automatiquement. Pendant la procdure dinstallation, qui dmarre toute seule, plusieurs fentres vont souvrir. La premire est celle qui vous souhaite la bienvenue et vous informe que vous vous prparez installer la version 5.20 de MPLAB . Cliquez sur le bouton Next.
148 Dans la fentre suivante, dcochez les lments que vous ne souhaitez pas installer.
A moins que vous ayez achet un simulateur ou un mulateur (chose dont je doute fort !), vous ne devriez installer que les outils logiciels courants, et laide. Dcochez les autres. Cliquez ensuite sur le bouton Next.
149
Dans la fentre Select Language Components, vous ne devriez maintenir actif que tout ce qui se rapporte Windows. Dcochez tout ce qui se rapporte au DOS (Je naime pas les programmes tournant sous DOS. Vous non plus, jimagine ! ).
150 La fentre suivante (Select Destination Directory) vous indique le chemin que linstallation va prendre dans votre PC.
Acceptez, en cliquant sur Next. La fentre suivante vous demande si vous voulez crer des copies de sauvegardes des fichiers que linstallation pourrait tre amene remplacer.
151
152 Dans la fentre suivante (Add to Start Menu ?) acceptez suggestion Yes . la
154 Puis acceptez encore ce qui vous est propos dans la fentre qui suit :
155 Vous arrivez enfin la dernire fentre : celle qui vous dit que maintenant tout est prt pour que linstallation dmarre de vrai ! Cliquez sur Next : cest parti.
156 Une fois linstallation termine (Installation Completed !), vous pouvez ignorer le Readme propos. Cliquez sur MPLAB.EXE pour crer un raccourci. Vous pouvez dmarrer. Lenvironnement de dveloppement de MPLAB est vous !
157
158
Comme lon sait que dans tout logiciel bien conu plus il y a doutils disponibles et plus le travail est facile, la premire vidence est que MPLAB est un logiciel sympathique. A ajouter aussi que MPLAB est un logiciel sr, et quil possde plusieurs points dentre.
159 MPLAB est un logiciel sr : vous pouvez lutiliser sans vous faire le moindre souci, car il ne vous laissera jamais modifier ou supprimer quoi que ce soit prsentant le moindre danger pour lintgrit des fichiers sans vous mettre en garde et vous demander de confirmer la commande; MPLAB possde plusieurs points dentre : en ce sens que vous pouvez effectuer la mme tche en empruntant des chemins diffrents, sans obligatoirement obir un mode demploi prtabli. Il suffit, la plupart des fois, dadapter et de croiser les grilles cran ouvertes sur le bureau. Eu gard cette souplesse, cest--dire : tant donn quil est possible demprunter diffrents chemins pour accomplir la mme tche, la manire dcrire un programme et de lassembler que je vais vous indiquer, est seulement lune des manires possibles. Au fur et mesure que vous vous familiariserez avec MPLAB, vous en dcouvrirez dautres.
160
161
MPLAB vous rappelle que le nom du projet doit imprativement tre suivi de lextension .pjt
162
Dans le champ File Name entrez le nom que vous voulez donner votre projet (nous avons convenu de lappeler phase1) suivi de .pjt (phase1.pjt).
163
Dans cette fentre : a) le Target Filename (le nom du fichier cible, cest dire celui auquel vous voulez aboutir) doit correspondre celui que vous voulez crer, portant donc lextension .hex (phase1.hex) ;
164 b) le Development Mode se rapporte bien au MPLABSIM Simulator PIC 16F84 et non pas un autre mode de dveloppement (sinon cliquez sur la touche Change et modifiez en consquence; puis cliquez en rpondant toujours OK) ; b) le Language Tool Suite doit tre celui de Microchip. Aprs ces vrifications, cliquez sur la touche OK. Ds lors, le projet est cr. Il contient les paramtres qui lui sont ncessaires, et vous pourrez vous y rfrer par la suite.
165
Cest partir de maintenant que lcriture proprement parler des instructions du programme peut dmarrer.
Cest celle de lditeur de texte de MPLAB. Elle est prte recevoir les lignes de votre programme. Agrandissez-la plein cran, et commencez la frappe. Pour sparer les champs (labels, instructions, oprandes et commentaires) servez-vous de la touche de tabulation. Noubliez pas commentaires. dinsrer des ; (point-virgule) avant les
167 Lorsque toutes les lignes du programme ont t saisies, allez dans : File Save As...
168 Dans le champ File Name demandant le nom sous lequel vous voulez sauvegarder le fichier, tapez le nom du programme - qui doit tre imprativement le mme que celui du projet, suivi de lextension .asm ainsi que MPLAB vous le rappelle (phase1.asm) - ou allez le chercher dans la liste droulante, au moyen de lascenseur. Puis terminez en cliquant sur la touche OK.
Ds lors, ce fichier extension .asm contient le programme source , que lon appelle plus couramment fichier source , ou tout simplement source . Ce fichier est sauvegard. Notez ou retenez bien son nom (phase1.asm), car vous aurez loccasion dy revenir.
169
170
Vous connaissez cette fentre pour lavoir vue lors de louverture du projet. Assurez-vous dabord que le nom du fichier figurant dans la zone Target Filename correspond celui qui vous intresse (phase1.hex). Le cas chant, modifiez en cliquant sur la touche Change.
171 Cette fentre comporte dj le nom du fichier cible (phase1.hex). Mais, ce stade, MPLAB demande quun nud soit cr entre le fichier cible et le fichier source. En bas, droite, une touche est disponible : Add Node. Un clic sur cette touche, ouvre la fentre Add Node.
Au moyen de lascenseur, cherchez-y le fichier de mme nom extension .asm (phase1.asm) et cliquez sur ce fichier pour que son nom sinscrive dans le champ Nom de fichier. Puis cliquez sur OK.
Mais cette fois, dans la zone Project Files, figurent les noms de deux fichiers : - celui extension .hex - et celui extension .asm
173
Cliquez sur OK pour verrouiller le nud entre MPLAB et MPASM (un autre utilitaire de lenvironnement intgr) et lier ainsi ces deux fichiers.
Ds lors, la compilation dmarre: les instructions du fichier phase1.asm crites en langage assembleur (celui utilisant les mnmoniques) sont transformes en une suite de 0 et de 1 (seul langage comprhensible par le 16F84) pour constituer le fichier phase1.hex
174 Il arrive quune compilation soit bonne du premier coup. A supposer que tel soit le cas, vous devriez voir souvrir la fentre suivante :
Par le message : Build completed successfully (la compilation sest acheve avec succs), cette fentre vous informe que lassemblage de votre fichier extension .asm (phase1.asm) a aboutit un fichier extension .hex (phase1.hex) Flicitations ! Cela veut dire que dans votre programme source vous navez commis aucune erreur.
175 Vous pourriez - tout au plus - voir apparatre des messages ou des warnings , cest dire des avertissements, des mises en garde. Bien que les messages et les warnings nempchent pas le droulement dun programme, il est tout de mme bon de leur jeter un coup dil et den comprendre les raisons. Il suffit de demander MPLAB de numroter les lignes de votre programme (en cliquant sur licne dans lune des barres des outils, en haut de lcran)
Puis, de vous reporter la ligne mentionne par chaque message ou warning et de lexaminer attentivement. A cette ligne le compilateur assembleur de MPASM na pas trouv une erreur proprement parler, mais une sorte dambigut, une anomalie, et il vous prvient que cela pourrait conduire une excution dfaillante de votre programme.
176
Vous revenez ainsi la fentre Build Results. Cela autant de fois que ncessaire, jusqu lire le message : Build completed successfully .
177
178
Cette manuvre effectue un Reset logiciel du programme quon veut simuler. En effet, le Program Counter est mis zro (adresse correspondant au vecteur Reset du 16F84).
179 La ligne de programme se trouvant cette adresse passe en surbrillance, tandis que dans la barre dtat (situe en bas de lcran) PC prend la valeur 00. Ensuite allez dans : Debug Run Step
En tapant sur le raccourci clavier F7 le PC (Program Counter) avance dun pas la fois, ainsi que vous pouvez le constater en lisant la valeur du Program Counter dans la barre dtat. Cest lexcution en mode pas pas.
180
(Deux empreintes de pas: Pas pas : F7) Icne situe dans la barre des outils, en haut de lcran. Devant une boucle, vous pourriez stopper la simulation soit en tapant sur le raccourci clavier F5, soit en cliquant sur licne du feu rouge :
181
182 Pour faire avancer le programme dans ce mode, tapez sur le raccourci clavier F8 ou cliquez de faon rpte sur licne montrant deux
empreintes de pas entrecoupes : Le programme sexcute alors selon un mode qui - en apparence ressemble au mode pas pas, mais qui en ralit ignore toutes les boucles. De ce fait, le temps de son excution est considrablement plus court. Larrt de la simulation peut se faire tout moment, soit en cliquant sur licne du feu rouge, soit en tapant sur la touche F6. Lon revient alors au dbut du programme.
183
Larrt de la simulation peut se faire tout moment, soit en cliquant sur licne du feu rouge
soit en tapant sur la touche F6. Dans les deux cas lon revient au dbut du programme.
184
Ouverture de fentres
En complment la simulation, vous pourriez avoir besoin de voir de plus prs comment volue une variable, une adresse, le contenu dun compteur ou dune quelconque zone mmoire. Pour ce genre dobservation, MPLAB met disposition un grand nombre de fentres (Windows) spcifiques. Il suffit daller soit dans : Window
Cette fentre permet douvrir les trois fentres principales : celle relative la pile (Stack Window), celle relative la RAM (File Register
185 Window), ou celle relative aux registres usage spcial (Special Function Register Window). Sinon on peut aller dans : Window Watch Windows New Watch Window
186
Cette manuvre ouvre une fentre comportant tous les noms des registres et variables utilis dans votre programme :
Il suffit de cliquer sur ce qui vous intresse, pour aussitt voir souvrir la fentre correspondante, dans laquelle toute variable subissant une modification au cours de lexcution du programme, change de couleur, attirant votre attention. Il est mme possible de suivre lvolution de plusieurs variables et davoir sous vos yeux, constamment ouvertes, plusieurs fentres. Pour cela, au moyen de lascenseur, slectionnez la ligne correspondant ce que vous voulez observer, et terminez - aprs avoir ventuellement slectionn dautres registres encore - en cliquant sur le bouton Add, puis sur le bouton Close. Ds lors, plusieurs fentres se positionnent sur lcran, range lune derrire lautre, comme les cartes dans la main dun joueur, que vous pouvez rendre actives souhait. Faites ensuite avancer le programme en mode pas pas (F7).
187
Si vous voulez mon conseil : nhsitez pas vous le procurer. Il fera de vous des programmeurs enthousiastes, car programmer avec le PicBASIC de MICRO ENGINEERING Labs (MEL) est extrmement facile. Il ny a rien de comparable entre la programmation en langage ASSEMBLEUR et la programmation en langage MEL PicBASIC. Bien quil existe dautres BASIC pour les microcontrleurs PIC, proposs par dautres Socits, celui de MEL est de loin le meilleur, car extrmement puissant et trs facile prendre en main. Alors un conseil : ne cdez pas la tentation de vous en procurer ou daccepter 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 mmoire les instructions de lancien BASIC, avec le risque de les mlanger et fatalement davoir corriger des erreurs. Faites donc ds prsent leffort de cet achat, et je vous assure que vous ne le regretterez pas. Le langage ASSEMBLEUR, larchitecture du
188 PIC, la Page 0, la Page1, le Registre STATUS, le Registre OPTION et tout le reste.. sera vite oubli. Vous ne verrez plus que votre programme. Cest comme si, pour prparer un programme commandant louverture 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 quavec le langage MEL PicBASIC il suffirait dcrire : - approchez-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 tches intermdiaires, votre place, sans que vous ayez besoin de les dtailler. Merveilleux, non ? Avant dexaminer chaque instruction une par une, il est indispensable de sarrter sur quelques particularits qui facilitent grandement lapprentissage du langage MEL PicBASIC.
189
Symbol
Avec la directive Symbol on peut associer un nom une variable ou une pin du microcontrleur. Ainsi dfinies, telle variable ou telle pin du microcontrleur peuvent alors tre plus facilement utilises dans lcriture dun programme. Par exemple : Symbol LED = Pin 0 Signifie : associe Pin 0 (cest dire RB0) le nom LED. Ainsi, par exemple linstruction : LED = 1 est plus facile lire dans le programme, car on comprend quelle allume la LED (met au niveau logique haut la pin 0 du Port B). Symbol permet de renommer un chiffre (le plus souvent) ou une variable. Chiffres et variables qui rencontrs dans la lecture dun programme ne diraient pas grandchose, deviennent plus explicites aprs avoir t rebaptiss par Symbol car il est beaucoup plus facile de retenir un nom quune adresse, le nom tant charg dune signification, alors quune adresse ne dit rien.
190
191
192
193
Port A
a) Pour configurer le Port A en entre (associ - par exemple - des interrupteurs) il faut premirement sadresser au Registre du Port A (situ ladresse 5). Puis il faut dfinir la direction de ce Port en sadressant au Registre TRISA (situ ladresse 85). Les bits mis 0 deviennent des entres. Tandis que les bits mis 1 deviennent des sorties. Pour configurer tout le Port A en entre il faut donc crire : Symbol PORTA = 5 Symbol TRISA = $85 POKE TRISA,255 (255 = 11111111) (Tous bits du Port A en entre). b) Pour configurer le Port A en sortie il faut faire de mme : premirement sadresser au Registre du Port A (situ ladresse 5). Puis dfinir la direction de ce Port en sadressant au Registre TRISA (situ ladresse 85). Les bits mis 0 deviennent des entres. 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 linstruction DIRS = X X X X X X X X DIRS suivi du signe gal et - aprs le signe gal - des 0 et des 1 formant loctet de configuration, conformment la faon dont on veut configurer le Port. 0 = entre 1 = sortie Exemples : - DIRS = % 11111111 (ou DIRS = 255) - DIRS = % 00000000 (ou DIRS = 0) - DIRS = % 00001111 (ou DIRS = 15) (Tous bits du Port B configurs en sortie). (Tous bits du Port B configurs en entre). (Bits 0 3 configurs en sortie, et bits 4 7 configurs en entre)
195
196
Les constantes
Les constantes numriques peuvent tre exprimes en trois bases : - dcimale - binaire - hexadcimale Pour dire au compilateur en quelle base on veut travailler, on place un prfixe devant le nombre. En crivant un nombre sans prfixe, le compilateur traite ce nombre en dcimal. Par exemple : 100 (sans prfixe) est interprt comme 100 (base dcimale). En tapant %100, le compilateur interprte le nombre 100 en binaire (00000100 cest dire 4 en dcimal). Enfin, en tapant $100, le compilateur interprte le nombre 100 en hexadcimal (0001 0000 0000 cest dire 256 en dcimal).
197
Les labels
Les labels (tiquettes) doivent obligatoirement commencer la premire colonne, et doivent se terminer par deux points ( :) Elles servent gnralement identifier des sous-programmes pour que le PIC - lissue dun 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 dun interrupteur, pour quil fasse une certaine chose si linterrupteur est ouvert ou une certaine autre chose si linterrupteur est ferm.... etc.. Les tiquettes reprent des adresses, pour que le PIC y accde quand on y fait rfrence.
198
Les commentaires
En PicBASIC les commentaires doivent obligatoirement tre prcds par une apostrophe () (Attention : la directive REM nexiste pas en PicBASIC). Tout ce qui est crit aprs une apostrophe est ignor par le compilateur. Les commentaires servent garder une trace de ce que fait le programme. Lcriture dun programme sans commentaires nest pas envisager, car mme si la comprhension dun programme peut paratre vidente au moment de sa cration, elle peut savrer difficile quelque temps aprs, ou sa lecture impossible pour ceux qui devraient en assurer la maintenance. Ne soyez pas avares de commentaires. Mettez-les mme quand les seules instructions du programme pourraient donner une impression dvidence.
199
200
201
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 donne en offset. SYNTAXE : BRANCH offset (Label1, Label2, ... ) Si offset vaut 0, le programme saute Label1 Sil vaut 1, le programme saute Label2 et ainsi de suite.. EXEMPLE : BRANCH B5 (Label1, Label2, Label3) Si B5 vaut 0, le programme fait un GOTO au sous-programme appel Label1. Sil vaut1, le programme fait un GOTO au sous-programme appel Label2. Sil vaut2, le programme fait un GOTO au sous-programme appel Label3. Si la valeur de loffset (ici B5) prend une valeur suprieure au nombre des sous-programmes indiqus dans les parenthses (ici : 0, 1, 2) le programme neffectue aucun saut et continue en squence.
203
BUTTON
Cette instruction lit ltat dun interrupteur plac sur lune des 8 lignes (0.....7) du Port B (RB) et peut : - dclencher une procdure danti-rebonds - dclencher une procdure dauto-rptition - tester si linterrupteur ferme vers la masse ou vers le + - faire un GOTO un sous-programme, selon que linterrupteur soit ouvert ou ferm.
SYNTAXE : BUTTON Pin, Down, Delay, Rate, Var, Action, Label Nom du sous-programme auquel il faut sauter. Etat auquel linterrupteur doit se trouver (0 si ouvert, 1 si ferm) pour que le saut ait lieu. Nom de la variable (B0....B51) servant au dcomptage des auto-rptitions. Nombre de fois (0.....255) quon veut faire tourner lauto-rptition pour lire ltat de linterrupteur. Nombre de cycles (0.....255) quon veut laisser passer partir du moment o linterrupteur a t actionn, avant de dclencher une procdure dauto-rptition. Si Delay vaut 0, les fonctions anti-rebonds et rptition automatique nont pas lieu. Si Delay vaut 255, seule la fonction anti-rebonds a lieu, pas celle dauto-rptition. Etat de linterrupteur au moment o il est appuy. Numro de la pin du Port B (RB) sur laquelle se trouve linterrupteur (0.......7).
204
EXEMPLE : BUTTON 2, 0, 100, 10, B0, 0, CLIGNOTE Lit ltat de linterrupteur plac sur RB2 (en supprimant les rebonds des contacts) et si linterrupteur est ouvert saute au sous-programme appel CLIGNOTE.
205
CALL
Appelle un sous-programme crit en langage ASSEMBLEUR. Cest une instruction qui assure une sorte de passerelle, grce laquelle on peut incorporer, des instructions 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
COMPT1,1 DELAI .255 COMPT1 COMPT2,1 DELAI .255 COMPT1 .255 COMPT2
206
DEBUG
Sert lors de la mise au point dun programme. La mise au point dun programme est une phase dlicate. Le programme est crit, mais des erreurs de syntaxe ou de compilation peuvent apparatre. Le programme ne se droule pas correctement. Il faut alors le dboguer. Pour cela il existe diffrentes techniques. Lune delles consiste placer une instruction DEBUG dans le programme pour provoquer laffichage de valeurs permettant de dlimiter des tapes dans le droulement du programme et localiser lerreur. Linstruction DEBUG se comporte comme une sorte de point darrt dynamique. Elle ne peut tre utilise que pendant la phase du dveloppement, et ne peut pas figurer dans un programme mis au point. Dans tous les cas, il faut retirer cette instruction daide la mise au point, lors de la fabrication de la version finale du programme. De toutes faons, si linstruction DEBUG restait dans le programme, elle serait ignore une fois que celui-ci ait t correctement compil. Au fur et mesure que vous ralisez votre programme, ayez toujours la mise au point en tte. Si vous modifiez temporairement des instructions, ayez une feuille volante avec leur liste. Cest la meilleure faon pour ne pas oublier de toutes les restaurer ensuite.
207
DIRS
Dfinit la direction des lignes du Port B. SYNTAXE : DIRS = X X X X X X X X (octet de configuration) (0.......255) 0 = entre 1 = sortie EXEMPLES : 1) DIRS = 255 (255 dcimal, donc 11111111 en binaire) Cela peut scrire aussi : DIRS = %11111111 Tous bits du Port B configurs en sortie 2) DIRS = 0 Tous bits du Ports B configurs en entre.
208
EEPROM
Cest linstruction avec laquelle on crit dans lEEPROM du PIC, dans des adresses conscutives, partir de celle quon lui indique comme tant ladresse de dpart. SYNTAXE : EEPROM Adresse, (Donne, Donne, Donne,......)
Dans les parenthses - espaces par des virgules les donnes crire dans lEEPROM (constantes numriques ou caractres ASCII).
Adresse de dpart, partir de laquelle on veut crire dans lEEPROM. Si on ne met rien dans ce paramtre, lcriture dmarre automatiquement ladresse 0. (NB : Dans le C 16F84 ltendue de lEEPROM va de 00 3F). EXEMPLE : EEPROM 8, (2, 4, 8, 16, 32, 64, 128) On stocke 2 ladresse EEPROM 08 On stocke 4 ladresse EEPROM 09 On stocke 8 ladresse EEPROM 0A On stocke 16 ladresse EEPROM 0B On stocke 32 ladresse EEPROM 0C On stocke 64 ladresse EEPROM 0D On stocke 128 ladresse EEPROM 0E NB : Les donnes entrent dans la mmoire EEPROM une seule fois : lors de la programmation du circuit, et non pas chaque fois quon excute le programme.
209
END
Cest linstruction que lon doit obligatoirement placer la fin de tout programme. Elle termine lexcution du programme et place le microcontrleur en mode veille. Pour rveiller le microcontrleur on est oblig de faire un Reset matriel.
210
FOR... NEXT
Cette instruction introduit une boucle en faisant excuter un certain nombre de fois les actions dtailles dans ce que lon appelle : le corps de linstruction. SYNTAXE : FOR Variable = Dbut TO Fin (Pas) . . .
.
NEXT Variable Variable prend dabord la valeur dfinie par Dbut ; puis successivement toutes les valeurs suivantes, par incrmentation automatique, jusqu atteindre la valeur dfinie par Fin, et chaque fois, pour chaque valeur de Variable, excute les instructions dtailles dans le corps de linstruction. A chaque passage, Variable sincrmente (de 1). Mais on peut aussi incrmenter la Variable au pas quon veut. Dans ce cas il faut le prciser en donnant une valeur Pas, place entre deux parenthses. Par exemple, si lon 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.
211 Fait clignoter 10 fois de suite (allume pendant 200 millisecondes, puis teint pendant 200 millisecondes) la LED connecte sur RB0 (Pin 0 du Port B). NB : Des boucles FOR... NEXT peuvent tre imbriques dans dautres boucles FOR... NEXT jusqu un maximum de 16 imbriquements. EXEMPLE : LOOP FOR B0 = 1 TO 5 FOR B1 = 1 TO 7 HIGH B1 PAUSE 10 LOW B1 PAUSE 500 NEXT B1 NEXT B0 GOTO LOOP Pour chacune des valeurs pouvant tre prises par B1 (cest dire 1 7. Cest la boucle interne) faire le travail dfini par la boucle interne autant de fois que les valeurs pouvant tre prises par B0 (boucle externe). Dans le cas de cet exemple : la boucle externe tourne 5 fois, avant que B1 passe dune valeur la suivante. Ici, donc, la LED relie RB0 clignote 5 fois, puis la LED relie RB1 clignote 5 fois, puis la LED relie RB2 clignote 5 fois.... jusqu celle relie RB7. Puis, a recommence. Restons sur cet exemple, et tudions-le de plus prs. Cela en vaut la peine, car les boucles FOR.... NEXT sont trs utilises quand on programme en PicBASIC.
212 LOOP FOR B0 = 1 TO 5 FOR B1 = 0 TO 7 HIGH B1 PAUSE 10 Le travail... LOW B1 que doivent faire PAUSE 500 chacune des valeurs NEXT B1 de B1, autant de fois... NEXT B0 .... que chacune des valeurs de B0 GOTO LOOP Autrement dit : HIGH 0: PAUSE 10: LOW 0 : PAUSE 500 HIGH 0: PAUSE 10: LOW 0 : PAUSE 500 HIGH 0: PAUSE 10: LOW 0 : PAUSE 500 HIGH 0: PAUSE 10: LOW 0 : PAUSE 500 HIGH 0: PAUSE 10: LOW 0 : PAUSE 500 HIGH 1: PAUSE 10: LOW 1 : PAUSE 500 HIGH 1: PAUSE 10: LOW 1 : PAUSE 500 HIGH 1: PAUSE 10: LOW 1 : PAUSE 500 HIGH 1: PAUSE 10: LOW 1 : PAUSE 500 HIGH 1: PAUSE 10: LOW 1 : PAUSE 500 HIGH 2: PAUSE 10: LOW 2 : PAUSE 500 etc.... jusqu 7. Limportance de NEXT est trs grande. Voyons-la au moyen dun autre exemple : On veut allumer toutes les LED du Port B. Ecrivons le programme suivant : LOOP FOR B0 = 0 TO 7 HIGH B0 NEXT B0 END
213 Si on excute ce mme programme sans linstruction NEXT B0, on constate que seule la LED relie RB0 sallume, et pas les autres. Ceci parce que linstruction NEXT B0 incrmente la variable B0 et referme la boucle en fournissant chaque tour une nouvelle valeur (0, 1, 2,.....7) correspondant diffrents RB et par l des LED diffrentes.
214
GOSUB
Cest linstruction par laquelle on appelle un sous-programme. Le sous-programme appel doit imprativement se terminer par linstruction RETURN. Linstruction RETURN, place la fin du sous-programme, fait revenir le programme principal linstruction se trouvant juste aprs GOSUB. Ne pas confondre GOSUB avec GOTO qui renvoie elle aussi lexcution du programme ailleurs, mais cette fois sans retour. SYNTAXE : GOSUB Label . . . RETURN
NB : Des paires dinstructions GOSUB..... RETURN peuvent tre imbriques. Mais sans aller au-del de 4 niveaux (on ne peut pas imbriquer plus de 4 paires lune dans lautre). Lexemple qui suit, illustre le fonctionnement de GOSUB et de RETURN.
215
Programme principal DEBUT INSTRUCTION 1 INSTRUCTION 2 INSTRUCTION 3 Sous-programme TEMPO INSTRUCTION a INSTRUCTION b INSTRUCTION c INSTRUCTION d INSTRUCTION e RETURN
216
GOTO
Renvoie un autre endroit du programme. SYNTAXE : GOTO Label Repre (adresse) de lendroit de la mmoire auquel le programme doit se rendre pour poursuivre son excution. EXEMPLE : GOTO END (Arrte le programme)
217
HIGH
Cette instruction fait deux choses en mme temps : - aprs avoir mis en sortie une ligne du Port B (RB), la place aussitt ltat logique haut (1). SYNTAXE : HIGH Pin Numro de la pin (0..... 7) du Port B (RB) quon veut mettre ltat haut EXEMPLE : HIGH 0 Sort un 1 sur RB0
NB : Seul le numro de la pin du RB doit tre spcifi (exemple : HIGH 7 et non pas HIGH Pin 7), car une instruction ainsi rdige nest pas admise, et conduirait une excution errone du programme.
218
I2Cin
Reoit des donnes partir dun bus I2C. SYNTAXE : I2Cin Contrle, Adresse, Variable Nom de la variable (B0... B51) dans laquelle on veut stocker le rsultat de la lecture. Adresse mmoire dont on veut lire le contenu. Octet compos de : - la cl daccs spcifique au circuit I2C utilis, telle quelle a t dfinie par son fabricant (sur 4 bits) - 1 bit (celui de plus fort poids) dsignant la largeur du bus dadresses (0 = 8 bits ; 1 = 16 bits) - 3 bits (ceux de plus faible poids) servant la slection des blocs internes (pages de 256 octets). Cette instruction fait plusieurs choses de suite : - sort la cl permettant laccs au circuit I2C - va ladresse voulue - lit son contenu - le stocke dans la variable figurant en argument. EXEMPLE : I2Cin %01010000, 12, B0 Lit le contenu de ladresse 12 et le stocke dans la variable B0. Loctet Contrle (%01010000 ou $50) se lit comme ceci : - le bit de plus fort poids (0) spcifie un bus dadresse de 8 bits - les quatre bits suivants (1010) correspondent la cl daccs dfinie par le fabricant - les trois bits de plus faible poids, non utiliss dans ce type de mmoire, sont mis zro (000).
219 Cette instruction permet notamment dajouter au PIC une mmoire EEPROM srie au standard I2C (24LC01B, 24LC02B, 24LC04B, 24LC08B, 24LC16B, 24LC32B, 24LC65... toutes les 24 C0x en gnral) et de disposer ainsi dune plus grande taille mmoire. Bien entendu, ce nest pas seulement des EEPROM que le PIC peut tre associ, mais nimporte quel circuit du standard I2C (capteur de temprature, convertisseur A/D, etc...). Ce tableau donne les cls daccs des EEPROM les plus courantes : Modle 24LC01B 24LC02B 24LC04B 24LC08B 24LC16B 24LC32B 24LC65 Taille mmoire 128 octets 256 octets 512 octets 1k octets 2K octets 4K octets 8K octets Contrle %01010xxx %01010xxx %01010xxb %01010xbb %01010bbb %11010ddd %11010ddd Largeur de bus 8 bits 8 bits 8bits 8bits 8bits 16 bits 16 bits
bbb = bits de slection du ou des blocs internes (pages) ddd = bits servant slectionner le botier xxx = sans importance
220
Les lignes Data et Clock sont affectes respectivement au Port A0 et au Port A1. Ceci dans le but vident de laisser entirement disponibles les 8 bits du Port B. La ligne Data est bidirectionnelle. Elle doit comporter une rsistance de Pull-up de 4,7 K.
221
I2Cout
Envoie des donnes sur un bus I2C. SYNTAXE : I2Cout Contrle, Adresse, (Valeur) Valeur crire (00... FF) Adresse laquelle on veut crire. Octet de contrle compos de : - la cl daccs spcifique au circuit I2C, telle qelle a t dfinie par le fabricant (sur 4 bits) ; - 1 bit (celui de plus fort poids) dsignant la valeur du bus des adresses (0=8 bits ; 1=16 bits) ; - 3 bits (ceux de plus faible poids) servant la slection des blocs. Lcriture dun octet dans une EEPROM srie prend environ 10 ms. Par consquent, si on veut crire plusieurs octets en suivant, il faut imprativement respecter ce dlai sinon, si une opration dcriture est encore en route, laccs la mmoire est ignor. Diffrent est le cas si, au lieu davoir affaire des mmoires EEPROM, on a affaire des composants de la famille I2C ne demandant pas un aussi long dlai entre deux critures. EXEMPLE : I2Cout %01010000, 17, (42) PAUSE 10 I2Cout %0101000, 125 (B3) PAUSE 10 On crit 42 ladresse 17. On laisse passer 10 ms pour que lopration dcriture sachve. Puis on crit le contenu de la variable B3 ladresse 125 et on laisse encore passer 10 ms. Les lignes DATA et CLOCK sont affectes respectivement PORTA0 et PORTA1. Ceci dans le soucis de laisser entirement disponibles les 8 bits Port B. La ligne DATA est bidirectionnelle. Elle doit comporter une rsistance de Pull-up de 4,7 K.
222
If... Then
Cette instruction teste une condition. Si la condition est vraie, le programme saute au sous-programme indiqu aprs Then. Then est ici une sorte de Goto. Cest pourquoi aprs Then on doit imprativement indiquer le nom du sous-programme auquel le programme doit se rendre. Si la condition est fausse, le programme continue en squence et analyse linstruction suivante. SYNTAXE : IF Comparaison THEN Label Nom du sous-programme excuter si la condition est vraie. Ce que lon veut comparer : - ceci gal cela (=) - ceci infrieur cela (<) - ceci suprieur cela (>) - ceci suprieur ou gal cela (>=) - ceci diffrent de cela ( <>) EXEMPLE : IF Pin0 = 0 THEN OUVERT IF B0 >=9 THEN PORTE Si linterrupteur connect la pin 0 du Port A est ouvert (0), excute le sous-programme appel OUVERT. Si la variable B a une valeur suprieure ou gale 9, excute le sous-programme appel PORTE.
223
INPUT
Place en entre lune des 8 lignes du Port B (RB). SYNTAXE : INPUT Pin Numro de la pin du Port B (RB) quon veut placer en entre. EXEMPLE : INPUT 3 Met RB3 en entre. NB : Seul le numro de la pin doit tre not. Cest dire : 0.... 7 et non Pin0.... Pin7
224
LET
Avec cette instruction on affecte une valeur une variable. EXEMPLE : LET B0 = 37 Affecte la variable B0 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 Linstruction compare une variable une liste de constantes jusqu ce quelle trouve une galit et dans ce cas place dans une variable le numro du rang de cette valeur. Si la valeur recherche est la premire de la liste, Index prend la valeur 0 ; si cest la deuxime, Index prend la valeur 1, etc.. Si par contre la recherche est infructueuse, aucune action na 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 troisime constante de la liste (le dcompte commence 0). EXEMPLE : SERin 1, N2400, B0 LOOKDOWN B0, ( 0123456789ABCDEF ), B1 SERout 0, N2400, (#B1) Lit les caractres arrivant dans une rception srie sur RB1 (pin 1 du Port B), les stocke un la fois dans la variable B0, et fournit la position de chacun deux dans la variable B1, mise ensuite en sortie sur RB0 (pin 0 du Port B).
226
LOOKup
Cette instruction permet de rcuprer une valeur partir dune table de constantes. On donne une valeur Index et on demande linstruction 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 premire constante. Si Index vaut 1, Variable assume la valeur de la deuxime constante, et ainsi de suite. Si Index est un nombre suprieur au nombre des constantes, il ne se passe rien et Variable reste inchange. SYNTAXE : LOOKUP Index, (Constante, Constante, Constante....), Variable Nom de la variable dans laquelle on veut mmoriser la variable recherche. Constantes ranges par rang. Rang correspondant la valeur quon veut rcuprer. EXEMPLE : FOR B0 = 0 to 6 LOOKUP B0, (BONJOUR), B1 SERout 0, N2400, (B1) NEXT B0 On donne successivement B0 les valeurs de 0 7 pour rcuprer dans la variable B1, lune aprs lautre, toutes les lettres de BONJOUR, lesquelles sortent ensuite en srie sur RB1.
227
LOW
Cette instruction met ltat logique bas (0) une ligne (0... 7) du Port B (RB). SYNTAXE : LOW Pin Numro de la pin (0... 7) du Port B quon veut mettre ltat bas.
EXEMPLE : LOW 3 Met ltat logique bas RB3. NB : Seul le numro de la pin de RB doit tre spcifi. Exemple : 4, et non pas Pin 4. Une instruction mal rdige conduirait une excution errone du programme.
228
NAP
Cette instruction met le microcontrleur en veille pendant le temps dfini par Priode. SYNTAXE : NAP Priode (0... 7) 0 1 2 30 4 5 6 7 18 ms 36 ms 72 ms 144 ms 288 ms 576 ms 1.152 ms 2.304 ms
Ces dures sont approximatives car drives du Watchdog Timer, pilot par son horloge R/C interne, et donc pouvant diffrer dun microcontrleur lautre...
229
OUTPUT
Cette instruction place en sortie lune des 8 pins du Port B (RB). SYNTAXE : OUTPUT Pin
Numro de la pin du Port B (RB) quon veut placer en sortie. EXEMPLE : OUTPUT 3 Met RB3 en sortie. NB : Seul le numro de la pin de RB doit tre spcifi. Exemple : 3, et non pas Pin 3. Une instruction mal rdige conduirait une excution errone du programme.
230
PAUSE
Instruction introduisant une temporisation. SYNTAXE : PAUSE Priode Dure, exprime en millisecondes. Pour un 16F84 cadenc 4 MHz, lunit de temps est approximativement 1 milliseconde. EXEMPLE : PAUSE 500 Engendre un temporisation de 500 ms ( seconde). Contrairement linstruction NAP qui fournit des dlais prdfinis et approximatifs (car issus du Watchdog Timer), linstruction PAUSE fournit des dlais la demande et plus prcis (bien quencore pas tout fait exacts, sa prcision dpendant entre autre de celle du quartz et de ltat de lalimentation).
231
PEEK
Cette instruction lit le contenu dune adresse et le stocke dans une variable. SYNTAXE : PEEK Adresse, Variable Nom de la variable dans laquelle on veut stocker le rsultat de la lecture. Adresse dont on veut lire le contenu. EXEMPLE : PEEK PORTA, B0 On lit le contenu du Port A et on le mmorise dans la variable B0. Autre EXEMPLE : Symbol PORTA = 5 Symbol TRISA = $85 POKE TRISA, 255 PEEK PORTA, B0 Ensuite, on peut continuer comme ceci : IF BIT0 = 0 THEN...... IF BIT0 = 1 THEN...... On lit le Port A par lintermdiaire de la variable B0. Ensuite on peut tester et agir en fonction de ltat de chaque bit.
232
PINS
Cette instruction met en sortie, sur le Port B, loctet spcifi aprs le signe = SYNTAXE : PINS = X X X X X X X X
Octet spcifier. EXEMPLES : 1) PINS = $2B Met la valeur hexadcimale 2B (00101100) sur le Port B. Ce qui a pour effet de mettre : le bit 0 0 le bit 1 0 le bit 2 1 le bit 3 1 le bit 4 0 le bit 5 1 le bit 6 0 le bit 7 0. PINS = B1 Met chacun des bits du Port B ltat haut ou ltat bas, conformment loctet se trouvant dans la variable B1.
2)
3)
PINS = 255 Met ltat haut tous les bits du Port B. DIRS = 255 (Port B en sortie)
4)
233 LOOP FOR B1 = 0 TO 255 PINS = B1 PAUSE 500 NEXT B1 GOTO LOOP END On affiche sur le Port B toutes les valeurs de 0 255 (FOR B1 = 0 TO 255... NEXT B1) un intervalle de 500 ms. Puis on recommence indfiniment.
234
POKE
Cest linstruction par laquelle on crit une donne ladresse que lon dsigne. SYNTAXE : POKE Adresse, Donne Donne crire. Adresse laquelle on veut crire la donne. EXEMPLES : 1) POKE TRISA, 0 Met 0 dans TRISA. SYMBOL SYMBOL PORTA = 5 TRISA = $85 (Adresse de PORTA) (Adresse de TRISA) (Port A en sortie) (Copie Port A dans B0)
2)
POKE TRISA, 0 PEEK PORTA, B0 BIT1 = 1 BIT2 = 0 etc... POKE PORTA, B0 END
Ainsi faisant, on copie sur le Port A ce qui se trouve dans la variable B0.
235
POT
Lit la valeur dune rsistance (potentiomtre, thermistance, jauge de contrainte, capteur de position ou autre composant rsistif) sur lune des pins (0..... 7) du Port B. La valeur de la rsistance (pouvant aller de 5 K 50 K) est dtermine, en fait, en mesurant le temps de dcharge du condensateur associ la rsistance avec laquelle il forme une cellule R/C. SYNTAXE : POT Pin, Echelle, Variable Nom de la variable dans laquelle on veut mmoriser le rsultat de la mesure. Si Echelle est positionn sa valeur optimale, Variable prend une valeur proche de 0 lorsque le potentiomtre est tourn sur le minimum, et une valeur proche de 255 lorsque le potentiomtre est tourn sur le maximum. (1..... 255) est un facteur de conversion qui dpend des caractristiques de la cellule R/C. Sa valeur doit tre dtermine exprimentalement. Pour de grandes constantes de temps R/C, la valeur dEchelle 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) Dsigne la pin du Port B (RB) sur laquelle on veut lire la valeur de la rsistance. Pour dterminer au plus juste la valeur quil convient de donner Echelle, la mthode consiste la faire valuer par le PIC lui-mme. Pour cela, rglez dabord la valeur de la rsistance son maximum, et lisez-la avec Echelle provisoirement positionne 255. Cette valeur (stocke dans Variable) value par le PIC, est celle que vous pourriez alors donner Echelle (valeur optimale). Evidemment, pas question de sattendre lire une valeur prcise de Rsistance, exprime en Ohms !
236 Ici, en dfinitive, on lit des paliers. Mais la valeur quassume tour tour Variable chaque fois quon tourne laxe du potentiomtre, renseigne suffisamment sur la position de laxe et par l mme sur la valeur prise par la rsistance, si on connat sa valeur de bute. EXEMPLE : POT 7, 255, B0 SERout 0, N2400, (#B0) Lit un potentiomtre reli RB7, mmorise le rsultat dans la variable B0, puis met cette valeur en sortie sur RB0, en mode srie. Le schma de branchement est le suivant :
237
PULSin
Mesure la dure dune impulsion arrivant sur une pin du Port B (RB). La pin dsigne est automatiquement mise en entre. NB : La dure est exprime par units de 10 s. Autrement dit : le rsultat 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 mmoriser le rsultat de la mesure. Cette variable peut aller de 1 65.535 (correspondant respectivement : - 1 x 10 s = 10 s . . - 65.535 x 10 s = 655.350 s (soit 655,35 ms ou encore 0,65535 secondes). ( 0 ou 1 ) Dfinit la partie du signal dont on veut lire la dure :
( 0... 7 ) Numro de la pin du Port B (RB) qui reoit le signal dont on veut mesurer la dure. Attention : seul le numro de la pin doit tre not ( 0..... 7).
238 EXEMPLE : PULSin 5, 1, W0 Mesure la dure de la partie haute dune impulsion arrivant sur RB5 et stocke le rsultat dans la variable (16 bits) W0. NB : Si aucun front nest dtect, ou si limpulsion dure plus longtemps que 0.65535 seconde, Variable est mise 0. Si on dfinit une variable de type B (variable 8 bits) au lieu dune variable de type W (variable 16 bits), seuls les 8 bits de poids faible sont mmoriss.
239
PULSout
Gnre - sur une pin du Port B - une impulsion de dure calibre, exprime par units de 10 s. La pin dsigne est automatiquement mise en sortie. Le niveau (haut ou bas) de limpulsion calibre mise en sortie, dpend de ltat de la pin avant lexcution de cette instruction, car - lorsque cette instruction survient - elle inverse ltat actuel, pour marquer un dbut partir duquel elle peut calculer la dure. SYNTAXE : PULSout Pin, Priode Dure de limpulsion (de 1 65.535) par pas de 10 s. 1 correspond (1x10 s) soit 10 s 2 correspond (2x10 s) soit 20 s . 65.535 correspond (65.535x10 s) soit 0.65535 secondes. (0... 7) Dsigne le numro de la pin du Port B (RB) sur laquelle on veut sortir limpulsion calibre. Attention : seul le numro (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 s).
240
PWM
Pulse With Modulation Modulation par largeur dimpulsions Exemple de largeurs dimpulsions allant en augmentant (ici ltat haut MARK devient de plus en plus large) :
Exemple de largeurs dimpulsions allant en diminuant (ici ltat haut MARK devient de plus en plus court) :
Cette instruction gnre sur une pin du Port B (RB) un train dimpulsions modules en largeur.
241 La pin dsigne est automatiquement mise en sortie mais, sitt le cycle termin, elle est automatiquement remise en entre. SYNTAXE : PWM Pin, Duty, Cycle Nombre dimpulsions quon veut largir ou retrcir. Dsigne (en pourcentage) le cycle de travail de chaque train dimpulsions (peut varier de 0% 255%). Cest le coefficient dlargissement ou de retrcissement quon veut appliquer aux impulsions. Numro de la pin du Port B (RB) sur laquelle on veut gnrer le train dimpulsions PWM. Une LED commande par un signal PWM voit sa luminosit saccrotre progressivement ou diminuer progressivement (selon le mode de programmation), comme si elle tait associe un variateur, produisant ainsi une sorte deffet crpucsulaire. Moyennant un rseau R/C, cette instruction permet de mettre en place un convertisseur D/A tout simple :
242 La modulation par largeur dimpulsions (modulation dimpulsions en dure, ou modulation par nombre dimpulsions 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.
La puissance moyenne du signal diminue (ou augmente) en fonction du temps. Le temps de cycle est constant, mais le temps ON varie (sa dure diminue, ou augmente). Ce type de modulation prsente au moins trois avantages : un seul bit de Port suffit commander les transitions ON/OFF ; le signal ainsi modul rduit la dissipation de puissance (perte de chaleur, par exemple), et peut commander une charge puissance variable. Temps de cycle = un temps ON + un temps OFF . Temps ON Rapport cyclique = --------------------Temps de cycle Un exercice pour vous entraner utiliser cette instruction consiste brancher un voltmtre pour visualiser et mesurer un signal PWM, en y associant une LED servant (dans une certaine mesure) de confirmation. Le voltmtre sera un modle analogique ( aiguille) de prfrence un modle digital. La tension de sortie moyenne est proportionnelle au rapport cyclique et indpendante du temps de cycle. Avec un temps de cycle maximum, vous risquez de voir laiguille du voltmtre se dplacer trs lgrement.
243
Un autre exercice pourrait consister faire varier le temps ON et le temps OFF en fonction des donnes dun tableau. Avec ces prescriptions, par exemple : Rapport cyclique 0,10 0,20 0,30 0,40 0,50 0,60 0,70 0,80 0,90 1,00 Temps ON 20 20 30 40 60 90 140 160 180 200 Temps OFF 180 80 70 60 60 60 60 40 20 0 Temps de cycle 200 100 100 100 120 150 200 200 200 200
244
RANDOM
Gnre un nombre alatoire sur 16 bits et le stocke dans une variable de type W (variable de 16 bits, compose de la juxtapposition de deux variables de 8 bits. Exemple : la variable W0 est compose de la juxtapposition des variables B0 et B1). SYNTAXE : RANDOM Variable Nom dun variable de 16 bits (W0.... W25) dans laquelle le programme va stocker le nombre alatoire. EXEMPLE : RANDOM W0 Gnre un nombre alatoire de 16 bits et le stocke dans la wariable W0. NB : Le nombre alatoire pouvant tre gnr par cette instruction peut aller de 1 65.535. Le nombre 0 nest pas gnr.
245
READ
Avec cette instruction on lit une donne dans la mmoire EEPROM. Le rsutlat de la lecture est mmoris dans la variable spcifie. SYNTAXE : READ Adresse, Variable Nom de la variable (B0... B51) dans laquelle on veut stocker le rsultat de la lecture. Adresse EEPROM dont on veut lire le contenu.
246
RETURN
Cest linstruction 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, linstruction se trouvant justaprs le GOSUB ayant appel le sous programme.
247
REVERSE
Inverse le sens de fonctionnement de la patte spcifie (0.... 7) du Port B (RB). Si elle tait une entre, aprs cette instruction elle devient une sortie, et inversement (si elle tait une sortie, elle devient une entre). SYNTAXE : REVERSE Pin Numro (0.... 7) de la pin du Port B (RB) dont on veut inverser le sens. EXEMPLE : OUTPUT 7 REVERSE 7 Met dabord RB7 en sortie, puis inverse le sens et met RB7 en entre. NB : Seul le numro (0.... 7) de la pin du Port B (RB) doit tre not (REVERSE 0, REVERSE 1,....... REVERSE 7 et non REVERSE Pin0, REVERSE Pin1.....).
248
SERin
Serial Input Cette instruction permet de recevoir des donnes sous forme srie asynchrone , par mots de 8 bits, sans parit, avec un seul bit de STOP. La rception doit avoir lieu en utilisant lune des pins (0.... 7) du Port B (RB). SYNTAXE : SERIN Pin, Mode, (Qualificateur), Variable Nom de la variable (B0... B51) dans laquelle on veut stocker les donnes reues. A noter entre parenthses. Ca peut tre un seul, ou plusieurs. Si plusieurs, une virgule doit les sparer. Il sagit des informations optionnelles (formant une sorte de cl ) qui doivent tre reues exactement dans lordre spcifi, avant que la ou les donnes ne soient prises en compte. Si, lors de la rception de plusieurs Qualificateurs, un seul ne correspond pas la cl laquelle ils sont compars un un, le processus revient au dbut, et le programme reprend les examiner depuis le premier. Un Qualificateur peut tre une constante, une variable ou une chane de caractres (dans ce dernier cas, chaque caractre de la chane est trait individuellement, pris en sa valeur ASCII). Cela sert scuriser une transmission. Trs utile notamment dans le cas des tlcommandes, dalarmes ou danti-vol distance). Dfinit la fois la vitesse de transmission (Baud Rate) et la forme des donnes (TTL vrai ou TTL invers). On peut choisir parmi 8 modes possibles, selon les spcifications du tableau suivant :
249
Valeur 0 1 2 3 4 5 6 7
Baud Rate 2400 1200 9600 300 2400 1200 9600 300
TTL invers
Etant donn que les circuits dinterface RS232 (mme les plus conomiques) prsentent dexcellentes caractristiques dentre/sortie, les signaux peuvent tre grs par les PIC sans besoin dun convertisseur de niveux. Les signaux prsents en format TTL invers doivent tre utiliss moyennant une rsistance de limitation de courant :
EXEMPLE : LOOP
SERin 7, n1200, B0 IF B0>0 THEN SORTIE SORTIE POKE Pin3, B0 PAUSE 300 GOTO LOOP Reoit un signal srie sur RB7, en TTL invers, la vitesse de 1200 Bauds, et le stocke dans la variable B0. Si B0 contient une donne, elle est envoye sur la pin 3 du Port A (RA3). On temporise 300 ms. Puis on recommence avec loctet suivant.
250
SERout
Serial Output Cette instruction permet denvoyer des donnes, sous forme srie asynchrone, par mots de 8 bits, sans parit, avec un seul bit de STOP. Lmission doit avoir lieu en utilisant lune des pins (0... 7) du Port B (RB). SYNTAXE : SERout Pin, Mode, (Donne, Donne....) A noter entre parenthses. Ca peut tre une ou plusieurs. Si plusieurs, une virgule doit les sparer. Il sagit des informations transmettre. Ces informations peuvent tre des constantes, des variables ou une chane de caractres. - Une chane de caractres est traite comme une suite de caractres. Chacun deux est mis individuellement. - Une valeur numrique (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 numrique prcde du signe # (dise) est mise sous la forme de la reprsentation en ASCII de la valeur dcimale correspondante. Ainsi par exemple, #123 fera mettre 1 , puis 2 , puis 3 . Dfinit la fois la vitesse de la transmission (Baud Rate), la forme des donnes (TTL vrai ou TTL TTL invers) et la configuration de ltage de sortie (Drain ouvert ou Collecteur ouvert). On peut choisir parmi 16 modes possibles, selon les spcifications du tableau suivant :
251
Symbole T2400 T1200 T9600 T300 N2400 N1200 N9600 N300 OT2400 OT1200 OT9600 OT300 ON2400 ON1200 ON9600 ON300
Valeur 0 1 2 3 4 5 6 7 8 9 10 11 1 2 13 14
Baud Rate 2400 1200 9600 300 2400 1200 9600 300 2400 1200 9600 300 2400 1200 9600 300
TTL invers
Drain ouvert
Source ouvert
Pin dsigne le numro (0... 7) de la pin du Port B (RB) que lon veut utiliser pour sortir le signal srie. Etant donn que les circuits dinterface RS232 (mme les plus conomiques) prsentent dexcellentes caractristiques dentre/sortie, les signaux peuvent tre grs par les PIC sans besoin dun convertisseur de niveux. Les signaux prsents en format TTL invers doivent tre utiliss moyennant une rsistance de limitation de courant :
252
EXEMPLES : 1) Un seul octet transmettre : SERout 6, N2400, (B1) 2) Plusieurs octets transmettre : SERout 6, N2400, (B1, B0.....0F....C3) 3) Envoyer sur RB0 la valeur ASCII contenue dans la variable B0, suivie dun saut de ligne : SERout 0, N2400, (#B0, 10) 4) Envoi dun octet (stock dans la variable B1) prcd dune cl servant de code secret : SERout 6, N2400, (S, E , S, A, M, E, B1) Octet proprement dit. Caractres servant de cl (caractres secrets ). Cette faon de coder est particulirement utile dans le cas de systmes dantivol. Le rcepteur, sans avoir au pralable reu le mot SESAME, ne peut mmoriser le mot fourni par B1.
253
SLEEP
Met le PIC en mode veille pendant un certain temps (dfini par Priode) exprim en secondes. Priode est une variable de 16 bits, pouvant aller de 1 65.535 (plus de 18 heures) avec une prcision qui dpend du timer interne (celui associ au chien de garde) qui est du type R/C. Cette prcision nest quapproximative, et ne doit pas tre utilise comme rfrence temporelle absolue. En plus, il faut savoir que la plus courte Priode ne peut tre infrieure celle du time-out maximum du chien de garde, qui est de 2,3 secondes. En mode SLEEP, le microcontrleur passe en mode basse consommation (low power). Lorsque le dlai spcifi est coul, lexcution du programme reprend avec linstruction suivante. SYNTAXE : SLEEP Priode Dure de veille, xprime en secondes. EXEMPLE : SLEEP 60 Met le C en veille pendant 1 minute (60 secondes).
254
SOUND
Gnre un son sur la pin dsigne du Port B (RB). SYNTAXE : SOUND Pin, (Note, Dure, Note, Dure,...) Dure de la note (ms). Hauteur de la note: - de 1 127 = notes audibles - de 128 256 = bruit blanc. Numro (0.... 7) de la pin du Port B (RB) sur laquelle on veut faire sortir le son. EXEMPLES : 1) 2) SOUND 7, (100, 50) Gnre sur RB7 une note de hauteur 100, pendant 50 ms. SOUND 7, (1, 100, 65, 100, 127, 100) Gnre sur RB7 trois notes : une note grave pendant 100 ms, suivie dune note moyenne pendant 100 ms, suivie encore dune note aige pendant 100 ms.
Le son gnr a la forme dun signal carr. La Dure et la hauteur de la Note sont dterminer exprimentalement, car elles peuvent varier dun C lautre en fonction notamment de la frquence du quartz pilote, mais aussi de la tension dalimentation, de la temprature, etc... Les paramtres enferms dans les parenthses doivent indiquer la note et sa dure, la note et sa dure, la note et sa dure.... Leur nombre doit tre (forcment !) pair. On peut mettre dans les parenthses autant de paramtres quon veut. Il y a bien sr une limite : la taille mmoire maximale du PIC !
255 Voici deux faons possibles de raccorder un haut-parleur une pin du Port B :
256
TOGLE
Cette instruction inverse ltat logique de lun des bits (0... 7) du Port B (RB). SYNTAXE : TOGLE Pin Numro de la pin (0.... 7) du Port B dont on veut inverser ltat. EXEMPLE : LOW 0 TOGLE 0 Dans un premier temps on met RB0 ltat bas, puis on inverse ltat de RB0 (RB0 passe de ltat bas ltat haut).
257
TRISA
Configure le Port A (en sortie ou en entre). 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 entre
258
WRITE
Cest linstruction avec laquelle on crit dans la mmoire EEPROM de donnes (Data Memory). SYNTAXE : WRITE Adresse, Donne Donne crire. Adresse laquelle on veut crire (00.... 3F). EXEMPLE : WRITE 6, B0 Ecrit ladresse 6 la donne se trouvant dans la variable B0. NB : Les donnes entrent dans la mmoire EEPROM une seule fois au moment de la programmation du PIC et non pas chaque fois quon excute le programme.
259
260
Programme 1
Faire clignoter une LED relie RB0 (pin 0 du Port B). LOOP : HIGH 0 PAUSE 1000 LOW 0 PAUSE 1000 GOTO LOOP END La LED sallume pendant 1 seconde (1000 ms), puis steint pendant 1 seconde. Puis le cycle recommence indfiniment. Pour que la LED clignote plus vite, il faut ajuster la dure de PAUSE. Exemple : LOOP : HIGH 0 PAUSE 100 LOW 0 PAUSE 100 GOTO LOOP END Dans ce cas la LED sallume pendant 100 ms, puis steint pendant 100 ms. Puis le cycle recommence indfiniment.
261
Programme 2
Faire clignoter une LED rele RB5 (bit 5 du Port B) si linterrupteur reli RA0 (bit 0 du Port A) est ltat haut. LOOP : IF PIN 0 = 1 THEN LED GOTO LOOP LED : HIGH 5 PAUSE 100 LOW 5 PAUSE 100 GOTO LOOP END
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 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 ltat 1, cesse dexcuter les instructions en ligne et saute au sous programme LED, sinon (ligne suivante GOTO LOOP) surveille ltat logique de cette pin. Si elle est ltat 0, continue surveiller. Dans le deuxime 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 ltat de la Pin 0 du Port A. Les pins auxquelles le langage MEL PicBASIC fait tacitement rfrence sont celle du Port B. HIGH 5 signifie : met ltat haut la pin 5 du Port B. HIGH (mets ltat haut) 5 (la pin 5 du Port B).
263
Programme 3
Faire clignoter une LED relie RB5 (pin 5 du Port B) si les interrupteurs relis RA0 et RA1 sont ferms. 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 (RA0) et la pin 1 (RA1) du Port A sont 1, on excute le sous programme LED, sinon on continue surveiller ltat de RA0 et de RA1. Lorsque les conditions sont remplies, on allume la LED relie RB5 (pin 5 du Port B) pendant 100 ms, puis on lteint pendant 100 ms. Puis on revient au dbut pour voir si les deux interrupteurs sont ferms. Si Pin0 et Pin1 ne sont pas tous les deux enfoncs, il ne se passe rien (la LED reste teinte).
264
Programme 4
Allumer successivement toutes les LED du Port B. LOOP : FOR B0 = 0 TO 7 HIGH B0 NEXT B0 END
265
Programme 5
Allume et teint en squence, une la fois, toutes les LED du Port B (de RB0 RB7), avec un petit intervalle de temps entre chaque. LOOP : FOR B0 = 0 TO 7 HIGH B0 PAUSE 100 LOW B0 PAUSE 900 NEXT B0 GOTO LOOP END
266
Programme 6
Faire clignoter simultanment 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 trs beau ! Lutilisation dune variable simplifie lcriture : 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 mme chose, mais le deuxime utilise beaucoup moins dinstructions. Faire des conomies dinstructions dans un si court programme na pas de sens ; mais cela vaut la peine quand on crit des programmes longs. Exercez-vous donc toujours recourir aux instructions les mieux adaptes.
268
Programme 7
Faire clignoter 5 fois toutes les LED du Port B ensemble. LOOP : FOR B1 = 0 TO 7 HIGH B1 PAUSE 50 LOW B1 PAUSE 500 NEXT B1 FOR B0 = 1 TO 5 HIGH B1 PAUSE 50 LOW B1 PAUSE 50 NEXT B1 NEXT B0 GOTO LOOP
269
Programme 8
Faire clignoter en squence, 5 fois chacune, lune aprs lautre et une la fois, les 8 LED du Port B, en commenant par la LED associe RB1.... jusqu celle associe RB7. Puis recommencer. LOOP : FOR B0 = 1 TO 5 FOR B1 = 0 TO 7 HIGH B1 PAUSE 100 LOW B1 PAUSE 500 NEXT B1 NEXT B0 GOTO LOOP END Ce programme fait clignoter toutes les LED du Port B (0 7) cinq fois, lune aprs lautre, un intervalle de demi-seconde, crant lillusion dune LED qui se dcale en clignotant.
270
Programme 9
Allumer les 8 LED du Port B en squence binaire. DIRS = 255 LOOP : FOR B1 = 0 TO 255 PINS = B1 PAUSE 200 NEXT B1 GOTO LOOP Dans ce programme : - DIRS = 255 dfinit les 8 lignes du Port B comme sorties ; - Le comptage se fait de 0 255 (dcimal) (on pourrait crire : FOR B1 = %0 TO %11111111 ou aussi : FOR B1 = $0 TO $FF ) ; - A chaque incrment de la valeur assume par la variable B1 (de 0 255 en dcimal) linstructions PINS = B1 visualise la valeur courante de B1 ; - Linstruction PAUSE 200 maintient cette visualisation active pendant 200 ms.
271
Programme 10
Gnrer sur RB3 un signal modul en largeur dimpulsions (PWM) sous le contrle de 2 interrupteurs : - lun plac sur RA0, faisant augmenter la luminosit de la LED lorsquil est ferm ; - lautre plac sur RA1, faisant diminuer la luminosit de la LED lorsquil 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 SYMBOL LOOP : PORTA = 5 TRISA = $85 POKE TRISA, 255 B1 = 127 PEEK PORTA, 0 PWM 3, B1, 10 IF Bit 0 = 1 THEN INC IF Bit 1 = 1 THEN DEC GOTO LOOP IF B1 > 250 THEN LOOP B1 = B1 + 5 GOTO LOOP IF B1 < 5 THEN LOOP B1 = B1 5 GOTO LOOP END
INC : DEC :
Les trois premires lignes sont des initialisations . On y dit que PORTA est ladresse 5, TRISA est ladresse 85, et quon veut tous les bits du Port A en entre. B1 = 127 donne la LED une luminosit initiale moyenne (127 est la moiti entre 1 et 256). PEEK PORTA, 0 lit ltat de RA0. Puis on dfinit les paramtres de la PWM, avec un coefficient changeant de 5% par coup, sur 10 cycles, et si RA0 est 1 on incrmente la variable B1 (en appelant le sous programme INC), tandis que si RA1 est 1, on dcrmente la variable B1 ( en appelant le sous programme DEC).
272
Programme 11
Raliser une syrne 2 tons. LOOP SOUND 7, (10, 100, 50, 100) GOTO LOOP END Ce programme gnre sur RB7 un son de hauteur 10 pendant 100 ms, suivi dun deuxime de hauteur 50 pendant 100 ms. Puis on recommence.
273
Programme 12
Gnrer une mlodie rptitive 3 notes. LOOP SOUND 7, (10, 100, 60, 100, 120, 100) GOTO LOOP END Ce programme gnre sur RB7 un premier son de hauteur 10 pendant (environ) 100 ms, puis un deuxime son de hauteur 60 pendant (approximativement) 100 ms, et enfin un troisime son de hauteur 120 pendant encore (approximativement) 100 ms. Puis on recommence sans cesse.
274
Programme 13
Gnrer une mlodie en crescendo de 20 notes joues en continuation. LOOP B0 = 0 INC FOR B0 = B0 + 5 SOUND 7, (B0, 100) NEXT B0 IF B0 > 100 THEN LOOP GOTO INC END La variable B0 prend ici les 20 valeurs : 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
275
Programme 14
Lire ltat de 5 interrupteurs placs sur le Port A et visualiser ltat de chacun deux sur une range de 5 LED relies au Port B. SYMBOL SYMBOL LOOP : PORTA = 5 TRISA = $85 POKE TRISA, 255 PEEK PORTA, B0 IF Bit0 = 1 THEN ZERO IF Bit1 = 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
Aprs les initialisations, et aprs avoir mmoris le Port A dans la variable B0, on teste chaque bit qui sil est 1 renvoie un sous programme spcifique qui allume la LED correspondante.
276
Programme 15
Lire ltat de 5 interrupteurs placs sur le Port A et dire lequel deux a t ferm, moyennant lmission de bips sur un haut-parleur plac sur RB7 : un seul bip pour informer quil sagit de linterrupteur n 1, deux bips pour le n 2, et ainsi de suite.. 5 bips pour linterrupteur n 5. SYMBOL SYMBOL LOOP : PORTA = 5 TRISA = $85 POKE TRISA, 255 PEEK PORTA, B0 IF Bit0 = 1 THEN 1_bip IF Bit1 = 1 THEN 2_bips IF Bit2 = 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
Aprs les initialisations, et aprs avoir mmoris le Port A dans la variable B0, on teste chaque bit qui sil est 1 renvoie un sous programme spcifique qui met le nombre de bips correspondant. Les bips ont tous la mme hauteur et la mme dure (100, 50). 100 correspond la hauteur de la note. 50 correspond sa dure.
277
Programme 16
Transmettre en mode srie, 2400 Bauds, via la pin RB6, un code de 4 bits issu de 4 interrupteurs placs sur le Port A. SYMBOL SYMBOL LOOP : PORTA = 5 TRISA = $85 POKE TRISA, 255 PEEK PORTA, B0 PAUSE 200 SERout , T2400, (B0) GOTO LOOP END
- Linstruction PAUSE 200 est ncessaire ici, car le code provient dinterrupteurs (pouvant gnrer des rebonds). - Linstruction SERout 6, T2400, (B0) envoie sur la pin 6 du Port B le code stock dans la variable B0, aux normes T2400 (2400 Bauds, mode TTL vrai).
278
Programme 17
Recevoir en mode srie, 2400 Bauds, un code entrant sur la pin RB6. Stocker le code reu dans la variable B0. LOOP : CODE_OK SERin 6, N2400, B0 IF B0 > 0 THEN CODE_OK GOTO LOOP POKE PORTA, B0 END
Le code reu est stock dans la variable B0. Linstruction IF B0 > 0...... sert dtecter larrive dun code. Si un code autre que 0 est dtect, alors on le stocke dans B0. En labsence de code, on continue guetter.
279
280
Mais en tout premier lieu, notez bien ces quatre remarques : 1) Les codes hexadcimaux qui ne figurent pas dans cette bible, sont : - soit inexistants (exemple : 0087) - soit illgaux ; 2) A ct de chaque code hexadcimal permis, vous trouvez, selon le cas, ou le seul nom de linstruction correspondante (par exemple : 0064 = CLRWDT) ou le nom de linstruction et le registre qui lui est associ (par exemple : 0083 = MOVWF STATUS) ; 3) Certaines instructions hexadcimales peuvent avoir plusieurs prsentations. Cest pourquoi vous pouvez trouver la mme instruction plusieurs fois, dans plusieurs pages diffrentes, plusieurs endroits... (exemple : NOP = 0000 = 0020 = 0040 = 0060). Il ne sagit pas dune erreur, car dans lencodage de linstruction NOP (pour rester dans cet exemple), les bits 5 et 6 peuvent prendre des valeurs indiffrentes. Ce qui conduit 4 encodages possibles : 0000, 0020, 0040 et 0060. 4) Cette bible est ma premire tentative ( en quoi, je pense avoir innov car - ma connaissance - il nexiste rien de semblable ni en librairie ni sur le WEB). Cest pourquoi je vous lai prsente comme une nouveaut MONDIALE. Cest la version 1.00 Jy ai consacr beaucoup de temps, et jai veill lexactitude de chaque code. Cependant jespre que vous me pardonnerez une ventuelle faute de frappe, une omission, un double-emploi ou une bvue. Nhsitez pas me signaler ce qui vous parat douteux, pour que je puisse tudier votre proposition, ventuellement corriger, et en distribuer une nouvelle version.
281
0000 0008 0009 0020 0040 0060 0062 0063 0064 0065 0066 0080 0081 0082 0083 0084 0085 0086 0088 0089 008A 008B 008C 008D 008E 008F 0090 0091 0092 0093 0094 0095 0096 0097 0098 0099 009A
NOP RETURN RETFIE NOP NOP NOP OPTION SLEEP CLWDT TRIS A TRIS B MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF
INDF TMR0 PCL STATUS FSR PORTA PORTB EEDATA EEADR PCLAYH INTCON 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A
009B 009C 009D 009E 009F 00A0 00A1 00A2 00A3 00A4 00A5 00A6 00A7 00A8 00A9 00AA 00AB 00AC 00AD 00AE 00AF 00B0 00B1 00B2 00B3 00B4 00B5 00B6 00B7 00B8 00B9 00BA 00BB 00BC 00BD 00BE 00BF
MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF
1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F
282
00C0 00C1 00C2 00C3 00C4 00C5 00C6 00C7 00C8 00C9 00CA 00CB 00CC 00CD 00CE 00CF 0100 0101 0102 0103 0104 0105 0106 0107 0108 0109 010A 010B 010C 010D 010E 010F 0110 0111 0112 0113 0114
MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF MOVWF CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW
40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
0115 0116 0117 0118 0119 011A 011B 011C 011D 011E 011F 0120 0121 0122 0123 0124 0125 0126 0127 0128 0129 012A 012B 012C 012D 012E 012F 0130 0131 0132 0133 0134 0135 0136 0137 0138 0139
CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW
283
013A 013B 013C 013D 013E 013F 0140 0141 0142 0143 0144 0145 0146 0147 0148 0149 014A 014B 014C 014D 014F 014F 0150 0151 0152 0153 0154 0155 0156 0157 0158 0159 015A 015B 015C 015D 015E
CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW
015F 0160 0161 0162 0163 0164 0165 0166 0167 0168 0169 016A 016B 016C 016D 016E 016F 0170 0171 0172 0173 0174 0175 0176 0177 0178 0179 017A 017B 017C 017D 017E 017F 0180 0181 0182 0183
CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRW CLRF CLRF CLRF CLRF
284
0184 0185 0186 0188 0189 018A 018B 018C 018D 018E 018F 0190 0191 0192 0193 0194 0195 0196 0197 0198 0199 019A 019B 019C 019D 019E 019F 01A0 01A1 01A2 01A3 01A4 01A5 01A6 01A7
CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF
01A8 01A9 01AA 01AB 01AC 01AD 01AE 01AF 01B0 01B1 01B2 01B3 01B4 01B5 01B6 01B7 01B8 01B9 01BA 01BB 01BC 01BD 01BE 01BF 01C0 01C1 01C2 01C3 01C4 01C5 01C6 01C7 01C8 01C9 01CA
CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF CLRF
28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A
285
01CB 01CC 01CD 01CE 01CF 020C 020D 020E 020F 0210 0211 0212 0213 0214 0215 0216 0217 0218 0219 021A 021B 021C 021D 021E 021F 0220 0221 0222 0223 0224 0225 0226 0227 0228 0229 022A 022B
CLRF CLRF CLRF CLRF CLRF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF
4B 4C 4D 4E 4F 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B
022C 022D 022E 022F 0230 0231 0232 0233 0234 0235 0236 0237 0238 0239 023A 023B 023C 023D 023E 023F 0240 0241 0242 0243 0244 0245 0246 0247 0248 0249 024A 024B 024C 024D 024E 024F 030C
SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF SUBWF DECF
2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 2C 2D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 0C
286
030D 030E 030F 0310 0311 0312 0313 0314 0315 0316 0317 0318 0319 031A 031B 031C 031D 031E 031F 0320 0321 0322 0323 0324 0325 0326 0327 0328 0329 032A 032B 032C 032D 032E 032F 0330 0331
DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF
0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31
0332 0333 0334 0335 0336 0337 0338 0339 033A 033B 033C 033D 033E 033F 0340 0341 0342 0343 0344 0345 0346 0347 0348 0349 034A 034B 034C 034D 034E 034F 040C 040D 040E 040F 0410 0411 0412
DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF DECF IORWF IORWF IORWF IORWF IORWF IORWF IORWF
32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 0C 0D 0E 0F 10 11 12
287
0413 0414 0415 0416 0417 0418 0419 041A 041B 041C 041D 041E 041F 0420 0421 0422 0423 0424 0425 0426 0427 0428 0429 042A 042B 042C 042D 042E 042F 0430 0431 0432 0433 0434 0435 0436 0437
IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF
13 14 15 16 17 18 19 2A 2B 2C 2D 2E 2F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37
0438 0439 043A 043B 043C 043D 043E 043F 0440 0441 0442 0443 0444 0445 0446 0447 0448 0449 044A 044B 044C 044D 044E 044F 050C 050D 050E 050F 0510 0511 0512 0513 0514 0515 0516 0517 0518
IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF IORWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF
38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18
288
0519 051A 051B 051C 051D 051E 051F 0520 0521 0522 0523 0524 0525 0526 0527 0528 0529 052A 052B 052C 052D 052E 052F 0530 0531 0532 0533 0534 0535 0536 0537 0538 0539 053A 053B 053C 053D
ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF
19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D
053E 053F 0540 0541 0542 0543 0544 0545 0546 0547 0548 0549 054A 054B 054C 054D 054E 054F 060C 060D 060E 060F 0610 0611 0612 0613 0614 0615 0616 0617 0618 0619 061A 061B 061C 061D 061E
ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF ANDWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF
3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E
289
061F 0620 0621 0622 0623 0624 0625 0626 0627 0628 0629 062A 062B 062C 062D 062E 062F 0630 0631 0632 0633 0634 0635 0636 0637 0638 0639 063A 063B 063C 063D 063E 063F 0640 0641 0642 0643
XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF
1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43
0644 0645 0646 0647 0648 0649 064A 064B 064C 064D 064E 064F 070C 070D 070E 070F 0710 0711 0712 0713 0714 0715 0716 0717 0718 0719 071A 071B 071C 071D 071E 071F 0720 0721 0722 0723 0724
XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF XORWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF
44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24
290
0725 0726 0727 0728 0729 072A 072B 072C 072D 072E 072F 0730 0731 0732 0733 0734 0735 0736 0737 0738 0739 073A 073B 073C 073D 073E 073F 0740 0741 0742 0743 0744 0745 0746 0747 0748 0749
ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF
25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49
074A 074B 074C 074D 074E 074F 080C 080D 080E 080F 0810 0811 0812 0813 0814 0815 0816 0817 0818 0819 081A 081B 081C 081D 081E 081F 0820 0821 0822 0823 0824 0825 0826 0827 0828 0829 082A
ADDWF ADDWF ADDWF ADDWF ADDWF ADDWF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF
4A 4B 4C 4D 4E 4F 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A
291
082B 082C 082D 082E 082F 0830 0831 0832 0833 0834 0835 0836 0837 0838 0839 083A 083B 083C 083D 083E 083F 0840 0841 0842 0843 0844 0845 0846 0847 0848 0849 084A 084B 084C 084D 084E
MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF MOVF
2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E
084F 090C 090D 090E 090F 0910 0911 0912 0913 0914 0915 0916 0917 0918 0919 091A 091B 091C 091D 091E 091F 0920 0921 0922 0923 0924 0925 0926 0927 0928 0929 092A 092B 092C 092D 092E
MOVF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF
4F 0C,w 0D,w 0E,w 0F,w 10,w 11,w 12,w 13,w 14,w 15,w 16,w 17,w 18,w 19,w 1A,w 1B,w 1C,w 1D,w 1E,w 1F,w 20,w 21,w 22,w 23,w 24,w 25,w 26,w 27,w 28,w 29,w 2A,w 2B,w 2C,w 2D,w 2E,w
292
092F 0930 0931 0932 0933 0934 0935 0936 0937 0938 0939 093A 093B 093C 093D 093E 093F 0940 0941 0942 0943 0944 0945 0946 0947 0948 0949 094A 094B 094C 094D 094E 094F 098C 098D 098E
COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF
2F,w 30,w 31,w 32,w 33,w 34,w 35,w 36,w 37,w 38,w 39,w 3A,w 3B,w 3C,w 3D,w 3E,w 3F,w 40,w 41,w 42,w 43,w 44,w 45,w 46,w 47,w 48,w 49,w 4A,w 4B,w 4C,w 4D,w 4E,w 4F,w 0C,f 0D,f 0E,f
098F 0990 0991 0992 0993 0994 0995 0996 0997 0998 0999 099A 099B 099C 099D 099E 099F 09A0 09A1 09A2 09A3 09A4 09A5 09A6 09A7 09A8 09A9 09AA 09AB 09AC 09AD 09AE 09AF 09B0 09B1 09B2
COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF
0F,f 10,f 11,f 12,f 13,f 14,f 15,f 16,f 17,f 18,f 19,f 1A,f 1B,f 1C,f 1D,f 1E,f 1F,f 20,f 21,f 22,f 23,f 24,f 25,f 26,f 27,f 28,f 29,f 2A,f 2B,f 2C,f 2D,f 2E,f 2F,f 30,f 31,f 32,f
293
09B3 09B4 09B5 09B6 09B7 09B8 09B9 09BA 09BB 09BC 09BD 09BE 09BF 09C0 09C1 09C2 09C3 09C4 09C5 09C6 09C7 09C8 09C9 09CA 09CB 09CC 09CD 09CE 09CF 0A0C 0A0D 0A0E 0A0F 0A10 0A11 0A12
COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF COMF INCF INCF INCF INCF INCF INCF INCF
33,f 34,f 35,f 36,f 37,f 38,f 39,f 3A,f 3B,f 3C,f 3D,f 3E,f 3F,f 40,f 41,f 42,f 43,f 44,f 45,f 46,f 47,f 48,f 49,f 4A,f 4B,f 4C,f 4D,f 4E ,f 4F,f 0C,w 0D,w 0E,w 0F,w 10,w 11,w 12,w
0A13 0A14 0A15 0A16 0A17 0A18 0A19 0A1A 0A1B 0A1C 0A1D 0A1E 0A1F 0A20 0A21 0A22 0A23 0A24 0A25 0A26 0A27 0A28 0A29 0A2A 0A3B 0A2C 0A2D 0A2E 0A2F 0A30 0A31 0A32 0A33 0A34 0A35 0A36
INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF
13,w 14,w 15,w 16,w 17,w 18,w 19,w 1A,w 1B,w 1C,w 1D,w 1E,w 1F,w 20,w 21,w 22,w 23,w 24,w 25,w 26,w 27,w 28,w 29,w 2A,w 2B,w 2C,w 2D,w 2E,w 2F,w 30,w 31,w 32,w 33,w 34,w 35,w 36,w
294
0A37 0A38 0A39 0A3A 0A3B 0A3C 0A3D 0A3E 0A3F 0A40 0A41 0A42 0A43 0A44 0A45 0A46 0A47 0A48 0A49 0A4A 0A4B 0A4C 0A4D 0A4E 0A4F 0A8C 0A8D 0A8E 0A8F 0A90 0A91 0A92 0A93 0A94 0A95 0A96
INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF
37,w 38,w 39,w 3A,w 3B,w 3C,w 3D,w 3E,w 3F,w 40,w 41,w 42,w 43,w 44,w 45,w 46,w 47,w 48,w 49,w 4A,w 4B,w 4C,w 4D,w 4E,w 4F,w 0C,f 0D,f 0E,f 0F,f 10,f 11,f 12,f 13,f 14,f 15f 16,f
0A97 0A98 0A99 0A9A 0A9B 0A9C 0A9D 0A9E 0A9F 0AA0 0AA1 0AA2 0AA3 0AA4 0AA5 0AA6 0AA7 0AA8 0AA9 0AAA 0AAB 0AAC 0AAD 0AAE 0AAF 0AB0 0AB1 0AB2 0AB3 0AB4 0AB5 0AB6 0AB7 0AB8 0AB9 0ABA
INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF
17,f 18,f 19,f 1A,f 1B,f 1C,f 1D,f 1E,f 1F,f 20,f 21,f 22,f 23,f 24,f 25,f 26,f 27,f 28,f 29,f 2A,f 2B,f 2C,f 2D,f 2E,f 2F,f 30,f 31,f 32,f 33,f 34,f 35,f 36,f 37,f 38,f 39,f 3A,f
295
0ABB 0ABC 0ABD 0ABE 0ABF 0AC0 0AC1 0AC2 0AC3 0AC4 0AC5 0AC6 0AC7 0AC8 0AC9 0ACA 0ACB 0ACC 0ACD 0ACE 0ACF 0B0C 0B0D 0B0E 0B0F 0B10 0B11 0B12 0B13 0B14 0B15 0B16 0B17 0B18 0B19 0B1A
INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF INCF DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ
3B,f 3C,f 3D,f 3E,f 3F,f 40,f 41,f 42,f 43,f 44,f 45,f 46,f 47,f 48,f 49,f 4A,f 4B,f 4C,f 4D,f 4E,f 4F,f 0C,w 0D,w 0E,w 0F,w 10,w 11,w 12,w 13,w 14,w 15,w 16,w 17,w 18,w 19,w 1A,w
0B1B 0B1C 0B1D 0B1E 0B1F 0B20 0B21 0B22 0B23 0B24 0B25 0B26 0B27 0B28 0B29 0B2A 0B2B 0B2C 0B2D 0B2E 0B2F 0B30 0B31 0B32 0B33 0B34 0B35 0B36 0B37 0B38 0B39 0B3A 0B3B 0B3C 0B3D 0B3E
DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ
1B,w 1C,w 1D,w 1E,w 1F,w 20,w 21,w 22,w 23,w 24,w 25,w 26,w 27,w 28,w 29,w 2A,w 2B,w 2C,w 2D,w 2E,w 2F,w 30,w 31,w 32,w 33,w 34,w 35,w 36,w 37,w 38,w 29,w 3A,w 3B,w 3C,w 3D,w 3E,w
296
0B3F 0B40 0B41 0B42 0B43 0B44 0B45 0B46 0B47 0B48 0B49 0B4A 0B4B 0B4C 0B4D 0B4E 0B4F 0B8C 0B8D 0B8E 0B8F 0B90 0B91 0B92 0B93 0B94 0B95 0B96 0B97 0B98 0B99 0B9A 0B9B 0B9C 0B9D 0B9E
DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ
3F,w 40,w 41,w 42,w 43,w 44,w 45,w 46,w 47,w 48,w 49,w 4A,w 4B,w 4C,w 4D,w 4E,w 4F,w 0C,f 0D,f 0E,f 0F,f 10,f 11,f 12,f 13,f 14,f 15,f 16,f 17,f 18,f 19,f 1A,f 1B,f 1C,f 1D,f 1E,f
0B9F 0BA0 0BA1 0BA2 0BA3 0BA4 0BA5 0BA6 0BA7 0BA8 0BA9 0BAA 0BAB 0BAC 0BAD 0BAE 0BAF 0BB0 0BB1 0BB2 0BB3 0BB4 0BB5 0BB6 0BB7 0BB8 0BB9 0BBA 0BBB 0BBC 0BBD 0BBE 0BBF 0BC0 0BC1 0BC2
DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECCFS DECFES DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ
1F,f 20,f 21,f 22,f 23,f 24,f 25,f 26,f 27,f 28,f 29,f 2A,f 2B,f 2C,f 2D,f 2E,f 2F,f 30,f 31,f 32,f 33,f 34,f 35,f 36,f 37,f 38,f 39,f 3A,f 3B,f 3C,f 3D,f 3E,f 3F,f 40,f 41,f 42,f
297
0BC3 0BC4 0BC5 0BC6 0BC7 0BC8 0BC9 0BCA 0BCB 0BCC 0BCD 0BCE 0BCF 0C0C 0C0D 0C0E 0C0F 0C10 0C11 0C12 0C13 0C14 0C15 0C16 0C17 0C18 0C19 0C1A 0C1B 0C1C 0C1D 0C1E 0C1F 0C20 0C21 0C22
DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ DECFSZ RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF
43,f 44,f 45,f 46,f 47,f 48,f 49,f 4A,f 4B,f 4C,f 4D,f 4E,f 4F,f 0C,w 0D,w 0E,w 0F,w 10,w 11,w 12,w 13,w 14,w 15,w 16,w 17,w 18,w 19,w 1A,w 1B,w 1B,w 1D,w 1E,w 1F,w 20,w 21,w 22,w
0C23 0C24 0C25 0C26 0C27 0C28 0C29 0C2A 0C2B 0C2C 0C2D 0C2E 0C2F 0C30 0C31 0C32 0C33 0C34 0C35 0C36 0C37 0C38 0C39 0C3A 0C3B 0C3C 0C3D 0C3E 0C3F 0C40 0C41 0C42 0C43 0C44 0C45 0C46
RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF
23,w 24,w 25,w 26,w 27,w 28,w 29,w 2A,w 2B,w 2C,w 2D,w 2E,w 2F,w 30,w 31,w 32,w 33,w 34,w 35,w 36,w 37,w 38,w 39,w 3A,w 3B,w 3C,w 3D,w 3E,w 3F,w 40,w 41,w 42,w 43,w 44,w 45,w 46,w
298
0C47 0C48 0C49 0C4A 0C4B 0C4C 0C4D 0C4E 0C4F 0C8C 0C8D 0C8E 0C8F 0C90 0C91 0C92 0C93 0C94 0C95 0C96 0C97 0C98 0C99 0C9A 0C9B 0C9C 0C9D 0C9E 0C9F 0CA0 0CA1 0CA2 0CA3 0CA4 0CA5 0CA6
RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF
47,w 48,w 49,w 4A,w 4B,w 4C,w 4D,w 4E,w 4F,w 0C,f 0D,f 0E,f 0F,f 10,f 11,f 12,f 13,f 14,f 15,f 16,f 17,f 18,f 19,f 1A,f 1B,f 1C,f 1D,f 1E,f 1F,f 20,f 21,f 22,f 23,f 24,f 25,f 26,f
0CA7 0CA8 0CA9 0CAA 0CAB 0CAC 0CAD 0CAE 0CAF 0CB0 0CB1 0CB2 0CB3 0CB4 0CB5 0CB6 0CB7 0CB8 0CB9 0CBA 0CBB 0CBC 0CBD 0CBE 0CBF 0CC0 0CC1 0CC2 0CC3 0CC4 0CC5 0CC6 0CC7 0CC8 0CC9 0CCA
RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF RRF
27,f 28,f 29,f 2A,f 2B,f 2C,f 2D,f 2E,f 2F,f 30,f 31,f 32,f 33,f 34,f 35,f 36,f 37,f 38,f 39,f 3A,f 3B,f 3C,f 3D,f 3E,f 3F,f 40,f 41,f 42,f 43,f 44,f 45,f 46 ,f 47,f 48,f 49,f 4A,f
299
0CCB 0CCC 0CCD 0CCE 0CCF 0D0C 0D0D 0D0E 0D0F 0D10 0D11 0D12 0D13 0D14 0D15 0D16 0D17 0D18 0D19 0D1A 0D1B 0D1C 0D1D 0D1E 0D1F 0D20 0D21 0D22 0D23 0D24 0D25 0D26 0D27 0D28 0D29 0D2A
RRF RRF RRF RRF RRF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF
4B,f 4C,f 4D,f 4E,f 4F,f 0C,w 0D,w 0E,w 0F,w 10,w 11,w 12,w 13,w 14,w 15,w 16,w 17,w 18,w 19,w 1A,w 1B,w 1C,w 1D,w 1E,w 1F,w 20,w 21,w 22,w 23,w 24,w 25,w 26,w 27,w 28,w 29,w 2A,w
0D2B 0D2C D02D 0D2E 0D2F 0D30 0D31 0D32 0D33 0D34 0D35 0D36 0D37 0D38 0D39 0D3A 0D3B 0D3C 0D3D 0D3E 0D3F 0D40 0D41 0D42 0D43 0D44 0D45 0D46 0D47 0D48 0D49 0D4A 0D4B 0D4C 0D4D 0D4E
RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF
2B,w 2C,w 2D,w 2E,w 2F,w 30,w 31,w 32,w 33,w 34,w 35,w 36,w 37,w 38,w 39,w 3A,w 3B,w 3C,w 3D,w 3E,w 3F,w 40,w 41,w 42,w 43,w 44,w 45,w 46,w 47,w 48,w 49,w 4A,w 4B,w 4C,w 4D,w 4E,w
300
0D4F 0D8C 0D8D 0D8E 0D8F 0D90 0D91 0D92 0D93 0D94 0D95 0D96 0D97 0D98 0D99 0D9A 0D9B 0D9C 0D9D 0D9E 0D9F 0DA0 0DA1 0DA2 0DA3 0DA4 0DA5 0DA6 0DA7 0DA8 0DA9 0DAA 0DAB 0DAC 0DAD 0DAE
RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF
4F,w 0C,f 0D,f 0E,f 0F,f 10,f 11,f 12,f 13,f 14,f 15,f 16,f 17,f 18,f 19,f 1A,f 1B,f 1C,f 1D,f 1E,f 1F,f 20,f 21,f 22,f 23,f 24,f 25,f 26,f 27,f 28,f 29,f 2A,f 2B,f 2C,f 2D,f 2E,f
0DAF 0DB0 0DB1 0DB2 0DB3 0DB4 0DB5 0DB6 0DB7 0DB8 0DB9 0DBA 0DBB 0DBC 0DBD 0DBE 0DBF 0DC0 0DC1 0DC2 0DC3 0DC4 0DC5 0DC6 0DC7 0DC8 0DC9 0DCA 0DCB 0DCC 0DCD 0DCE 0DCF 0E0C 0E0D 0E0E
RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF RLF SWAPF SWAPF SWAPF
2F,f 30,f 31,f 32,f 33,f 34,f 35,f 36,f 37,f 38,f 39,f 3A,f 3B,f 3C,f 3D,f 3E,f 3F,f 40,f 41,f 42,f 43,f 44,f 45,f 46,f 47,f 48,f 49,f 4A,f 4B,f 4C,f 4D,f 4E,f 4F,f 0C,w 0D,w 0E,w
301
0E0F 0E10 0E11 0E12 0E13 0E14 0E15 0E16 0E17 0E18 0E19 0E1A 0E1B 0E1C 0E1D 0E1E 0E1F 0E20 0E21 0E22 0E23 0E24 0E25 0E26 0E27 0E28 0E29 0E2A 0E2B 0E2C 0E2D 0E2E 0E2F 0E30 0E31 0E32
SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF
0F,w 10,w 11,w 12,w 13,w 14,w 15,w 16,w 17,w 18,w 19,w 1A,w 1B,w 1C,w 1D,w 1E,w 1F,w 20,w 21,w 22,w 23,w 24,w 25,w 26,w 27,w 28,w 29,w 2A,w 2B,w 2C,w 2D,w 2E,w 2F,w 30,w 31,w 32,w
0E33 0E34 0E35 0E36 0E37 0E38 0E39 0E3A 0E3B 0E3C 0E3D 0E3E 0E3F 0E40 0E41 0E42 0E43 0E44 0E45 0E46 0E47 0E48 0E49 0E4A 0E4B 0E4C 0E4D 0E4E 0E4F 0E8C 0E8D 0E8E 0E8F 0E90 0E91 0E92
SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF
33,w 34,w 35,w 36,w 37,w 38,w 39,w 3A,w 3B,w 3C,w 3D,w 3E,w 3F,w 40,w 41,w 42,w 43,w 44,w 45,w 46,w 47,w 48,w 49,w 4A,w 4B,w 4C,w 4D,w 4E,w 4F,f 0C,f 0D,f 0E,f 0F,f 10,f 11,f 12,f
302
0E93 0E94 0E95 0E96 0E97 0E98 0E99 0E9A 0E9B 0E9C 0E9D 0E9E 0E9F 0EA0 0EA1 0EA2 0EA3 0EA4 0EA5 0EA6 0EA7 0EA8 0EA9 0EAA 0EAB 0EAC 0EAD 0EAE 0EAF 0EB0 0EB1 0EB2 0EB3 0EB4 0EB5 0EB6
SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF
13,f 14,f 15,f 16,f 17,f 18,f 19,f 1A,f 1B,f 1C,f 1D,f 1E,f 1F,f 20,f 21,f 22,f 23,f 24,f 25,f 26,f 27,f 28,f 29,f 2A,f 2B,f 2C,f 2D,f 2E,f 2F,f 30,f 31,f 32,f 33,f 34,f 35,f 36,f
0EB7 0EB8 0EB9 0EBA 0EBB 0EBC 0EBD 0EBE 0EBF 0EC0 0EC1 0EC2 0EC3 0EC4 0EC5 0EC6 0EC7 0EC8 0EC9 0ECA 0ECB 0ECC 0ECD 0ECE 0ECF 0F0C 0F0D 0F0E 0F0F 0F10 0F11 0F12 0F13 0F14 0F15 0F16
SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF SWAPF INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ
37,f 38,f 39,f 3A,f 3B,f 3C,f 3D,f 3E,f 3F,f 40,f 41,f 42,f 43,f 44,f 45,f 46,f 47,f 48,f 49,f 4A,f 4B,f 4C,f 4D,f 4E,f 4F,f 0C,w 0D,w 0E,w 0F,w 10,w 11,w 12,w 13,w 14,w 15,w 16,w
303
0F17 0F18 0F19 0F1A 0F1B 0F1C 0F1D 0F1E 0F1F 0F20 0F21 0F22 0F23 0F24 0F25 0F26 0F27 0F28 0F29 0F2A 0F2B 0F2C 0F2D 0F2E 0F2F 0F30 0F31 0F32 0F33 0F34 0F35 0F36 0F37 0F38 0F39 0F3A
INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ
17,w 18,w 19,w 1A,w 1B,w 1C,w 1D,w 1E,w 1F,w 20,w 21,w 22,w 23,w 24,w 25,w 26,w 27,w 28,w 29,w 2A,w 2B,w 2C,w 2D,w 2E,w 2F,w 30,w 31,w 32,w 33,w 34,w 35,w 36,w 37,w 38,w 39,w 3A,w
0F3B 0F3C 0F3D 0F3E 0F3F 0F40 0F41 0F42 0F43 0F44 0F45 0F46 0F47 0F48 0F49 0F4A 0F4B 0F4C 0F4D 0F4E 0F4F 0F8C 0F8D 0F8E 0F8F 0F90 0F91 0F92 0F93 0F94 0F95 0F96 0F97 0F98 0F99 0F9A
INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ
3B,w 3C,w 3D,w 3E,w 3F,w 40,w 41,w 42,w 43,w 44,w 45,w 46,w 47,w 48,w 49,w 4A,w 4B,w 4C,w 4D,w 4E,w 4F,f 0C,f 0D,f 0E,f 0F,f 10,f 11,f 12,f 13,f 14,f 15,f 16,f 17,f 18,f 19,f 1A,f
304
0F9B 0F9C 0F9D 0F9E 0F9F 0FA0 0FA1 0FA2 0FA3 0FA4 0FA5 0FA6 0FA7 0FA8 0FA9 0FAA 0FAB 0FAC 0FAD 0FAE 0FAF 0FB0 0FB1 0FB2 0FB3 0FB4 0FB5 0FB6 0FB7 0FB8 0FB9 0FBA 0FBB 0FBC 0FBD 0FBE
INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ INCFSZ
1B,f 1C,f 1D,f 1E,f 1F,f 20,f 21,f 22,f 23,f 24,f 25,f 26,f 27,f 28,f 29,f 2A,f 2B,f 2C,f 2D,f 2E,f 2F,f 30,f 31,f 32,f 33,f 34,f 35,f 36,f 37,f 38,f 39,f 3A,f 3B,f 3C,f 3D,f 3E,f
0FBF 0FC0 0FC1 0FC2 0FC3 0FC4 0FC5 0FC6 0FC7 0FC8 0FC9 0FCA 0FCB 0FCC 0FCD 0FCE 0FCF 1003 1005 1006 100B 100C 100D 100E 100F 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 101A
INCFSZ 3F,f INCFSZ 40,f INCFSZ 41,f INCFSZ 42,f INCFSZ 43,f INCFSZ 44,f INCFSZ 45,f INCFSZ 46,f INCFSZ 47,f INCFSZ 48,f INCFSZ 49,f INCFSZ 4A,f INCFSZ 4B,f INCFSZ 4C,f INCFSZ 4D,f INCFSZ 4E,f INCFSZ 4F,f BCF STATUS,C BCF PARTA,0 BCF PORTB,0 BCF INTCON,RBIF BCF 0C,0 BCF 0D,0 BCF 0E,0 BCF 0F,0 BCF 10,0 BCF 11,0 BCF 12,0 BCF 13,0 BCF 14,0 BCF 15,0 BCF 16,0 BCF 17,0 BCF 18,0 BCF 19,0 BCF 1A,0
305
101B 101C 101D 101E 101F 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 102A 102B 102C 102D 102E 102F 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 103A 103B 103C 103D 103E
BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF
1B,0 1C,0 1D,0 1E,0 1F,0 20,0 21,0 22,0 23,0 24,0 25,0 26,0 27,0 28,0 29,0 2A,0 2B,0 2C,0 2D,0 2E,0 2F,0 30,0 31,0 32,0 33,0 34,0 35,0 36,0 37,0 38,0 39,0 3A,0 3B,0 3C,0 3D,0 3E,0
103F 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 104A 104B 104C 104D 104E 104F 1083 1085 1086 108B 108C 108D 108E 108F 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 109A
BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF
3F,0 40,0 41,0 42,0 43,0 44,0 45,0 46,0 47,0 48,0 49,0 4A,0 4B,0 4C,0 4D,0 4E,0 4F,0 STATUS,DC PORTA,1 PORTB,1 INTCON,INTF 0C,1 0D,1 0E,1 0F,1 10,1 11,1 12,1 13,1 14,1 15,1 16,1 17,1 18,1 19,1 1A,1
306
109B 109C 109D 109E 109F 10A0 10A1 10A2 10A3 10A4 10A5 10A6 10A7 10A8 10A9 10AA 10AB 10AC 10AD 10AE 10AF 10B0 10B1 10B2 10B3 10B4 10B5 10B6 10B7 10B8 10B9 10BA 10BB 10BC 10BD 10BE
BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF
1B,1 1C,1 1D,1 1E,1 1F,1 20,1 21,1 22,1 23,1 24,1 25,1 26,1 27,1 28,1 29,1 2A,1 2B,1 2C,1 2D,1 2E,1 2F,1 30,1 31,1 32,1 33,1 34,1 35,1 36,1 37,1 38,1 39,1 3A,1 3B,1 3C,1 3D,1 3E,1
10BF 10C0 10C1 10C2 10C3 10C4 10C5 10C6 10C7 10C8 10C9 10CA 10CB 10CC 10CD 10CE 10CF 1103 1105 1106 110B 110C 110D 110E 110F 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 111A
BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF
3F,1 40,1 41,1 42,1 43,1 44,1 45,1 46,1 47,1 48,1 49,1 4A,1 4B,1 4C,1 4D,1 4E,1 4F,1 STATUS,Z PORTA,2 PORTB,2 INTCON,TOIF 0C,2 0D,2 0E,2 0F,2 10,2 11,2 12,2 13,2 14,2 15,2 16,2 17,2 18,2 19,2 1A,2
307
111B 111C 111D 111E 111F 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 112A 112B 112C 112D 112E 112F 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 113A 113B 113C 113D 113E
BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF
1B,2 1C,2 1D,2 1E,2 1F,2 20,2 21,2 22,2 23,2 24,2 25,2 26,2 27,2 28,2 29,2 2A,2 2B,2 2C,2 2D,2 2E,2 2F,2 30,2 31,2 32,2 33,2 34,2 35,2 36,2 37,2 38,2 39,2 3A,2 3B,2 3C,2 3D,2 3E,2
113F 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 114A 114B 114C 114D 114E 114F 1183 1185 1186 118B 118C 118D 118E 118F 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 119A
BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF
3F,2 40,2 41,2 42,2 43,2 44,2 45,2 46,2 47,2 48,2 49,2 4A,2 4B,2 4C,2 4D,2 4E,2 4F,2 STATUS,PD PORTA,3 PORTB,3 INTCON,RBIE 0C,3 0D,3 0E,3 0F,3 10,3 11,3 12,3 13,3 14,3 15,3 16,3 17,3 18,3 19,3 1A,3
308
119B 119C 119D 119E 119F 11A0 11A1 11A2 11A3 11A4 11A5 11A6 11A7 11A8 11A9 11AA 11AB 11AC 11AD 11AE 11AF 11B0 11B1 11B2 11B3 11B4 11B5 11B6 11B7 11B8 11B9 11BA 11BB 11BC 11BD 11BE
BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF
1B,3 1C,3 1D,3 1E,3 1F,3 20,3 21,3 22 ,3 23,3 24,3 25,3 26,3 27,3 28,3 29,3 2A,3 2B,3 2C,3 2D,3 2E,3 2F,3 30,3 31,3 32,3 33,3 34,3 35,3 36,3 37,3 38,3 39,3 3A,3 3B,3 3C,3 3D,3 3E,3
11BF 11C0 11C1 11C2 11C3 11C4 11C5 11C6 11C7 11C8 11C9 11CA 11CB 11CC 11CD 11CE 11CF 1203 1205 1206 120B 120C 120D 120E 120F 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 121A
BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF
3F,3 40,3 41,3 42,3 43,3 44,3 45,3 46,3 47,3 48,3 49,3 4A,3 4B,3 4C,3 4D,3 4E,3 4F,3 STATUS,TO PORTA,4 PORTB,4 INTCON,INTE 0C,4 0D,4 0E,4 0F,4 10,4 11,4 12,4 13,4 14,4 15,4 16,4 17,4 18,4 19,4 1A,4
309
121B 121C 121D 121E 121F 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 122A 122B 122C 122D 122E 122F 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 123A 123B 123C 123D 123E
BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF
1B,4 1C,4 1D,4 1E,4 1F,4 20,4 21,4 22,4 23,4 24,4 25,4 26,4 27,4 28,4 29,4 2A,4 2B,4 2C,4 2D,4 2E,4 2F,4 30,4 31,4 32,4 33,4 34,4 35,4 36,4 37,4 38,4 39,4 3A,4 3B,4 3C,4 3D,4 3E,4
123F 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 124A 124B 124C 124D 124E 124F 1283 1285 1286 128B 128C 128D 128E 128F 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 129A
BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF
3F,4 40,4 41,4 42,4 43,4 44,4 45,4 46,4 47,4 48,4 49,4 4A,4 4B,4 4C,4 4D,4 4E,4 4F,4 STATUS,RP0 PORTA,5 PORTB,5 INTCON,TOIE 0C,5 0D,5 0E,5 0F,5 10,5 11,5 12,5 13,5 14,5 15,5 16,5 17,5 18,5 19,5 1A,5
310
129B 129C 129D 129E 129F 12A0 12A1 12A2 12A3 12A4 12A5 12A6 12A7 12A8 12A9 12AA 12AB 12AC 12AD 12AE 12AF 12B0 12B1 12B2 12B3 12B4 12B5 12B6 12B7 12B8 12B9 12BA 12BB 12BC 12BD 12BE
BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF
1B,5 1C,5 1D,5 1E,5 1F,5 20,5 21,5 22,5 23,5 24,5 25,5 26,5 27,5 28,5 29,5 2A,5 2B,5 2C,5 2D,5 2E,5 2F,5 30,5 31,5 32,5 33,5 34,5 35,5 36,5 37,5 38,5 39,5 3A,5 3B,5 3C,5 3D,5 3E,5
12BF 12C0 12C1 12C2 12C3 12C4 12C5 12C6 12C7 12C8 12C9 12CA 12CB 12CC 12CD 12CE 12CF 1303 1305 1306 130B 130C 130D 130E 130F 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 131A
BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF
3F,5 40,5 41,5 42,5 43,5 44,5 45,5 46,5 47,5 48,5 49,5 4A,5 4B,5 4C,5 4D,5 4E,5 4F,5 STATUS,6 PORTA,6 PORTB,6 INTCON,EEIE 0C,6 0D,6 0E,6 0F,6 10,6 11,6 12,6 13,6 14,6 15,6 16,6 17,6 18,6 19,6 1A,6
311
131B 131C 131D 131E 131F 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 132A 132B 132C 132D 132E 132F 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 133A 133B 133C 133D 133E
BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF
1B,6 1C,6 1D,6 1E,6 1F,6 20,6 21,6 22,6 23,6 24,6 25,6 26,6 27,6 28,6 29,6 2A,6 2B,6 2C,6 2D,6 2E,6 2F,6 30,6 31,6 32,6 33,6 34,6 35,6 36,6 37,6 38,6 39,6 3A,6 3B,6 3C,6 3D,6 3E,6
133F 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 134A 134B 134C 134D 134E 134F 1383 1385 1386 138B 138C 138D 138E 138F 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 139A
BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF
3F,6 40,6 41,6 42,6 43,6 44,6 45,6 46,6 47,6 48,6 49,6 4A,6 4B,6 4C,6 4D,6 4E,6 4F,6 STATUS,7 PORTA,7 PORTB,7 INTCON,GIE 0C,7 0D,7 0E,7 0F,7 10,7 11,7 12,7 13,7 14,7 15,7 16,7 17,7 18,7 19,7 1A,7
312
139B 139C 139D 139E 139F 13A0 13A1 13A2 13A3 13A4 13A5 13A6 13A7 13A8 13A9 13AA 13AB 13AC 13AD 13AE 13AF 13B0 13B1 13B2 13B3 13B4 13B5 13B6 13B7 13B8 13B9 13BA 13BB 13BC 13BD 13BE
BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF
1B,7 1C,7 1D,7 1E,7 1F,7 20,7 21,7 22,7 23,7 24,7 25,7 26,7 27,7 28,7 29,7 2A,7 2B,7 2C,7 2D,7 2E,7 2F,7 30,7 31,7 32,7 33,7 34,7 35,7 36,7 37,7 38,7 39,7 3A,7 3B,7 3C,7 3D,7 3E,7
13BF 13C0 13C1 13C2 13C3 13C4 13C5 13C6 13C7 13C8 13C9 13CA 13CB 13CC 13CD 13CE 13CF 1405 1406 140C 140D 140E 140F 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 141A 141B 141C
BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BCF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF
3F,7 40,7 41,7 42,7 43,7 44,7 45,7 46,7 47,7 48,7 49,7 4A,7 4B,7 4C,7 4D,7 4E,7 4F,7 PORTA,0 PORTB,0 0C,0 0D,0 0E,0 0F,0 10,0 11,0 12,0 13,0 14,0 15,0 16,0 17,0 18,0 19,0 1A,0 1B,0 1C,0
313
141D 141E 141F 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 142A 142B 142C 142D 142E 142F 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 143A 143B 143C 143D 143E 143F 1440
BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF
1D,0 1E,0 1F,0 20,0 21,0 22,0 23,0 24,0 25,0 26,0 27,0 28,0 29,0 2A,0 2B,0 2C,0 2D,0 2E,0 2F,0 30,0 31,0 32,0 33,0 34,0 35,0 36,0 37,0 38,0 39,0 3A,0 3B,0 3C,0 3D,0 3E,0 3F,0 40,0
1441 1442 1443 1444 1445 1446 1447 1448 1449 144A 144B 144C 144D 144E 144F 1485 1486 148C 148D 148E 148F 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 149A 149B 149C 149D 149E
BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF
41,0 42,0 43,0 44,0 45,0 46,0 47,0 48,0 49,0 4A,0 4B,0 4C,0 4D,0 4E,0 4F,0 PORTA,1 PORTB,1 0C,1 0D,1 0E,1 0F,1 10,1 11,1 12,1 13,1 14,1 15,1 16,1 17,1 18,1 19,1 1A,1 1B,1 1C,1 1D,1 1E,1
314
149F 14A0 14A1 14A2 14A3 14A4 14A5 14A6 14A7 14A8 14A9 14AA 14AB 14AC 14AD 14AE 14AF 14B0 14B1 14B2 14B3 14B4 14B5 14B6 14B7 14B8 14B9 14BA 14BB 14BC 14BD 14BE 14BF 14C0 14C1 14C2
BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF
1F,1 20,1 21,1 22,1 23,1 24,1 25,1 26,1 27,1 28,1 29,1 2A,1 2B,1 2C,1 2D,1 2E,1 2F,1 30,1 31,1 32,1 33,1 34,1 35,1 36,1 37,1 38,1 39,1 3A,1 3B,1 3C,1 3D,1 3E,1 3F,1 40,1 41,1 42,1
14C3 14C4 14C5 14C6 14C7 14C8 14C9 14CA 14CB 14CC 14CD 14CE 14CF 1505 1506 150C 150D 150E 150F 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 151A 151B 151C 151D 151E 151F 1520
BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF
43,1 44,1 45,1 46,1 47,1 48,1 49,1 4A,1 4B,1 4C,1 4D,1 4E,1 4F,1 PORTA,2 PORTB,2 0C,2 0D,2 0E,2 0F,2 10,2 11,2 12,2 13,2 14,2 15,2 16,2 17,2 18,2 19,2 1A,2 1B,2 1C,2 1D,2 1E,2 1F,2 20,2
315
1521 1522 1523 1524 1525 1526 1527 1528 1529 152A 152B 152C 152D 152E 152F 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 153A 153B 153C 153D 153E 153F 1540 1541 1542 1543 1544
BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF
21,2 22,2 23,2 24,2 25,2 26,2 27,2 28,2 29,2 2A,2 2B,2 2C,2 2D,2 2E,2 2F,2 30,2 31,2 32,2 33,2 34,2 35,2 36,2 37,2 38,2 39,2 3A,2 3B,2 3C,2 3D,2 3E,2 3F,2 40,2 41,2 42,2 43,2 44,2
1545 1546 1547 1548 1549 154A 154B 154C 154D 154E 154F 1585 1586 158B 158C 158D 158E 158F 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 159A 159B 159C 159D 159E 159F 15A0 15A1
BSF 45,2 BSF 46,2 BSF 47,2 BSF 48,2 BSF 49,2 BSF 4A,2 BSF 4B,2 BSF 4C,2 BSF 4D,2 BSF 4E,2 BSF 4F,2 BSF PORTA,3 BSF PORTB,3 BSF INTCON,RBIE BSF 0C,3 BSF 0D,3 BSF 0E,3 BSF 0F,3 BSF 10,3 BSF 11,3 BSF 12,3 BSF 13,3 BSF 14,3 BSF 15,3 BSF 16,3 BSF 17,3 BSF 18,3 BSF 19,3 BSF 1A,3 BSF 1B,3 BSF 1C,3 BSF 1D,3 BSF 1E,3 BSF 1F,3 BSF 20,3 BSF 21,3
316
15A2 15A3 15A4 15A5 15A6 15A7 15A8 15A9 15AA 15AB 15AC 15AD 15AE 15AF 15B0 15B1 15B2 15B3 15B4 15B5 15B6 15B7 15B8 15B9 15BA 15BB 15BC 15BD 15BE 15BF 15C0 15C1 15C2 15C3 15C4 15C5
BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF
22 ,3 23,3 24,3 25,3 26,3 27,3 28,3 29,3 2A,3 2B,3 2C,3 2D,3 2E,3 2F,3 30,3 31,3 32,3 33,3 34,3 35,3 36,3 37,3 38,3 39,3 3A,3 3B,3 3C,3 3D,3 3E,3 3F,3 40,3 41,3 42,3 43,3 44,3 45,3
15C6 15C7 15C8 15C9 15CA 15CB 15CC 15CD 15CE 15CF 1605 1606 160B 160C 160D 160E 160F 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 161A 161B 161C 161D 161E 161F 1620 1621 1622
BSF 46,3 BSF 47,3 BSF 48,3 BSF 49,3 BSF 4A,3 BSF 4B,3 BSF 4C,3 BSF 4D,3 BSF 4E,3 BSF 4F,3 BSF PORTA,4 BSF PORTB,4 BSF INTCON,INTE BSF 0C,4 BSF 0D,4 BSF 0E,4 BSF 0F,4 BSF 10,4 BSF 11,4 BSF 12,4 BSF 13,4 BSF 14,4 BSF 15,4 BSF 16,4 BSF 17,4 BSF 18,4 BSF 19,4 BSF 1A,4 BSF 1B,4 BSF 1C,4 BSF 1D,4 BSF 1E,4 BSF 1F,4 BSF 20,4 BSF 21,4 BSF 22,4
317
1623 1624 1625 1626 1627 1628 1629 162A 162B 162C 162D 162E 162F 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 163A 163B 163C 163D 163E 163F 1640 1641 1642 1643 1644 1645 1646
BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF
23,4 24,4 25,4 26,4 27,4 28,4 29,4 2A,4 2B,4 2C,4 2D,4 2E,4 2F,4 30,4 31,4 32,4 33,4 34,4 35,4 36,4 37,4 38,4 39,4 3A,4 3B,4 3C,4 3D,4 3E,4 3F,4 40,4 41,4 42,4 43,4 44,4 45,4 46,4
1647 1648 1649 164A 164B 164C 164D 164E 164F 1683 1685 1686 168B 168C 168D 168E 168F 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 169A 169B 169C 169D 169E 169F 16A0 16A1 16A2
BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF
47,4 48,4 49,4 4A,4 4B,4 4C,4 4D,4 4E,4 4F,4 STATUS,RP0 PORTA,5 PORTB,5 INTCON,T0IE 0C,5 0D,5 0E,5 0F,5 10,5 11,5 12,5 13,5 14,5 15,5 16,5 17,5 18,5 19,5 1A,5 1B,5 1C,5 1D,5 1E,5 1F,5 20,5 21,5 22,5
318
16A3 16A4 16A5 16A6 16A7 16A8 16A9 16AA 16AB 16AC 16AD 16AE 16AF 16B0 16B1 16B2 16B3 16B4 16B5 16B6 16B7 16B8 16B9 16BA 16BB 16BC 16BD 16BE 16BF 16C0 16C1 16C2 16C3 16C4 16C5 16C6
BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF
23,5 24,5 25,5 26,5 27,5 28,5 29,5 2A,5 2B,5 2C,5 2D,5 2E,5 2F,5 30,5 31,5 32,5 33,5 34,5 35,5 36,5 37,5 38,5 39,5 3A,5 3B,5 3C,5 3D,5 3E,5 3F,5 40,5 41,5 42,5 43,5 44,5 45,5 46,5
16C7 16C8 16C9 16CA 16CB 16CC 16CD 16CE 16CF 1705 1706 170B 170C 170D 170E 170F 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 171A 171B 171C 171D 171E 171F 1720 1721 1722 1723
BSF 47,5 BSF 48,5 BSF 49,5 BSF 4A,5 BSF 4B,5 BSF 4C,5 BSF 4D,5 BSF 4E,5 BSF 4F,5 BSF PORTA,6 BSF PORTB,6 BSF INTCON,EEIE BSF 0C,6 BSF 0D,6 BSF 0E,6 BSF 0F,6 BSF 10,6 BSF 11,6 BSF 12,6 BSF 13,6 BSF 14,6 BSF 15,6 BSF 16,6 BSF 17,6 BSF 18,6 BSF 19,6 BSF 1A,6 BSF 1B,6 BSF 1C,6 BSF 1D,6 BSF 1E,6 BSF 1F,6 BSF 20,6 BSF 21,6 BSF 22,6 BSF 23,6
319
1724 1725 1726 1727 1728 1729 172A 172B 172C 172D 172E 172F 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 173A 173B 173C 173D 173E 173F 1740 1741 1742 1743 1744 1745 1746 1747
BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF
24,6 25,6 26,6 27,6 28,6 29,6 2A,6 2B,6 2C,6 2D,6 2E,6 2F,6 30,6 31,6 32,6 33,6 34,6 35,6 36,6 37,6 38,6 39,6 3A,6 3B,6 3C,6 3D,6 3E,6 3F,6 40,6 41,6 42,6 43,6 44,6 45,6 46,6 47,6
1748 1749 174A 174B 174C 174D 174E 174F 1785 1786 178B 178C 178D 178E 178F 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 179A 179B 179C 179D 179E 179F 17A0 17A1 17A2 17A3 17A4
BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF
48,6 49,6 4A,6 4B,6 4C,6 4D,6 4E,6 4F,6 PORTA,7 PORTB,7 INTCON,GIE 0C,7 0D,7 0E,7 0F,7 10,7 11,7 12,7 13,7 14,7 15,7 16,7 17,7 18,7 19,7 1A,7 1B,7 1C,7 1D,7 1E,7 1F,7 20,7 21,7 22,7 23,7 24,7
320
17A5 17A6 17A7 17A8 17A9 17AA 17AB 17AC 17AD 17AE 17AF 17B0 17B1 17B2 17B3 17B4 17B5 17B6 17B7 17B8 17B9 17BA 17BB 17BC 17BD 17BE 17BF 17C0 17C1 17C2 17C3 17C4 17C5 17C6 17C7 17C8
BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF BSF
25,7 26,7 27,7 28,7 29,7 2A,7 2B,7 2C,7 2D,7 2E,7 2F,7 30,7 31,7 32,7 33,7 34,7 35,7 36,7 37,7 38,7 39,7 3A,7 3B,7 3C,7 3D,7 3E,7 3F,7 40,7 41,7 42,7 43,7 44,7 45,7 46,7 47,7 48,7
17C9 17CA 17CB 17CC 17CD 17CE 17CF 1803 1805 1806 180B 180C 180D 180E 180F 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 181A 181B 181C 181D 181E 181F 1820 1821 1822 1823 1824
BSF BSF BSF BSF BSF BSF BSF BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC
49,7 4A,7 4B,7 4C,7 4D,7 4E,7 4F,7 STATUS,C PORTA,0 PORTB,0 INTCON,0 0C,0 0D,0 0E,0 0F,0 10,0 11,0 12,0 13,0 14,0 15,0 16,0 17,0 18,0 19,0 1A,0 1B,0 1C,0 1D,0 1E,0 1F,0 20,0 21,0 22,0 23,0 24,0
321
1825 1826 1827 1828 1829 182A 182B 182C 182D 182E 182F 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 183A 183B 183C 183D 183E 183F 1840 1841 1842 1843 1844 1845 1846 1847 1848
BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC
25,0 26,0 27,0 28,0 29,0 2A,0 2B,0 2C,0 2D,0 2E,0 2F,0 30,0 31,0 32,0 33,0 34,0 35,0 36,0 37,0 38,0 39,0 3A,0 3B,0 3C,0 3D,0 3E,0 3F,0 40,0 41,0 42,0 43,0 44,0 45,0 46,0 47,0 48,0
1849 184A 184B 184C 184D 184E 184F 1883 1885 1886 188B 188C 188D 188E 188F 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 189A 189B 189C 189D 189E 189F 18A0 18A1 18A2 18A3 18A4
BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC
49,0 4A,0 4B,0 4C,0 4D,0 4E,0 4F,0 STATUS,DC PORTA,1 PORTB,1 INTCON,INTF 0C,1 0D,1 0E,1 0F,1 10,1 11,1 12,1 13,1 14,1 15,1 16,1 17,1 18,1 19,1 1A,1 1B,1 1C,1 1D,1 1E,1 1F,1 20,1 21,1 22,1 23,1 24,1
322
18A5 18A6 18A7 18A8 18A9 18AA 18AB 18AC 18AD 18AE 18AF 18B0 18B1 18B2 18B3 18B4 18B5 18B6 18B7 18B8 18B9 18BA 18BB 18BC 18BD 18BE 18BF 18C0 18C1 18C2 18C3 18C4 18C5 18C6 18C7 18C8
BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC
25,1 26,1 27,1 28,1 29,1 2A,1 2B,1 2C,1 2D,1 2E,1 2F,1 30,1 31,1 32,1 33,1 34,1 35,1 36,1 37,1 38,1 39,1 3A,1 3B,1 3C,1 3D,1 3E,1 3F,1 40,1 41,1 42,1 43,1 44,1 45,1 46,1 47,1 48,1
18C9 18CA 18CB 18CC 18CD 18CE 18CF 1903 1905 1906 190B 190C 190D 190E 190F 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 191A 191B 191C 191D 191E 191F 1920 1921 1922 1923 1924
BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC
49,1 4A,1 4B,1 4C,1 4D,1 4E,1 4F,1 STATUS,Z PORTA,2 PORTB,2 INTCON,T0IF 0C,2 0D,2 0E,2 0F,2 10,2 11,2 12,2 13,2 14,2 15,2 16,2 17,2 18,2 19,2 1A,2 1B,2 1C,2 1D,2 1E,2 1F,2 20,2 21,2 22,2 23,2 24,2
323
1925 1926 1927 1928 1929 192A 192B 192C 192D 192E 192F 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 193A 193B 193C 193D 193E 193F 1940 1941 1942 1943 1944 1945 1946 1947 1948
BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC
25,2 26,2 27,2 28,2 29,2 2A,2 2B,2 2C,2 2D,2 2E,2 2F,2 30,2 31,2 32,2 33,2 34,2 35,2 36,2 37,2 38,2 39,2 3A,2 3B,2 3C,2 3D,2 3E,2 3F,2 40,2 41,2 42,2 43,2 44,2 45,2 46,2 47,2 48,2
1949 194A 194B 194C 194D 194E 194F 1983 1985 1986 198B 198C 198D 198E 198F 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 199A 199B 199C 199D 199E 199F 19A0 19A1 19A2 19A3 19A4
BTFSC 49,2 BTFSC 4A,2 BTFSC 4B,2 BTFSC 4C,2 BTFSC 4D,2 BTFSC 4E,2 BTFSC 4F,2 BTFSC STATUS,PD BTFSC PORTA,3 BTFSC PORTB,3 BTFSC INTCON,RBIE BTFSC 0C,3 BTFSC 0D,3 BTFSC 0E,3 BTFSC 0F,3 BTFSC 10,3 BTFSC 11,3 BTFSC 12,3 BTFSC 13,3 BTFSC 14,3 BTFSC 15,3 BTFSC 16,3 BTFSC 17,3 BTFSC 18,3 BTFSC 19,3 BTFSC 1A,3 BTFSC 1B,3 BTFSC 1C,3 BTFSC 1D,3 BTFSC 1E,3 BTFSC 1F,3 BTFSC 20,3 BTFSC 21,3 BTFSC 22 ,3 BTFSC 23,3 BTFSC 24,3
324
19A5 19A6 19A7 19A8 19A9 19AA 19AB 19AC 19AD 19AE 19AF 19B0 19B1 19B2 19B3 19B4 19B5 19B6 19B7 19B8 19B9 19BA 19BB 19BC 19BD 19BE 19BF 19C0 19C1 19C2 19C3 19C4 19C5 19C6 19C7 19C8
BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC
25,3 26,3 27,3 28,3 29,3 2A,3 2B,3 2C,3 2D,3 2E,3 2F,3 30,3 31,3 32,3 33,3 34,3 35,3 36,3 37,3 38,3 39,3 3A,3 3B,3 3C,3 3D,3 3E,3 3F,3 40,3 41,3 42,3 43,3 44,3 45,3 46,3 47,3 48,3
19C9 19CA 19CB 19CC 19CD 19CE 19CF 1A03 1A05 1A06 1A0B 1A0C 1A0D 1A0E 1A0F 1A10 1A11 1A12 1A13 1A14 1A15 1A16 1A17 1A18 1A19 1A1A 1A1B 1A1C 1A1D 1A1E 1A1F 1A20 1A21 1A22 1A23 1A24
BTFSC 49,3 BTFSC 4A,3 BTFSC 4B,3 BTFSC 4C,3 BTFSC 4D,3 BTFSC 4E,3 BTFSC 4F,3 BTFSC STATUS,TO BTFSC PORTA,4 BTFSC PORTB,4 BTFSC INTCON,INTE BTFSC 0C,4 BTFSC 0D,4 BTFSC 0E,4 BTFSC 0F,4 BTFSC 10,4 BTFSC 11,4 BTFSC 12,4 BTFSC 13,4 BTFSC 14,4 BTFSC 15,4 BTFSC 16,4 BTFSC 17,4 BTFSC 18,4 BTFSC 19,4 BTFSC 1A,4 BTFSC 1B,4 BTFSC 1C,4 BTFSC 1D,4 BTFSC 1E,4 BTFSC 1F,4 BTFSC 20,4 BTFSC 21,4 BTFSC 22 ,4 BTFSC 23,4 BTFSC 24,4
325
1A25 1A26 1A27 1A28 1A29 1A2A 1A2B 1A2C 1A2D 1A2E 1A2F 1A30 1A31 1A32 1A33 1A34 1A35 1A36 1A37 1A38 1A39 1A3A 1A3B 1A3C 1A3D 1A3E 1A3F 1A40 1A41 1A42 1A43 1A44 1A45 1A46 1A47 1A48
BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC
25,4 26,4 27,4 28,4 29,4 2A,4 2B,4 2C,4 2D,4 2E,4 2F,4 30,4 31,4 32,4 33,4 34,4 35,4 36,4 37,4 38,4 39,4 3A,4 3B,4 3C,4 3D,4 3E,4 3F,4 40,4 41,4 42,4 43,4 44,4 45,4 46,4 47,4 48,4
1A49 1A4A 1A4B 1A4C 1A4D 1A4E 1A4F 1A83 1A85 1A86 1A8B 1A8C 1A8D 1A8E 1A8F 1A90 1A91 1A92 1A93 1A94 1A95 1A96 1A97 1A98 1A99 1A9A 1A9B 1A9C 1A9D 1A9E 1A9F 1AA0 1AA1 1AA2 1AA3 1AA4
BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC
49,4 4A,4 4B,4 4C,4 4D,4 4E,4 4F,4 STATUS,RP0 PORTA,5 PORTB,5 INTCON,T0IE 0C,5 0D,5 0E,5 0F,5 10,5 11,5 12,5 13,5 14,5 15,5 16,5 17,5 18,5 19,5 1A,5 1B,5 1C,5 1D,5 1E,5 1F,5 20,5 21,5 22,5 23,5 24,5
326
1AA5 1AA6 1AA7 1AA8 1AA9 1AAA 1AAB 1AAC 1AAD 1AAE 1AAF 1AB0 1AB1 1AB2 1AB3 1AB4 1AB5 1AB6 1AB7 1AB8 1AB9 1ABA 1ABB 1ABC 1ABD 1ABE 1ABF 1AC0 1AC1 1AC2 1AC3 1AC4 1AC5 1AC6 1AC7 1AC8
BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC
25,5 26,5 27,5 28,5 29,5 2A,5 2B,5 2C,5 2D,5 2E,5 2F,5 30,5 31,5 32,5 33,5 34,5 35,5 36,5 37,5 38,5 39,5 3A,5 3B,5 3C,5 3D,5 3E,5 3F,5 40,5 41,5 42,5 43,5 44,5 45,5 46,5 47,5 48,5
1AC9 1ACA 1ACB 1ACC 1ACD 1ACE 1ACF 1B05 1B06 1B0B 1B0C 1B0D 1B0E 1B0F 1B10 1B11 1B12 1B13 1B14 1B15 1B16 1B17 1B18 1B19 1B1A 1B1B 1B1C 1B1D 1B1E 1B1F 1B20 1B21 1B22 1B23 1B24 1B25
BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC
49,5 4A,5 4B,5 4C,5 4D,5 4E,5 4F,5 PORTA,6 PORTB,6 INTCON,EEIE 0C,6 0D,6 0E,6 0F,6 10,6 11,6 12,6 13,6 14,6 15,6 16,6 17,6 18,6 19,6 1A,6 1B,6 1C,6 1D,6 1E,6 1F,6 20,6 21,6 22,6 23,6 24,6 25,6
327
1B26 1B27 1B28 1B29 1B2A 1B2B 1B2C 1B2D 1B2E 1B2F 1B30 1B31 1B32 1B33 1B34 1B35 1B36 1B37 1B38 1B39 1B3A 1B3B 1B3C 1B3D 1B3E 1B3F 1B40 1B41 1B42 1B43 1B44 1B45 1B46 1B47 1B48 1B49
BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC
26,6 27,6 28,6 29,6 2A,6 2B,6 2C,6 2D,6 2E,6 2F,6 30,6 31,6 32,6 33,6 34,6 35,6 36,6 37,6 38,6 39,6 3A,6 3B,6 3C,6 3D,6 3E,6 3F,6 40,6 41,6 42,6 43,6 44,6 45,6 46,6 47,6 48,6 49,6
1B4A 1B4B 1B4C 1B4D 1B4E 1B4F 1B85 1B86 1B8B 1B8C 1B8D 1B8E 1B8F 1B90 1B91 1B92 1B93 1B94 1B95 1B96 1B97 1B98 1B99 1B9A 1B9B 1B9C 1B9D 1B9E 1B9F 1BA0 1BA1 1BA2 1BA3 1BA4 1BA5 1BA6
BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC
4A,6 4B,6 4C,6 4D,6 4E,6 4F,6 PORTA,7 PORTB,7 INTCON,GIE 0C,7 0D,7 0E,7 0F,7 10,7 11,7 12,7 13,7 14,7 15,7 16,7 17,7 18,7 19,7 1A,7 1B,7 1C,7 1D,7 1E,7 1F,7 20,7 21,7 22,7 23,7 24,7 25,7 26,7
328
1BA7 1BA8 1BA9 1BAA 1BAB 1BAC 1BAD 1BAE 1BAF 1BB0 1BB1 1BB2 1BB3 1BB4 1BB5 1BB6 1BB7 1BB8 1BB9 1BBA 1BBB 1BBC 1BBD 1BBE 1BBF 1BC0 1BC1 1BC2 1BC3 1BC4 1BC5 1BC6 1BC7 1BC8 1BC9 1BCA
BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC BTFSC
27,7 28,7 29,7 2A,7 2B,7 2C,7 2D,7 2E,7 2F,7 30,7 31,7 32,7 33,7 34,7 35,7 36,7 37,7 38,7 39,7 3A,7 3B,7 3C,7 3D,7 3E,7 3F,7 40,7 41,7 42,7 43,7 44,7 45,7 46,7 47,7 48,7 49,7 4A,7
1BCB 1BCC 1BCD 1BCE 1BCF 1C03 1C05 1C06 1C0B 1C0C 1C0D 1C0E 1C0F 1C10 1C11 1C12 1C13 1C14 1C15 1C16 1C17 1C18 1C19 1C1A 1C1B 1C1C 1C1D 1C1E 1C1F 1C20 1C21 1C22 1C23 1C24 1C25 1C26
BTFSC BTFSC BTFSC BTFSC BTFSC BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS
4B,7 4C,7 4D,7 4E,7 4F,7 STATUS,C PORTA,0 PORTB,0 INTCON,0 0C,0 0D,0 0E,0 0F,0 10,0 11,0 12,0 13,0 14,0 15,0 16,0 17,0 18,0 19,0 1A,0 1B,0 1C,0 1D,0 1E,0 1F,0 20,0 21,0 22,0 23,0 24,0 25,0 26,0
329
1C27 1C28 1C29 1C2A 1C2B 1C2C 1C2D 1C2E 1C2F 1C30 1C31 1C32 1C33 1C34 1C35 1C36 1C37 1C38 1C39 1C3A 1C3B 1C3C 1C3D 1C3E 1C3F 1C40 1C41 1C42 1C43 1C44 1C45 1C46 1C47 1C48 1C49 1C4A
BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS
27,0 28,0 29,0 2A,0 2B,0 2C,0 2D,0 2E,0 2F,0 30,0 31,0 32,0 33,0 34,0 35,0 36,0 37,0 38,0 39,0 3A,0 3B,0 3C,0 3D,0 3E,0 3F,0 40,0 41,0 42,0 43,0 44,0 45,0 46,0 47,0 48,0 49,0 4A,0
1C4B 1C4C 1C4D 1C4E 1C4F 1C83 1C85 1C86 1C8B 1C8C 1C8D 1C8E 1C8F 1C90 1C91 1C92 1C93 1C94 1C95 1C96 1C97 1C98 1C99 1C9A 1C9B 1C9C 1C9D 1C9E 1C9F 1CA0 1CA1 1CA2 1CA3 1CA4 1CA5 1CA6
BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS
4B,0 4C,0 4D,0 4E,0 4F,0 STATUS,DC PORTA,1 PORTB,1 INTCON,INTF 0C,1 0D,1 0E,1 0F,1 10,1 11,1 12,1 13,1 14,1 15,1 16,1 17,1 18,1 19,1 1A,1 1B,1 1C,1 1D,1 1E,1 1F,1 20,1 21,1 22,1 23,1 24,1 25,1 26,1
330
1CA7 1CA8 1CA9 1CAA 1CAB 1CAC 1CAD 1CAE 1CAF 1CB0 1CB1 1CB2 1CB3 1CB4 1CB5 1CB6 1CB7 1CB8 1CB9 1CBA 1CBB 1CBC 1CBD 1CBE 1CBF 1CC0 1CC1 1CC2 1CC3 1CC4 1CC5 1CC6 1CC7 1CC8 1CC9 1CCA
BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS
27,1 28,1 29,1 2A,1 2B,1 2C,1 2D,1 2E,1 2F,1 30,1 31,1 32,1 33,1 34,1 35,1 36,1 37,1 38,1 39,1 3A,1 3B,1 3C,1 3D,1 3E,1 3F,1 40,1 41,1 42,1 43,1 44,1 45,1 46,1 47,1 48,1 49,1 4A,1
1CCB 1CCC 1CCD 1CCE 1CCF 1D03 1D05 1D06 1D0B 1D0C 1D0D 1D0E 1D0F 1D10 1D11 1D12 1D13 1D14 1D15 1D16 1D17 1D18 1D19 1D1A 1D1B 1D1C 1D1D 1D1E 1D1F 1D20 1D21 1D22 1D23 1D24 1D25 1D26
BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS
4B,1 4C,1 4D,1 4E,1 4F,1 STATUS,Z PORTA,2 PORTB,2 INTCON,T0IF 0C,2 0D,2 0E,2 0F,2 10,2 11,2 12,2 13,2 14,2 15,2 16,2 17,2 18,2 19,2 1A,2 1B,2 1C,2 1D,2 1E,2 1F,2 20,2 21,2 22,2 23,2 24,2 25,2 26,2
331
1D27 1D28 1D29 1D2A 1D2B 1D2C 1D2D 1D2E 1D2F 1D30 1D31 1D32 1D33 1D34 1D35 1D36 1D37 1D38 1D39 1D3A 1D3B 1D3C 1D3D 1D3E 1D3F 1D40 1D41 1D42 1D43 1D44 1D45 1D46 1D47 1D48 1D49 1D4A
BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS
27,2 28,2 29,2 2A,2 2B,2 2C,2 2D,2 2E,2 2F,2 30,2 31,2 32,2 33,2 34,2 35,2 36,2 37,2 38,2 39,2 3A,2 3B,2 3C,2 3D,2 3E,2 3F,2 40,2 41,2 42,2 43,2 44,2 45,2 46,2 47,2 48,2 49,2 4A,2
1D4B 1D4C 1D4D 1D4E 1D4F 1D83 1D85 1D86 1D8B 1D8C 1D8D 1D8E 1D8F 1D90 1D91 1D92 1D93 1D94 1D95 1D96 1D97 1D98 1D99 1D9A 1D9B 1D9C 1D9D 1D9E 1D9F 1DA0 1DA1 1DA2 1DA3 1DA4 1DA5 1DA6
BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS
4B,2 4C,2 4D,2 4E,2 4F,2 STATUS,PD PORTA,3 PORTB,3 INTCON,RBIE 0C,3 0D,3 0E,3 0F,3 10,3 11,3 12,3 13,3 14,3 15,3 16,3 17,3 18,3 19,3 1A,3 1B,3 1C,3 1D,3 1E,3 1F,3 20,3 21,3 22 ,3 23,3 24,3 25,3 26,3
332
1DA7 1DA8 1DA9 1DAA 1DAB 1DAC 1DAD 1DAE 1DAF 1DB0 1DB1 1DB2 1DB3 1DB4 1DB5 1DB6 1DB7 1DB8 1DB9 1DBA 1DBB 1DBC 1DBD 1DBE 1DBF 1DC0 1DC1 1DC2 1DC3 1DC4 1DC5 1DC6 1DC7 1DC8 1DC9 1DCA
BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS
27,3 28,3 29,3 2A,3 2B,3 2C,3 2D,3 2E,3 2F,3 30,3 31,3 32,3 33,3 34,3 35,3 36,3 37,3 38,3 39,3 3A,3 3B,3 3C,3 3D,3 3E,3 3F,3 40,3 41,3 42,3 43,3 44,3 45,3 46,3 47,3 48,3 49,3 4A,3
1DCB 1DCC 1DCD 1DCE 1DCF 1E03 1E05 1E06 1E0B 1E0C 1E0D 1E0E 1E0F 1E10 1E11 1E12 1E13 1E14 1E15 1E16 1E17 1E18 1E19 1E1A 1E1B 1E1C 1E1D 1E1E 1E1F 1E20 1E21 1E22 1E23 1E24 1E25 1E26
BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS
4B,3 4C,3 4D,3 4E,3 4F,3 STATUS,TO PORTA,4 PORTB,4 INTCON,INTE 0C,4 0D,4 0E,4 0F,4 10,4 11,4 12,4 13,4 14,4 15,4 16,4 17,4 18,4 19,4 1A,4 1B,4 1C,4 1D,4 1E,4 1F,4 20,4 21,4 22 ,4 23,4 24,4 25,4 26,4
333
1E27 1E28 1E29 1E2A 1E2B 1E2C 1E2D 1E2E 1E2F 1E30 1E31 1E32 1E33 1E34 1E35 1E36 1E37 1E38 1E39 1E3A 1E3B 1E3C 1E3D 1E3E 1E3F 1E40 1E41 1E42 1E43 1E44 1E45 1E46 1E47 1E48 1E49 1E4A
BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS
27,4 28,4 29,4 2A,4 2B,4 2C,4 2D,4 2E,4 2F,4 30,4 31,4 32,4 33,4 34,4 35,4 36,4 37,4 38,4 39,4 3A,4 3B,4 3C,4 3D,4 3E,4 3F,4 40,4 41,4 42,4 43,4 44,4 45,4 46,4 47,4 48,4 49,4 4A,4
1E4B 1E4C 1E4D 1E4E 1E4F 1E83 1E85 1E86 1E8B 1E8C 1E8D 1E8E 1E8F 1E90 1E91 1E92 1E93 1E94 1E95 1E96 1E97 1E98 1E99 1E9A 1E9B 1E9C 1E9D 1E9E 1E9F 1EA0 1EA1 1EA2 1EA3 1EA4 1EA5 1EA6
BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS
4B,4 4C,4 4D,4 4E,4 4F,4 STATUS,RP0 PORTA,5 PORTB,5 INTCON,T0IE 0C,5 0D,5 0E,5 0F,5 10,5 11,5 12,5 13,5 14,5 15,5 16,5 17,5 18,5 19,5 1A,5 1B,5 1C,5 1D,5 1E,5 1F,5 20,5 21,5 22,5 23,5 24,5 25,5 26,5
334
1EA7 1EA8 1EA9 1EAA 1EAB 1EAC 1EAD 1EAE 1EAF 1EB0 1EB1 1EB2 1EB3 1EB4 1EB5 1EB6 1EB7 1EB8 1EB9 1EBA 1EBB 1EBC 1EBD 1EBE 1EBF 1EC0 1EC1 1EC2 1EC3 1EC4 1EC5 1EC6 1EC7 1EC8 1EC9 1ECA
BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS
27,5 28,5 29,5 2A,5 2B,5 2C,5 2D,5 2E,5 2F,5 30,5 31,5 32,5 33,5 34,5 35,5 36,5 37,5 38,5 39,5 3A,5 3B,5 3C,5 3D,5 3E,5 3F,5 40,5 41,5 42,5 43,5 44,5 45,5 46,5 47,5 48,5 49,5 4A,5
1ECB 1ECC 1ECD 1ECE 1ECF 1F05 1F06 1F0B 1F0C 1F0D 1F0E 1F0F 1F10 1F11 1F12 1F13 1F14 1F15 1F16 1F17 1F18 1F19 1F1A 1F1B 1F1C 1F1D 1F1E 1F1F 1F20 1F21 1F22 1F23 1F24 1F25 1F26 1F27
BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS
4B,5 4C,5 4D,5 4E,5 4F,5 PORTA,6 PORTB,6 INTCON,EEIE 0C,6 0D,6 0E,6 0F,6 10,6 11,6 12,6 13,6 14,6 15,6 16,6 17,6 18,6 19,6 1A,6 1B,6 1C,6 1D,6 1E,6 1F,6 20,6 21,6 22,6 23,6 24,6 25,6 26,6 27,6
335
1F28 1F29 1F2A 1F2B 1F2C 1F2D 1F2E 1F2F 1F30 1F31 1F32 1F33 1F34 1F35 1F36 1F37 1F38 1F39 1F3A 1F3B 1F3C 1F3D 1F3E 1F3F 1F40 1F41 1F42 1F43 1F44 1F45 1F46 1F47 1F48 1F49 1F4A 1F4B
BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS
28,6 29,6 2A,6 2B,6 2C,6 2D,6 2E,6 2F,6 30,6 31,6 32,6 33,6 34,6 35,6 36,6 37,6 38,6 39,6 3A,6 3B,6 3C,6 3D,6 3E,6 3F,6 40,6 41,6 42,6 43,6 44,6 45,6 46,6 47,6 48,6 49,6 4A,6 4B,6
1F4C 1F4D 1F4E 1F4F 1F85 1F86 1F8B 1F8C 1F8D 1F8E 1F8F 1F90 1F91 1F92 1F93 1F94 1F95 1F96 1F97 1F98 1F99 1F9A 1F9B 1F9C 1F9D 1F9E 1F9F 1FA0 1FA1 1FA2 1FA3 1FA4 1FA5 1FA6 1FA7 1FA8
BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS
4C,6 4D,6 4E,6 4F,6 PORTA,7 PORTB,7 INTCON,GIE 0C,7 0D,7 0E,7 0F,7 10,7 11,7 12,7 13,7 14,7 15,7 16,7 17,7 18,7 19,7 1A,7 1B,7 1C,7 1D,7 1E,7 1F,7 20,7 21,7 22,7 23,7 24,7 25,7 26,7 27,7 28,7
336
1FA9 1FAA 1FAB 1FAC 1FAD 1FAE 1FAF 1FB0 1FB1 1FB2 1FB3 1FB4 1FB5 1FB6 1FB7 1FB8 1FB9 1FBA 1FBB 1FBC 1FBD 1FBE 1FBF 1FC0 1FC1 1FC2 1FC3 1FC4 1FC5 1FC6 1FC7 1FC8 1FC9 1FCA 1FCB 1FCC
BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS BTFSS
29,7 2A,7 2B,7 2C,7 2D,7 2E,7 2F,7 30,7 31,7 32,7 33,7 34,7 35,7 36,7 37,7 38,7 39,7 3A,7 3B,7 3C,7 3D,7 3E,7 3F,7 40,7 41,7 42,7 43,7 44,7 45,7 46,7 47,7 48,7 49,7 4A,7 4B,7 4C,7
1FCD 1FCE 1FCF 2004 2005 2006 2007 2008 2009 200A 200B 200C 200D 200E 200F 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 201A 201B 201C 201D 201E 201F 2020 2021 2022 2023 2024
BTFSS BTFSS BTFSS CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL
4D,7 4E,7 4F,7 004 005 006 007 008 009 00A 00B 00C 00D 00E 00F 010 011 012 013 014 015 016 017 018 019 01A 01B 01C 01D 01E 01F 020 021 022 023 024
337
2025 2026 2027 2028 2029 202A 202B 202C 202D 202E 202F 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 203A 203B 203C 203D 203E 203F 2040 2041 2042 2043 2044 2045 2046 2047 2048
CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL
025 026 027 028 029 02A 02B 02C 02D 02E 02F 030 031 032 033 034 035 036 037 038 039 03A 03B 03C 03D 03E 03F 040 041 042 043 044 045 046 047 048
2049 204A 204B 204C 204D 204E 204F 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 205A 205B 205C 205D 205E 205F 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 206A 206B 206C
CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL
049 04A 04B 04C 04D 04E 04F 050 051 052 053 054 055 056 057 058 059 05A 05B 05C 05D 05E 05F 060 061 062 063 064 065 066 067 068 069 06A 06B 06C
338
206D 206E 206F 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 207A 207B 207C 207D 207E 207F 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 208A 208B 208C 208D 208E 208F 2090
CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL
06D 06E 06F 070 071 072 073 074 075 076 077 078 079 07A 07B 07C 07D 07E 07F 080 081 082 083 084 085 086 087 088 089 08A 08B 08C 08D 08E 08F 090
2091 2092 2093 2094 2095 2096 2097 2098 2099 209A 209B 209C 209D 209E 209F 20A0 20A1 20A2 20A3 20A4 20A5 20A6 20A7 20A8 20A9 20AA 20AB 20AC 20AD 20AE 20AF 20B0 20B1 20B2 20B3 20B4
CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL
091 092 093 094 095 096 097 098 099 09A 09B 09C 09D 09E 09F 0A0 0A1 0A2 0A3 0A4 0A5 0A6 0A7 0A8 0A9 0AA 0AB 0AC 0AD 0AE 0AF 0B0 0B1 0B2 0B3 0B4
339
20B5 20B6 20B7 20B8 20B9 20BA 20BB 20BC 20BD 20BE 20BF 20C0 20C1 20C2 20C3 20C4 20C5 20C6 20C7 20C8 20C9 20CA 20CB 20CC 20CD 20CE 20CF 20D0 20D1 20D2 20D3 20D4 20D5 20D6 20D7 20D8
CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL
0B5 0B6 0B7 0B8 0B9 0BA 0BB 0BC 0BD 0BE 0BF 0C0 0C1 0C2 0C3 0C4 0C5 0C6 0C7 0C8 0C9 0CA 0CB 0CC 0CD 0CE 0CF 0D0 0D1 0D2 0D3 0D4 0D5 0D6 0D7 0D8
20D9 20DA 20DB 20DC 20DD 20DE 20DF 20E0 20E1 20E2 20E3 20E4 20E5 20E6 20E7 20E8 20E9 20EA 20EB 20EC 20ED 20EE 20EF 20F0 20F1 20F2 20F3 20F4 20F5 20F6 20F7 20F8 20F9 20FA 20FB 20FC
CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL
0D9 0DA 0DB 0DC 0DD 0DE 0DF 0E0 0E1 0E2 0E3 0E4 0E5 0E6 0E7 0E8 0E9 0EA 0EB 0EC 0ED 0EE 0EF 0F0 0F1 0F2 0F3 0F4 0F5 0F6 0F7 0F8 0F9 0FA 0FB 0FC
340
20FD 20FE 20FF 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 210A 210B 210C 210D 210E 210F 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 211A 211B 211C 211D 211E 211F 2120
CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL
0FD 0FE 0FF 100 101 102 103 104 105 106 107 108 109 10A 10B 10C 10D 10E 10F 110 111 112 113 114 115 116 117 118 119 11A 11B 11C 11D 11E 11F 120
2121 2122 2123 2124 2125 2126 2127 2128 2129 212A 212B 212C 212D 212E 212F 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 213A 213B 213C 213D 213E 213F 2140 2141 2142 2143 2144
CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL
121 122 123 124 125 126 127 128 129 12A 12B 12C 12D 12E 12F 130 131 132 133 134 135 136 137 138 139 13A 13B 13C 13D 13E 13F 140 141 142 143 144
341
2145 2146 2147 2148 2049 214A 201B 214C 214D 214E 214F 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 215A 215B 215C 215D 215E 215F 2160 2161 2162 2163 2164 2165 2166 2167 2168
CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL
145 146 147 148 149 14A 14B 14C 14D 14E 14F 150 151 152 153 154 155 156 157 158 159 15A 15B 15C 15D 15E 15F 160 161 162 163 164 165 166 167 168
2169 216A 216B 216C 216D 216E 216F 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 217A 217B 217C 217D 217E 217F 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 218A 218B 218C
CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL
169 16A 16B 16C 16D 16E 16F 170 171 172 173 174 175 176 177 178 179 17A 17B 17C 17D 17E 17F 180 181 182 183 184 185 186 187 188 189 18A 18B 18C
342
218D 218E 218F 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 219A 219B 219C 219D 219E 219F 21A0 21A1 21A2 21A3 21A4 21A5 21A6 21A7 21A8 21A9 21AA 21AB 21AC 21AD 21AE 21AF 21B0
CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL
18D 18E 18F 190 191 192 193 194 195 196 197 198 199 19A 19B 19C 19D 19E 19F 1A0 1A1 1A2 1A3 1A4 1A5 1A6 1A7 1A8 1A9 1AA 1AB 1AC 1AD 1AE 1AF 1B0
21B1 21B2 21B3 21B4 21B5 21B6 21B7 21B8 21B9 21BA 21BB 21BC 21BD 21BE 21BF 21C0 21C1 21C2 21C3 21C4 21C5 21C6 21C7 21C8 21C9 21CA 21CB 21CC 21CD 21CE 21CF 21D0 21D1 21D2 21D3 21D4
CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL
1B1 1B2 1B3 1B4 1B5 1B6 1B7 1B8 1B9 1BA 1BB 1BC 1BD 1BE 1BF 1C0 1C1 1C2 1C3 1C4 1C5 1C6 1C7 1C8 1C9 1CA 1CB 1CC 1CD 1CE 1CF 1D0 1D1 1D2 1D3 1D4
343
21D5 21D6 21D7 21D8 21D9 21DA 21DB 21DC 21DD 21DE 21DF 21E0 21E1 21E2 21E3 21E4 21E5 21E6 21E7 21E8 21E9 21EA 21EB 21EC 21ED 21EE 21EF 21F0 21F1 21F2 21F3 21F4 21F5 21F6 21F7 21F8
CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL
1D5 1D6 1D7 1D8 1D9 1DA 1DB 1DC 1DD 1DE 1DF 1E0 1E1 1E2 1E3 1E4 1E5 1E6 1E7 1E8 1E9 1EA 1EB 1EC 1ED 1EE 1EF 1F0 1F1 1F2 1F3 1F4 1F5 1F6 1F7 1F8
21F9 21FA 21FB 21FC 21FD 21FE 21FF 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 220A 220B 220C 220D 220E 220F 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 221A 221B 221C
CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL
1F9 1FA 1FB 1FC 1FD 1FE 1FF 200 201 202 203 204 205 206 207 208 209 20A 20B 20C 20D 20E 20F 210 211 212 213 214 215 216 217 218 219 21A 21B 21C
344
221D 221E 221F 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 222A 222B 222C 222D 222E 222F 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 223A 223B 223C 223D 223E 223F 2240
CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL
21D 21E 21F 220 221 222 223 224 225 226 227 228 229 22A 22B 22C 22D 22E 22F 230 231 232 233 234 235 236 237 238 239 23A 23B 23C 23D 23E 23F 240
2241 2242 2243 2244 2245 2246 2247 2248 2249 224A 224B 224C 224D 224E 224F 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 225A 225B 225C 225D 225E 225F 2260 2261 2262 2263 2264
CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL
241 242 243 244 245 246 247 248 249 24A 24B 24C 24D 24E 24F 250 251 252 253 254 255 256 257 258 259 25A 25B 25C 25D 25E 25F 260 261 262 263 264
345
2265 2266 2267 2268 2269 226A 226B 226C 226D 226E 226F 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 227A 227B 227C 227D 227E 227F 2280 2281 2282 2283 2284 2285 2286 2287 2288
CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL
265 266 267 268 269 26A 26B 26C 26D 26E 26F 270 271 272 273 274 275 276 277 278 279 27A 27B 27C 27D 27E 27F 280 281 282 283 284 285 286 287 288
2289 228A 228B 228C 228D 228E 228F 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 229A 229B 229C 229D 229E 229F 22A0 22A1 22A2 22A3 22A4 22A5 22A6 22A7 22A8 22A9 22AA 22AB 22AC
CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL
289 28A 28B 28C 28D 28E 28F 290 291 292 293 294 295 296 297 298 299 29A 29B 29C 29D 29E 29F 2A0 2A1 2A2 2A3 2A4 2A5 2A6 2A7 2A8 2A9 2AA 2AB 2AC
346
22AD 22AE 22AF 22B0 22B1 22B2 22B3 22B4 22B5 22B6 22B7 22B8 22B9 22BA 22BB 22BC 22BD 22BE 22BF 22C0 22C1 22C2 22C3 22C4 22C5 22C6 22C7 22C8 22C9 22CA 22CB 22CC 22CD 22CE 22CF 22D0
CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL
2AD 2AE 2AF 2B0 2B1 2B2 2B3 2B4 2B5 2B6 2B7 2B8 2B9 2BA 2BB 2BC 2BD 2BE 2BF 2C0 2C1 2C2 2C3 2C4 2C5 2C6 2C7 2C8 2C9 2CA 2CB 2CC 2CD 2CE 2CF 2D0
22D1 22D2 22D3 22D4 22D5 22D6 22D7 22D8 22D9 22DA 22DB 22DC 22DD 22DE 22DF 22E0 22E1 22E2 22E3 22E4 22E5 22E6 22E7 22E8 22E9 22EA 22EB 22EC 22ED 22EE 22EF 22F0 22F1 22F2 22F3 22F4
CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL
2D1 2D2 2D3 2D4 2D5 2D6 2D7 2D8 2D9 2DA 2DB 2DC 2DD 2DE 2DF 2E0 2E1 2E2 2E3 2E4 2E5 2E6 2E7 2E8 2E9 2EA 2EB 2EC 2ED 2EE 2EF 2F0 2F1 2F2 2F3 2F4
347
22F5 22F6 22F7 22F8 22F9 22FA 22FB 22FC 22FD 22FE 22FF 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 230A 230B 230C 230D 230E 230F 2310 2311 2312 2313 2314 2315 2316 2317 2318
CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL
2F5 2F6 2F7 2F8 2F9 2FA 2FB 2FC 2FD 2FE 2FF 300 301 302 303 304 305 306 307 308 309 30A 30B 30C 30D 30E 30F 310 311 312 313 314 315 316 317 318
2319 231A 231B 231C 231D 231E 231F 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 232A 232B 232C 232D 232E 232F 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 233A 233B 233C
CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL
319 31A 31B 31C 31D 31E 31F 320 321 322 323 324 325 326 327 328 329 32A 32B 32C 32D 32E 32F 330 331 332 333 334 335 336 337 338 339 33A 33B 33C
348
233D 233E 233F 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 234A 234B 234C 234D 234E 234F 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 235A 235B 235C 235D 235E 235F 2360
CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL
33D 33E 33F 340 341 342 343 344 345 346 347 348 349 34A 34B 34C 34D 34E 34F 350 351 352 353 354 355 356 357 358 359 35A 35B 35C 35D 35E 35F 360
2361 2362 2363 2364 2365 2366 2367 2368 2369 236A 236B 236C 236D 236E 236F 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 237A 237B 237C 237D 237E 237F 2380 2381 2382 2383 2384
CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL
361 362 363 364 365 366 367 368 369 36A 36B 36C 36D 36E 36F 370 371 372 373 374 375 376 377 378 379 37A 37B 37C 37D 37E 37F 380 381 382 383 384
349
2385 2386 2387 2388 2389 238A 238B 238C 238D 238E 238F 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 239A 239B 239C 239D 239E 239F 23A0 23A1 23A2 23A3 23A4 23A5 23A6 23A7 23A8
CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL
385 386 387 388 389 38A 38B 38C 38D 38E 38F 390 391 392 393 394 395 396 397 398 399 39A 39B 39C 39D 39E 39F 3A0 3A1 3A2 3A3 3A4 3A5 3A6 3A7 3A8
23A9 23AA 23AB 23AC 23AD 23AE 23AF 23B0 23B1 23B2 23B3 23B4 23B5 23B6 23B7 23B8 23B9 23BA 23BB 23BC 23BD 23BE 23BF 23C0 23C1 23C2 23C3 23C4 23C5 23C6 23C7 23C8 23C9 23CA 23CB 23CC
CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL
3A9 3AA 3AB 3AC 3AD 3AE 3AF 3B0 3B1 3B2 3B3 3B4 3B5 3B6 3B7 3B8 3B9 3BA 3BB 3BC 3BD 3BE 3BF 3C0 3C1 3C2 3C3 3C4 3C5 3C6 3C7 3C8 3C9 3CA 3CB 3CC
350
23CD 23CE 23CF 23D0 23D1 23D2 23D3 23D4 23D5 23D6 23D7 23D8 23D9 23DA 23DB 23DC 23DD 23DE 23DF 23E0 23E1 23E2 23E3 23E4 23E5 23E6 23E7 23E8 23E9 23EA 23EB 23EC 23ED 23EE 23EF 23F0
CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL
3CD 3CE 3CF 3D0 3D1 3D2 3D3 3D4 3D5 3D6 3D7 3D8 3D9 3DA 3DB 3DC 3DD 3DE 3DF 3E0 3E1 3E2 3E3 3E4 3E5 3E6 3E7 3E8 3E9 3EA 3EB 3EC 3ED 3EE 3EF 3F0
23F1 23F2 23F3 23F4 23F5 23F6 23F7 23F8 23F9 23FA 23FB 23FC 23FD 23FE 23FF 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 280A 280B 280C 280D 280E 280F 2810 2811 2812 2813 2814
CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO
3F1 3F2 3F3 3F4 3F5 3F6 3F7 3F8 3F9 3FA 3FB 3FC 3FD 3FE 3FF 000 001 002 003 004 005 006 007 008 009 00A 00B 00C 00D 00E 00F 010 011 012 013 014
351
2815 2816 2817 2818 2819 281A 281B 281C 281D 281E 281F 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 282A 282B 282C 282D 282E 282F 2830 2831 2832 2833 2834 2835 2836 2837 2838
GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO
015 016 017 018 019 01A 01B 01C 01D 01E 01F 020 021 022 023 024 025 026 027 028 029 02A 02B 02C 02D 02E 02F 030 031 032 033 034 035 036 037 038
2839 283A 283B 283C 283D 283E 283F 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 284A 284B 284C 284D 284E 284F 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 285A 285B 285C
GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO
039 03A 03B 03C 03D 03E 03F 040 041 042 043 044 045 046 047 048 049 04A 04B 04C 04D 04E 04F 050 051 052 053 054 055 056 057 058 059 05A 05B 05C
352
285D 285E 285F 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 286A 286B 286C 286D 286E 286F 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 287A 287B 287C 287D 287E 287F 2880
GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO
05D 05E 05F 060 061 062 063 064 065 066 067 068 069 06A 06B 06C 06D 06E 06F 070 071 072 073 074 075 076 077 078 079 07A 07B 07C 07D 07E 07F 080
2881 2882 2883 2884 2885 2886 2887 2888 2889 288A 288B 288C 288D 288E 288F 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 289A 289B 289C 289D 289E 289F 28A0 28A1 28A2 28A3 28A4
GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO
081 082 083 084 085 086 087 088 089 08A 08B 08C 08D 08E 08F 090 091 092 093 094 095 096 097 098 099 09A 09B 09C 09D 09E 09F 0A0 0A1 0A2 0A3 0A4
353
28A5 28A6 28A7 28A8 28A9 28AA 28AB 28AC 28AD 28AE 28AF 28B0 28B1 28B2 28B3 28B4 28B5 28B6 28B7 28B8 28B9 28BA 28BB 28BC 28BD 28BE 28BF 28C0 28C1 28C2 28C3 28C4 28C5 28C6 28C7 28C8
GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO
0A5 0A6 0A7 0A8 0A9 0AA 0AB 0AC 0AD 0AE 0AF 0B0 0B1 0B2 0B3 0B4 0B5 0B6 0B7 0B8 0B9 0BA 0BB 0BC 0BD 0BE 0BF 0C0 0C1 0C2 0C3 0C4 0C5 0C6 0C7 0C8
28C9 28CA 28CB 28CC 28CD 28CE 28CF 28D0 28D1 28D2 28D3 28D4 28D5 28D6 28D7 28D8 28D9 28DA 28DB 28DC 28DD 28DE 28DF 28E0 28E1 28E2 28E3 28E4 28E5 28E6 28E7 28E8 28E9 28EA 28EB 28EC
GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO
0C9 0CA 0CB 0CC 0CD 0CE 0CF 0D0 0D1 0D2 0D3 0D4 0D5 0D6 0D7 0D8 0D9 0DA 0DB 0DC 0DD 0DE 0DF 0E0 0E1 0E2 0E3 0E4 0E5 0E6 0E7 0E8 0E9 0EA 0EB 0EC
354
28ED 28EE 28EF 28F0 28F1 28F2 28F3 28F4 28F5 28F6 28F7 28F8 28F9 28FA 28FB 28FC 28FD 28FE 28FF 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 290A 290B 290C 290D 290E 290F 2910
GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO
0ED 0EE 0EF 0F0 0F1 0F2 0F3 0F4 0F5 0F6 0F7 0F8 0F9 0FA 0FB 0FC 0FD 0FE 0FF 100 101 102 103 104 105 106 107 108 109 10A 10B 10C 10D 10E 10F 110
2911 2912 2913 2914 2915 2916 2917 2918 2919 291A 291B 291C 291D 291E 291F 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 292A 292B 292C 292D 292E 292F 2930 2931 2932 2933 2934
GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO
111 112 113 114 115 116 117 118 119 11A 11B 11C 11D 11E 11F 120 121 122 123 124 125 126 127 128 129 12A 12B 12C 12D 12E 12F 130 131 132 133 134
355
2935 2936 2937 2938 2939 293A 293B 293C 293D 293E 293F 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 294A 294B 294C 294D 294E 294F 2950 2951 2952 2953 2954 2955 2956 2957 2958
GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO
135 136 137 138 139 13A 13B 13C 13D 13E 13F 140 141 142 143 144 145 146 147 148 149 14A 14B 14C 14D 14E 14F 150 151 152 153 154 155 156 157 158
2959 295A 295B 295C 295D 295E 295F 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 296A 296B 296C 296D 296E 296F 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 297A 297B 297C
GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO
159 15A 15B 15C 15D 15E 15F 160 161 162 163 164 165 166 167 168 169 16A 16B 16C 16D 16E 16F 170 171 172 173 174 175 176 177 178 179 17A 17B 17C
356
297D 297E 297F 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 298A 298B 298C 298D 298E 298F 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 299A 299B 299C 299D 299E 299F 29A0
GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO
17D 17E 17F 180 181 182 183 184 185 186 187 188 189 18A 18B 18C 18D 18E 18F 190 191 192 193 194 195 196 197 198 199 19A 19B 19C 19D 19E 19F 1A0
29A1 29A2 29A3 29A4 29A5 29A6 29A7 29A8 29A9 29AA 29AB 29AC 29AD 29AE 29AF 29B0 29B1 29B2 29B3 29B4 29B5 29B6 29B7 29B8 29B9 29BA 29BB 29BC 29BD 29BE 29BF 29C0 29C1 29C2 29C3 29C4
GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO
1A1 1A2 1A3 1A4 1A5 1A6 1A7 1A8 1A9 1AA 1AB 1AC 1AD 1AE 1AF 1B0 1B1 1B2 1B3 1B4 1B5 1B6 1B7 1B8 1B9 1BA 1BB 1BC 1BD 1BE 1BF 1C0 1C1 1C2 1C3 1C4
357
29C5 29C6 29C7 29C8 29C9 29CA 29CB 29CC 29CD 29CE 29CF 29D0 29D1 29D2 29D3 29D4 29D5 29D6 29D7 29D8 29D9 29DA 29DB 29DC 29DD 29DE 29DF 29E0 29E1 29E2 29E3 29E4 29E5 29E6 29E7 29E8
GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO
1C5 1C6 1C7 1C8 1C9 1CA 1CB 1CC 1CD 1CE 1CF 1D0 1D1 1D2 1D3 1D4 1D5 1D6 1D7 1D8 1D9 1DA 1DB 1DC 1DD 1DE 1DF 1E0 1E1 1E2 1E3 1E4 1E5 1E6 1E7 1E8
29E9 29EA 29EB 29EC 29ED 29EE 29EF 29F0 29F1 29F2 29F3 29F4 29F5 29F6 29F7 29F8 29F9 29FA 29FB 29FC 29FD 29FE 29FF 2A00 2A01 2A02 2A03 2A04 2A05 2A06 2A07 2A08 2A09 2A0A 2A0B 2A0C
GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO
1E9 1EA 1EB 1EC 1ED 1EE 1EF 1F0 1F1 1F2 1F3 1F4 1F5 1F6 1F7 1F8 1F9 1FA 1FB 1FC 1FD 1FE 1FF 200 201 202 203 204 205 206 207 208 209 20A 20B 20C
358
2A0D 2A0E 2A0F 2A10 2A11 2A12 2A13 2A14 2A15 2A16 2A17 2A18 2A19 2A1A 2A1B 2A1C 2A1D 2A1E 2A1F 2A20 2A21 2A22 2A23 2A24 2A25 2A26 2A27 2A28 2A29 2A2A 2A2B 2A2C 2A2D 2A2E 2A2F 2A30
GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO
20D 20E 20F 210 211 212 213 214 215 216 217 218 219 21A 21B 21C 21D 21E 21F 220 221 222 223 224 225 226 227 228 229 22A 22B 22C 22D 22E 22F 230
2A31 2A32 2A33 2A34 2A35 2A36 2A37 2A38 2A39 2A3A 2A3B 2A3C 2A3D 2A3E 2A3F 2A40 2A41 2A42 2A43 2A44 2A45 2A46 2A47 2A48 2A49 2A4A 2A4B 2A4C 2A4D 2A4E 2A4F 2A50 2A51 2A52 2A53 2A54
GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO
231 232 233 234 235 236 237 238 239 23A 23B 23C 23D 23E 23F 240 241 242 243 244 245 246 247 248 249 24A 24B 24C 24D 24E 24F 250 251 252 253 254
359
2A55 2A56 2A57 2A58 2A59 2A5A 2A5B 2A5C 2A5D 2A5E 2A5F 2A60 2A61 2A62 2A63 2A64 2A65 2A66 2A67 2A68 2A69 2A6A 2A6B 2A6C 2A6D 2A6E 2A6F 2A70 2A71 2A72 2A73 2A74 2A75 2A76 2A77 2A78
GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO
255 256 257 258 259 25A 25B 25C 25D 25E 25F 260 261 262 263 264 265 266 267 268 269 26A 26B 26C 26D 26E 26F 270 271 272 273 274 275 276 277 278
2A79 2A7A 2A7B 2A7C 2A7D 2A7E 2A7F 2A80 2A81 2A82 2A83 2A84 2A85 2A86 2A87 2A88 2A89 2A8A 2A8B 2A8C 2A8D 2A8E 2A8F 2A90 2A91 2A92 2A93 2A94 2A95 2A96 2A97 2A98 2A99 2A9A 2A9B 2A9C
GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO
279 27A 27B 27C 27D 27E 27F 280 281 282 283 284 285 286 287 288 289 28A 28B 28C 28D 28E 28F 290 291 292 293 294 295 296 297 298 299 29A 29B 29C
360
2A9D 2A9E 2A9F 2AA0 2AA1 2AA2 2AA3 2AA4 2AA5 2AA6 2AA7 2AA8 2AA9 2AAA 2AAB 2AAC 2AAD 2AAE 2AAF 2AB0 2AB1 2AB2 2AB3 2AB4 2AB5 2AB6 2AB7 2AB8 2AB9 2ABA 2ABB 2ABC 2ABD 2ABE 2ABF 2AC0
GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO
29D 29E 29F 2A0 2A1 2A2 2A3 2A4 2A5 2A6 2A7 2A8 2A9 2AA 2AB 2AC 2AD 2AE 2AF 2B0 2B1 2B2 2B3 2B4 2B5 2B6 2B7 2B8 2B9 2BA 2BB 2BC 2BD 2BE 2BF 2C0
2AC1 2AC2 2AC3 2AC4 2AC5 2AC6 2AC7 2AC8 2AC9 2ACA 2ACB 2ACC 2ACD 2ACE 2ACF 2AD0 2AD1 2AD2 2AD3 2AD4 2AD5 2AD6 2AD7 2AD8 2AD9 2ADA 2ADB 2ADC 2ADD 2ADE 2ADF 2AE0 2AE1 2AE2 2AE3 2AE4
GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO
2C1 2C2 2C3 2C4 2C5 2C6 2C7 2C8 2C9 2CA 2CB 2CC 2CD 2CE 2CF 2D0 2D1 2D2 2D3 2D4 2D5 2D6 2D7 2D8 2D9 2DA 2DB 2DC 2DD 2DE 2DF 2E0 2E1 2E2 2E3 2E4
361
2AE5 2AE6 2AE7 2AE8 2AE9 2AEA 2AEB 2AEC 2AED 2AEE 2AEF 2AF0 2AF1 2AF2 2AF3 2AF4 2AF5 2AF6 2AF7 2AF8 2AF9 2AFA 2AFB 2AFC 2AFD 2AFE 2AFF 2B00 2B01 2B02 2B03 2B04 2B05 2B06 2B07 2B08
GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO
2E5 2E6 2E7 2E8 2E9 2EA 2EB 2EC 2ED 2EE 2EF 2F0 2F1 2F2 2F3 2F4 2F5 2F6 2F7 2F8 2F9 2FA 2FB 2FC 2FD 2FE 2FF 300 301 302 303 304 305 306 307 308
2B09 2B0A 2B0B 2B0C 2B0D 2B0E 2B0F 2B10 2B11 2B12 2B13 2B14 2B15 2B16 2B17 2B18 2B19 2B1A 2B1B 2B1C 2B1D 2B1E 2B1F 2B20 2B21 2B22 2B23 2B24 2B25 2B26 2B27 2B28 2B29 2B2A 2B2B 2B2C
GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO
309 30A 30B 30C 30D 30E 30F 310 311 312 313 314 315 316 317 318 319 31A 31B 31C 31D 31E 31F 320 321 322 323 324 325 326 327 328 329 32A 32B 32C
362
2B2D 2B2E 2B2F 2B30 2B31 2B32 2B33 2B34 2B35 2B36 2B37 2B38 2B39 2B3A 2B3B 2B3C 2B3D 2B3E 2B3F 2B40 2B41 2B42 2B43 2B44 2B45 2B46 2B47 2B48 2B49 2B4A 2B4B 2B4C 2B4D 2B4E 2B4F 2B50
GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO
32D 32E 32F 330 331 332 333 334 335 336 337 338 339 33A 33B 33C 33D 33E 33F 340 341 342 343 344 345 346 347 348 349 34A 34B 34C 34D 34E 34F 350
2B51 2B52 2B53 2B54 2B55 2B56 2B57 2B58 2B59 2B5A 2B5B 2B5C 2B5D 2B5E 2B5F 2B60 2B61 2B62 2B63 2B64 2B65 2B66 2B67 2B68 2B69 2B6A 2B6B 2B6C 2B6D 2B6E 2B6F 2B70 2B71 2B72 2B73 2B74
GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO
351 352 353 354 355 356 357 358 359 35A 35B 35C 35D 35E 35F 360 361 362 363 364 365 366 367 368 369 36A 36B 36C 36D 36E 36F 370 371 372 373 374
363
2B75 2B76 2B77 2B78 2B79 2B7A 2B7B 2B7C 2B7D 2B7E 2B7F 2B80 2B81 2B82 2B83 2B84 2B85 2B86 2B87 2B88 2B89 2B8A 2B8B 2B8C 2B8D 2B8E 2B8F 2B90 2B91 2B92 2B93 2B94 2B95 2B96 2B97 2B98
GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO
375 376 377 378 379 37A 37B 37C 37D 37E 37F 380 381 382 383 384 385 386 387 388 389 38A 38B 38C 38D 38E 38F 390 391 392 393 394 395 396 397 398
2B99 2B9A 2B9B 2B9C 2B9D 2B9E 2B9F 2BA0 2BA1 2BA2 2BA3 2BA4 2BA5 2BA6 2BA7 2BA8 2BA9 2BAA 2BAB 2BAC 2BAD 2BAE 2BAF 2BB0 2BB1 2BB2 2BB3 2BB4 2BB5 2BB6 2BB7 2BB8 2BB9 2BBA 2BBB 2BBC
GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO
399 39A 39B 39C 39D 39E 39F 3A0 3A1 3A2 3A3 3A4 3A5 3A6 3A7 3A8 3A9 3AA 3AB 3AC 3AD 3AE 3AF 3B0 3B1 3B2 3B3 3B4 3B5 3B6 3B7 3B8 3B9 3BA 3BB 3BC
364
2BBD 2BBE 2BBF 2BC0 2BC1 2BC2 2BC3 2BC4 2BC5 2BC6 2BC7 2BC8 2BC9 2BCA 2BCB 2BCC 2BCD 2BCE 2BCF 2BD0 2BD1 2BD2 2BD3 2BD4 2BD5 2BD6 2BD7 2BD8 2BD9 2BDA 2BDB 2BDC 2BDD 2BDE 2BDF 2BE0
GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO
3BD 3BE 3BF 3C0 3C1 3C2 3C3 3C4 3C5 3C6 3C7 3C8 3C9 3CA 3CB 3CC 3CD 3CE 3CF 3D0 3D1 3D2 3D3 3D4 3D5 3D6 3D7 3D8 3D9 3DA 3DB 3DC 3DD 3DE 3DF 3E0
2BE1 2BE2 2BE3 2BE4 2BE5 2BE6 2BE7 2BE8 2BE9 2BEA 2BEB 2BEC 2BED 2BEE 2BEF 2BF0 2BF1 2BF2 2BF3 2BF4 2BF5 2BF6 2BF7 2BF8 2BF9 2BFA 2BFB 2BFC 2BFD 2BFE 2BFF 3000 3001 3002 3003 3004
GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO GOTO MOVLW MOVLW MOVLW MOVLW MOVLW
3E1 3E2 3E3 3E4 3E5 3E6 3E7 3E8 3E9 3EA 3EB 3EC 3ED 3EE 3EF 3F0 3F1 3F2 3F3 3F4 3F5 3F6 3F7 3F8 3F9 3FA 3FB 3FC 3FD 3FE 3FF 00 01 02 03 04
365
3005 3006 3007 3008 3009 300A 300B 300C 300D 300E 300F 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 301A 301B 301C 301D 301E 301F 3020 3021 3022 3023 3024 3025 3026 3027 3028
MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW
05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28
3029 302A 302B 302C 302D 302E 302F 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 303A 303B 303C 303D 303E 303F 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 304A 304B 304C
MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW
29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C
366
304D 304E 304F 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 305A 305B 305C 305D 305E 305F 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 306A 306B 306C 306D 306E 306F 3070
MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW
4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70
3071 3072 3073 3074 3075 3076 3077 3078 3079 307A 307B 307C 307D 307E 307F 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 308A 308B 308C 308D 308E 308F 3090 3091 3092 3093 3094
MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW
71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94
367
3095 3096 3097 3098 3099 309A 309B 309C 309D 309E 309F 30A0 30A1 30A2 30A3 30A4 30A5 30A6 30A7 30A8 30A9 30AA 30AB 30AC 30AD 30AE 30AF 30B0 30B1 30B2 30B3 30B4 30B5 30B6 30B7 30B8
MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW
95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8
30B9 30BA 30BB 30BC 30BD 30BE 30BF 30C0 30C1 30C2 30C3 30C4 30C5 30C6 30C7 30C8 30C9 30CA 30CB 30CC 30CD 30CE 30CF 30D0 30D1 30D2 30D3 30D4 30D5 30D6 30D7 30D8 30D9 30DA 30DB 30DC
MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW
B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC
368
30DD 30DE 30DF 30E0 30E1 30E2 30E3 30E4 30E5 30E6 30E7 30E8 30E9 30EA 30EB 30EC 30ED 30EE 30EF 30F0 30F1 30F2 30F3 30F4 30F5 30F6 30F7 30F8 30F9 30FA 30FB 30FC 30FD 30FE 30FF 3400
MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW MOVLW RETLW
DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF 00
3401 3402 3403 3404 3405 3406 3407 3408 3409 340A 340B 340C 340D 340E 340F 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 341A 341B 341C 341D 341E 341F 3420 3421 3422 3423 3424
RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW
01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24
369
3425 3426 3427 3428 3429 342A 342B 342C 342D 342E 342F 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 343A 343B 343C 343D 343E 343F 3440 3441 3442 3443 3444 3445 3446 3447 3448
RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW
25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48
3449 344A 344B 344C 344D 344E 344F 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 345A 345B 345C 345D 345E 345F 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 346A 346B 346C
RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW
49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C
370
346D 346E 346F 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 347A 347B 347C 347D 347E 347F 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 348A 348B 348C 348D 348E 348F 3490
RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW
6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90
3491 3492 3493 3494 3495 3496 3497 3498 3499 349A 349B 349C 349D 349E 349F 34A0 34A1 34A2 34A3 34A4 34A5 34A6 34A7 34A8 34A9 34AA 34AB 34AC 34AD 34AE 34AF 34B0 34B1 34B2 34B3 34B4
RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW
91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4
371
34B5 34B6 34B7 34B8 34B9 34BA 34BB 34BC 34BD 34BE 34BF 34C0 34C1 34C2 34C3 34C4 34C5 34C6 34C7 34C8 34C9 34CA 34CB 34CC 34CD 34CE 34CF 34D0 34D1 34D2 34D3 34D4 34D5 34D6 34D7 34D8
RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW
B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8
34D9 34DA 34DB 34DC 34DD 34DE 34DF 34E0 34E1 34E2 34E3 34E4 34E5 34E6 34E7 34E8 34E9 34EA 34EB 34EC 34ED 34EE 34EF 34F0 34F1 34F2 34F3 34F4 34F5 34F6 34F7 34F8 34F9 34FA 34FB 34FC
RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW
D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC
372
34FD 34FE 34FF 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 380A 380B 380C 380D 380E 380F 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 381A 381B 381C 381D 381E 381F 3820
RETLW RETLW RETLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW
FD FE FF 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20
3821 3822 3823 3824 3825 3826 3827 3828 3829 382A 382B 382C 382D 382E 382F 3830 3831 3832 3833 3834 3835 3836 3837 3838 3839 383A 383B 383C 383D 383E 383F 3840 3841 3842 3843 3844
IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW
21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44
373
3845 3846 3847 3848 3849 384A 384B 384C 384D 384E 384F 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 385A 385B 385C 385D 385E 385F 3860 3861 3862 3863 3864 3865 3866 3867 3868
IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW
45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68
3869 386A 386B 386C 386D 386E 386F 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 387A 387B 387C 387D 387E 387F 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 388A 388B 388C
IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW
69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C
374
388D 388E 388F 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 389A 389B 389C 389D 389E 389F 38A0 38A1 38A2 38A3 38A4 38A5 38A6 38A7 38A8 38A9 38AA 38AB 38AC 38AD 38AE 38AF 38B0
IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW
8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0
38B1 38B2 38B3 38B4 38B5 38B6 38B7 38B8 38B9 38BA 38BB 38BC 38BD 38BE 38BF 38C0 38C1 38C2 38C3 38C4 38C5 38C6 38C7 38C8 38C9 38CA 38CB 38CC 38CD 38CE 38CF 38D0 38D1 38D2 38D3 38D4
IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW
B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4
375
38D5 38D6 38D7 38D8 38D9 38DA 38DB 38DC 38DD 38DE 38DF 38E0 38E1 38E2 38E3 38E4 38E5 38E6 38E7 38E8 38E9 38EA 38EB 38EC 38ED 38EE 38EF 38F0 38F1 38F2 38F3 38F4 38F5 38F6 38F7 38F8
IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW IORLW
D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8
38F9 38FA 38FB 38FC 38FD 38FE 38FF 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 390A 390B 390C 390D 390E 390F 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 391A 391B 391C
IORLW IORLW IORLW IORLW IORLW IORLW IORLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW
F9 FA FB FC FD FE FF 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C
376
391D 391E 391F 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 392A 392B 392C 392D 392E 392F 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 393A 393B 393C 393D 393E 393F 3940
ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW
1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40
3941 3942 3943 3944 3945 3946 3947 3948 3949 394A 394B 394C 394D 394E 394F 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 395A 395B 395C 395D 395E 395F 3960 3961 3962 3963 3964
ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW
41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64
377
3965 3966 3967 3968 3969 396A 396B 396C 396D 396E 396F 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 397A 397B 397C 397D 397E 397F 3980 3981 3982 3983 3984 3985 3986 3987 3988
ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW
65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88
3989 398A 398B 398C 398D 398E 398F 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 399A 399B 399C 399D 399E 399F 39A0 39A1 39A2 39A3 39A4 39A5 39A6 39A7 39A8 39A9 39AA 39AB 39AC
ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW
89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC
378
39AD 39AE 39AF 39B0 39B1 39B2 39B3 39B4 39B5 39B6 39B7 39B8 39B9 39BA 39BB 39BC 39BD 39BE 39BF 39C0 39C1 39C2 39C3 39C4 39C5 39C6 39C7 39C8 39C9 39CA 39CB 39CC 39CD 39CE 39CF 39D0
ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW
AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0
39D1 39D2 39D3 39D4 39D5 39D6 39D7 39D8 39D9 39DA 39DB 39DC 39DD 39DE 39DF 39E0 39E1 39E2 39E3 39E4 39E5 39E6 39E7 39E8 39E9 39EA 39EB 39EC 39ED 39EE 39EF 39F0 39F1 39F2 39F3 39F4
ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW
D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4
379
39F5 39F6 39F7 39F8 39F9 39FA 39FB 39FC 39FD 39FE 39FF 3A00 3A01 3A02 3A03 3A04 3A05 3A06 3A07 3A08 3A09 3A0A 3A0B 3A0C 3A0D 3A0E 3A0F 3A10 3A11 3A12 3A13 3A14 3A15 3A16 3A17 3A18
ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW ANDLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW
F5 F6 F7 F8 F9 FA FB FC FD FE FF 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18
3A19 3A1A 3A1B 3A1C 3A1D 3A1E 3A1F 3A20 3A21 3A22 3A23 3A24 3A25 3A26 3A27 3A28 3A29 3A2A 3A2B 3A2C 3A2D 3A2E 3A2F 3A30 3A31 3A32 3A33 3A34 3A35 3A36 3A37 3A38 3A39 3A3A 3A3B 3A3C
XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW
19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C
380
3A3D 3A3E 3A3F 3A40 3A41 3A42 3A43 3A44 3A45 3A46 3A47 3A48 3A49 3A4A 3A4B 3A4C 3A4D 3A4E 3A4F 3A50 3A51 3A52 3A53 3A54 3A55 3A56 3A57 3A58 3A59 3A5A 3A5B 3A5C 3A5D 3A5E 3A5F 3A60
XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW
3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60
3A61 3A62 3A63 3A64 3A65 3A66 3A67 3A68 3A69 3A6A 3A6B 3A6C 3A6D 3A6E 3A6F 3A70 3A71 3A72 3A73 3A74 3A75 3A76 3A77 3A78 3A79 3A7A 3A7B 3A7C 3A7D 3A7E 3A7F 3A80 3A81 3A82 3A83 3A84
XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW
61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84
381
3A85 3A86 3A87 3A88 3A89 3A8A 3A8B 3A8C 3A8D 3A8E 3A8F 3A90 3A91 3A92 3A93 3A94 3A95 3A96 3A97 3A98 3A99 3A9A 3A9B 3A9C 3A9D 3A9E 3A9F 3AA0 3AA1 3AA2 3AA3 3AA4 3AA5 3AA6 3AA7 3AA8
XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW
85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8
3AA9 3AAA 3AAB 3AAC 3AAD 3AAE 3AAF 3AB0 3AB1 3AB2 3AB3 3AB4 3AB5 3AB6 3AB7 3AB8 3AB9 3ABA 3ABB 3ABC 3ABD 3ABE 3ABF 3AC0 3AC1 3AC2 3AC3 3AC4 3AC5 3AC6 3AC7 3AC8 3AC9 3ACA 3ACB 3ACC
XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW
A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC
382
3ACD 3ACE 3ACF 3AD0 3AD1 3AD2 3AD3 3AD4 3AD5 3AD6 3AD7 3AD8 3AD9 3ADA 3ADB 3ADC 3ADD 3ADE 3ADF 3AE0 3AE1 3AE2 3AE3 3AE4 3AE5 3AE6 3AE7 3AE8 3AE9 3AEA 3AEB 3AEC 3AED 3AEE 3AEF 3AF0
XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW
CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0
3AF1 3AF2 3AF3 3AF4 3AF5 3AF6 3AF7 3AF8 3AF9 3AFA 3AFB 3AFC 3AFD 3AFE 3AFF 3C00 3C01 3C02 3C03 3C04 3C05 3C06 3C07 3C08 3C09 3C0A 3C0B 3C0C 3C0D 3C0E 3C0F 3C10 3C11 3C12 3C13 3C14
XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW XORLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW
F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14
383
3C15 3C16 3C17 3C18 3C19 3C1A 3C1B 3C1C 3C1D 3C1E 3C1F 3C20 3C21 3C22 3C23 3C24 3C25 3C26 3C27 3C28 3C29 3C2A 3C2B 3C2C 3C2D 3C2E 3C2F 3C30 3C31 3C32 3C33 3C34 3C35 3C36 3C37 3C38
SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW
15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38
3C39 3C3A 3C3B 3C3C 3C3D 3C3E 3C3F 3C40 3C41 3C42 3C43 3C44 3C45 3C46 3C47 3C48 3C49 3C4A 3C4B 3C4C 3C4D 3C4E 3C4F 3C50 3C51 3C52 3C53 3C54 3C55 3C56 3C57 3C58 3C59 3C5A 3C5B 3C5C
SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW
39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C
384
3C5D 3C5E 3C5F 3C60 3C61 3C62 3C63 3C64 3C65 3C66 3C67 3C68 3C69 3C6A 3C6B 3C6C 3C6D 3C6E 3C6F 3C70 3C71 3C72 3C73 3C74 3C75 3C76 3C77 3C78 3C79 3C7A 3C7B 3C7C 3C7D 3C7E 3C7F 3C80
SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW
5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80
3C81 3C82 3C83 3C84 3C85 3C86 3C87 3C88 3C89 3C8A 3C8B 3C8C 3C8D 3C8E 3C8F 3C90 3C91 3C92 3C93 3C94 3C95 3C96 3C97 3C98 3C99 3C9A 3C9B 3C9C 3C9D 3C9E 3C9F 3CA0 3CA1 3CA2 3CA3 3CA4
SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW
81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4
385
3CA5 3CA6 3CA7 3CA8 3CA9 3CAA 3CAB 3CAC 3CAD 3CAE 3CAF 3CA0 3CB1 3CB2 3CB3 3CB4 3CB5 3CB6 3CB7 3CB8 3CB9 3CBA 3CBB 3CBC 3CBD 3CBE 3CBF 3CC0 3CC1 3CC2 3CC3 3CC4 3CC5 3CC6 3CC7 3CC8
SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW
A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8
3CC9 3CCA 3CCB 3CCC 3CCD 3CCE 3CCF 3CD0 3CD1 3CD2 3CD3 3CD4 3CD5 3CD6 3CD7 3CD8 3CD9 3CDA 3CDB 3CDC 3CDD 3CDE 3CDF 3CE0 3CE1 3CE2 3CE3 3CE4 3CE5 3CE6 3CE7 3CE8 3CE9 3CEA 3CEB 3CEC
SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW
C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC
386
3CED 3CEE 3CEF 3CF0 3CF1 3CF2 3CF3 3CF4 3CF5 3CF6 3CF7 3CF8 3CF9 3CFA 3CFB 3CFC 3CFD 3CFE 3CFF 3E00 3E01 3E02 3E03 3E04 3E05 3E06 3E07 3E08 3E09 3E0A 3E0B 3E0C 3E0D 3E0E 3E0F 3E10
SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW SUBLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW
ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10
3E11 3E12 3E13 3E14 3E15 3E16 3E17 3E18 3E19 3E1A 3E1B 3E1C 3E1D 3E1E 3E1F 3E20 3E21 3E22 3E23 3E24 3E25 3E26 3E27 3E28 3E29 3E2A 3E2B 3E2C 3E2D 3E2E 3E2F 3E30 3E31 3E32 3E33 3E34
ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW
11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34
387
3E35 3E36 3E37 3E38 3E39 3E3A 3E3B 3E3C 3E3D 3E3E 3E3F 3E40 3E41 3E42 3E43 3E44 3E45 3E46 3E47 3E48 3E49 3E4A 3E4B 3E4C 3E4D 3E4E 3E4F 3E50 3E51 3E52 3E53 3E54 3E55 3E56 3E57 3E58
ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW
35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58
3E59 3E5A 3E5B 3E5C 3E5D 3E5E 3E5F 3E60 3E61 3E62 3E63 3E64 3E65 3E66 3E67 3E68 3E69 3E6A 3E6B 3E6C 3E6D 3E6E 3E6F 3E70 3E71 3E72 3E73 3E74 3E75 3E76 3E77 3E78 3E79 3E7A 3E7B 3E7C
ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW
59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C
388
3E7D 3E7E 3E7F 3E80 3E81 3E82 3E83 3E84 3E85 3E86 3E87 3E88 3E89 3E8A 3E8B 3E8C 3E8D 3E8E 3E8F 3E90 3E91 3E92 3E93 3E94 3E95 3E96 3E97 3E98 3E99 3E9A 3E9B 3E9C 3E9D 3E9E 3E9F 3EA0
ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW
7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0
3EA1 3EA2 3EA3 3EA4 3EA5 3EA6 3EA7 3EA8 3EA9 3EAA 3EAB 3EAC 3EAD 3EAE 3EAF 3EB0 3EB1 3EB2 3EB3 3EB4 3EB5 3EB6 3EB7 3EB8 3EB9 3EBA 3EBB 3EBC 3EBD 3EBE 3EBF 3EC0 3EC1 3EC2 3EC3 3EC4
ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW
A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4
389
3EC5 3EC6 3EC7 3EC8 3EC9 3ECA 3ECB 3ECC 3ECD 3ECE 3ECF 3ED0 3ED1 3ED2 3ED3 3ED4 3ED5 3ED6 3ED7 3ED8 3ED9 3EDA 3EDB 3EDC 3EDD 3EDE 3EDF 3EE0 3EE1 3EE2 3EE3 3EE4 3EE5 3EE6 3EE7 3EE8
ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW
C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8
3EE9 3EEA 3EEB 3EEC 3EED 3EEE 3EEF 3EF0 3EF1 3EF2 3EF3 3EF4 3EF5 3EF6 3EF7 3EF8 3EF9 3EFA 3EFB 3EFC 3EFD 3EFE 3EFF
ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW ADDLW
E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF
390
LEXIQUE
391
Adresse
Prenez une longue rue, avec une infinit de maisons toutes pareilles. Ce qui les diffrencie est le numro figurant au-dessus de chaque porte (ladresse). De mme, dans un systme mmoires, chaque emplacement (que dans les C PIC on appelle registre ou ile) est rang lun ct de lautre. Ce qui les diffrencie est le numro de la position quils occupent dans lespace mmoire dans lequel ils sont rangs. Ce numro de position sappelle adresse.
Assemblage
Aprs avoir crit un programme source, il faut lassembler. Lassemblage est une tape importante dans la phase de dveloppement dun programme. La tche de lassembleur est de traduire le programme source en langage machine (programme objet), de construire la table des symboles utilise par le programme, dindiquer les ventuelles erreurs et de les compter.
Directives dassemblage
Les directives dassemblage sont des instructions que lon donne exclusivement lassembleur. Elles ne sont pas traduites en langage machine. Les directives dassemblage permettent entre autres :
392 - laffectation de symboles et dtiquettes des valeurs numriques (EQU...) - la gestion de la mmoire et limplantation du programme objet (ORG...) - la dfinition de constantes et de textes cods en ASCII - de dfinir la partie du programme assembler et les programmes quil convient dinclure dans la phase dassemblage (INCLUDE, END...) Lassemblage termin, les directives dassemblage ne jouent plus aucun rle.
Digit Carry
Le Digit Carry est lun des flags du registre dtat. Cest lindicateur que lon appelle retenue auxiliaire, ou retenue intermdiaire ; cest dire le dbordement du quartet de poids faible dun octet sur son quartet de poids fort. Par exemple, soit additionner 9 + 9 (dcimal), soit : Quartets de Quartets de poids fort poids faible 0000 1001 + 0000 1001 _________________ = 0001 0010 La retenue sest propage. Elle met 1 lindicateur de retenue intermdiaire.
393
Include
Cette instruction inclut un fichier source dans un programme pour que celui-ci sy ajoute. Cela revient copier son contenu dans un listing, sans quil soit ncessaire de rcrire une une toutes les instructions qui le composent. Exemple : INCLUDE P16F84.INC On peut inclure un ou plusieurs fichiers, en faisant chaque fois appel linstruction INCLUDE. INCLUDE est une instruction qui sadresse lassembleur ou au compilateur. Leffet produit par linstruction INCLUDE est exactement le mme que celui quon obtiendrait si lon crivait lendroit o celle-ci figure dans le programme toutes les lignes du fichier insr. Les instructions INCLUDE peuvent tre imbriques jusqu 6 niveaux. Le nom du fichier peut tre crit de deux faons :
394 - soit prcd par le signe < et termin par le signe > - soit prcd par le signe et termin par le signe Si le fichier inclure ne se trouve pas dans le mme environnement dans lequel on se trouve, un chemin daccs doit lui tre expressment indiqu. Lordre en est le suivant : nom du rpertoire, nom du dossier, nom du fichier.
Interruption
Une interruption est un vnement externe, qui se produit un instant alatoire, sans pravis, qui demande au C dabandonner ce quil est en train de faire, et de diriger toute son attention ailleurs. Autrement dit, une interruption est la possibilit dinterrompre tout moment le droulement du programme principal, pour permettre au C de prendre en compte un vnement dont la frquence est alatoire mais dont limportance est plus grande que celle de la tche quil est occup traiter. Ds lors, le C termine lexcution de linstruction quil a en cours, mmorise ladresse suivante (pour y revenir ensuite), et se branche un sous-programme (sous-programme dinterruption) pour effectuer des oprations prioritaires. Une fois que le sous-programme dinterruption a t trait, le microcontrleur revient au programme principal. Les interruptions peuvent tre masquables ou non masquables. Si elles sont masquables, elles narrtent pas forcment le C. Cest le programmeur qui examine leur importance et qui dcide. Si plusieurs interruptions peuvent surgir en mme temps, cest le programmeur qui leur affecte un degr de priorit, et juge sur ce que le processeur doit faire. Par contre, les interruptions non masquables arrtent le processeur sans conditions.
395
Pile (Stack)
La pile (Stack) est une zone de la mmoire RAM dans laquelle sont mmorises les adresses de retour chaque fois quon fait appel une instruction CALL, cest dire chaque fois que le programme arrte lexcution squentielle des instructions et se dbranche pour aller excuter les instructions contenues dans un sous-programme. La pile du C 16F84 peut mmoriser jusqu 8 adresses. En fait, tout en disposant dun bus interne de 13 lignes et pouvant, par consquent, adresser jusqu' 1 1111 1111 1111 (1FFF) la pile du 16F84 est bride 11 1111 1111 ( 3FF) du fait que ce modle de microcontrleur est limit 1K de mmoire. Comme la pile ne possde que 8 emplacements, il est vident quon peut imbriquer jusqu 8 appels sous-programme, en sachant que malheureusement il n'existe aucun flag avertissant que la pile est pleine. Do la ncessit de la surveiller, au risque de constater de drles danomalies, car ces 8 cases mmoire sont disposes comme en anneau, de telle sorte que si lon enregistrait un 9me appel sous-programme, la 9me valeur dadresse prendrait la place de la premire, avec toutes les consquences quon peut imaginer. La pile est adresse par un compteur spcial appel Pointeur de Pile.
396 linstruction range juste aprs la prcdente, mais il se branche ailleurs, aiguill par le PC qui, lui-mme, obit alors aux ordres de CALL et GOTO. Du fait que le 16F84 possde une mmoire de programme de 1K instructions, le PC (Program Counter) de ce C utilise un bus de 10 lignes dont ltendue va de ladresse 000 jusqu ladresse 3FF (1.024 adresses au total, dont les cinq premires rserves) : 11 1111 1111 (en binaire) 3 F F ( en hexa ) NB : Bien que cela ne concerne pas le 16F84, il est bon de savoir que le Program Counter de certains modles de PIC est organis en deux bytes : lun fournissant la partie basse de ladresse, lautre fournissant la partie haute. Alors que les adresses de la partie basse sont disponibles en permanence, celles de la partie haute sont fournies par le registre PCLATH (Program Counter Latch).
Le vecteur de RESET
A la mise sous tension, avant dobir lune quelconque des instructions du programmeur, le C obit une instruction pr-dfinie par son fabricant, que personne ne peut ni supprimer ni modifier. Cette instruction est linstruction RESET. Elle oblige tout programme dmarrer obligatoirement partir de ladresse 000 . En ce sens linstruction RESET est un vecteur : le C sy rend, dirig par une force suprme (celle quexerce sur lui le programme rsident). Un Reset peut avoir lieu : 1) en coupant lalimentation gnrale ; 2) en mettant la masse, mme fugitivement, la patte MCLR ; 3) en activant le timer du Watch Dog (chien de garde intgr).
397
Lexcution de tout programme doit donc imprativement commencer partir de ladresse 000. En programmation, la directive qui force le programme dmarrer de lemplacement 000 est ORG. On crit : ORG 000
398
Sommaire
Copyright............................................................................... Ddicace............................................................................... Avant-propos........................................................................ Du contrleur au microcontrleur........................................ Le microcontrleur 16F84................................................... - Prsentation gnrale...................................................... - Brochage du PIC 16F84................................................. - Le cortge des invariants................................................ - Pilotage par quartz.......................................................... - Pilotage par oscillateur RC........................................ Les Entres/Sorties.............................................................. Organisation de la mmoire du PIC 16F84......................... Les registres spciaux.......................................................... - EEADR........................................................................... - EECON1......................................................................... - EECON2......................................................................... - EEDATA........................................................................ - FSR File Select Register)............................................... - INTCON (INTerrupt CONtrol)...................................... - OPTION.......................................................................... - PCL (Program Counter Low)......................................... - PCLATH Program Counter LATch High)..................... - PORTA-PORTB............................................................ - STATUS Registre dtat).............................................. - TMR0 (Timer 0)............................................................. - TRISA-TRISB............................................................... La Programmation............................................................... - Diffrentes faons de programmer................................. Avantages et inconvnients de la programmation en langage ASSEMBLEUR................................................ Avantages et inconvnients de la programmation en langage BASIC............................................................... Les outils ncessaires pour programmer en langage ASSEMBLEUR................................................. Les outils ncessaires pour programmer en langage BASIC............................................................... Structure dun programme................................................... Canevas dun programme.................................................... Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page 2 3 5 7 8 8 9 10 11 12 13 14 23 24 25 26 27 28 29 33 36 37 38 40 42 43 44 44
399 Programmation en langage ASSEMBLEUR....................... Les instructions du 16F84.................................................... - Classement par lettre alphabtique................................. - Classement par genre...................................................... - Classement par type....................................................... - Classement par ordre croissant dencodage.................. - ADDLW........................................................................ - ADDWF........................................................................ - ANDLW........................................................................ - ANDWF........................................................................ - BCF............................................................................... - BSF............................................................................... - BTFSC............................................................................. - BTFSS............................................................................. - CALL.............................................................................. - CLRF.............................................................................. - CLRW............................................................................. - CLRWDT....................................................................... - COMF............................................................................ - DECF............................................................................. - DECFSZ........................................................................ - GOTO............................................................................ - INCF.............................................................................. - INCFSZ......................................................................... - IORLW.......................................................................... - IORWF.......................................................................... - MOVF........................................................ ................... - MOVLW..................................................... .................. - MOVWF...................................................... . ............... - NOP.............................................................. ................ - OPTION..................................................... .................. - RETFIE........................................................................ - RETLW......................................................................... - RETURN....................................................................... - RLF................................................................................ - RRF............................................................................... - SLEEP........................................................................... - SUBLW......................................................................... - SUBWF......................................................................... - SWAPF.......................................................................... - TRIS.............................................................................. Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page Page 51 52 54 56 58 60 61 62 64 66 68 70 72 74 76 78 79 80 81 83 84 86 87 88 90 92 94 96 97 98 99 100 101 102 103 105 107 108 109 110 111
400 - XORLW........................................................................ - XORWF........................................................................ Encodage des instructions.................................................. - Signification des lettres utilises pour lencodage des instructions............................................ Exemples de programmes crits en langage ASSEMBLEUR............................................................ - Programme 1................................................................ - Organigramme.................................................. - Fichier extension .asm................................... - Fichier extension .hex.................................... - Programme 2................................................................ - Organigramme.................................................. - Fichier extension .asm................................... - Fichier extension .hex.................................... - Programme 3............................................................... - Organigramme.................................................. - Fichier extension .asm................................... - Fichier extension .hex.................................... - Programme 4.................................................................. - Organigramme.................................................... - Fichier extension .asm..................................... - Fichier extension .hex...................................... - Programme 5.................................................................. -Fichier extension .asm...................................... - Programme 6.................................................................. -Fichier extension .asm...................................... - Programme 7.................................................................. -Fichier extension .asm...................................... MPLAB............................................................................... - Quest-ce que MPLAB.................................................. - Comment obtenir MPLAB............................................ - Caractristiques requises par le PC pour linstallation de MPLAB.................................................................... - Comment installer MPLAB.......................................... - Comment dsinstaller MPLAB..................................... - Comment dmarrer avec MPLAB................................ Premire tape : cration du projet..................................... - Crer un projet.............................................................. - Comment crer un projet.............................................. Deuxime tape : criture du programme source............... Page 113 Page 115 Page 117 Page 117 Page 118 Page 118 Page 118 Page 119 Page 120 Page 121 Page 121 Page 122 Page 124 Page 125 Page 125 Page 126 Page 129 Page 130 Page 130 Page 131 Page 133 Page 134 Page 134 Page 137 Page 137 Page 140 Page 140 Page 143 Page 143 Page 145 Page 146 Page 147 Page 157 Page 158 Page 160 Page 160 Page 161 Page 165
401 Troisime tape : conversion du programme source en programme objet.......................................................... Quatrime tape : correction des erreurs............................ Cinquime tape : simulation du programme..................... - Mode pas pas.............................................................. - Mode Step Over............................................................ - Mode excution automatique........................................ - Ouverture de fentres.................................................... Programmation en langage BASIC................................ - Symbol................................................................ - Les variables de type B et W.............................. - Les variables de bit............................................. - Dnomination des lignes de PORTS.................. - Configuration des bits de chaque Port................ - Port A................................................... - Port B................................................... - Lecture des Ports................................................ - Les Constantes................................................... - Les Labels.......................................................... - Les Commentaires............................................. Le set dinstructions du MEL PicBASIC........................... - Classement par ordre alphabtique.................... - Classement par genre......................................... - BRANCH............................................ - BUTTON............................................ - CALL................................................... - DEBUG............................................... - DIRS.................................................... - EEPROM............................................ - END..................................................... - FOR...NEXT........................................ - GOSUB................................................ - GOTO.................................................. - HIGH................................................... - I2Cin.................................................... - I2Cout.................................................. - If... Then.............................................. - INPUT................................................. - LET...................................................... - LOOKdown..................................... - LOOKup..............................................
Page 169 Page 176 Page 177 Page 178 Page 181 Page 183 Page 184 Page 187 Page 189 Page 190 Page 191 Page 192 Page 193 Page 193 Page 194 Page 195 Page 196 Page 197 Page 198 Page 199 Page 200 Page 201 Page 202 Page 203 Page 205 Page 206 Page 207 Page 208 Page 209 Page 210 Page 214 Page 216 Page 217 Page 218 Page 221 Page 222 Page 223 Page 224 Page 225 Page 226
402 - LOW.................................................... - NAP..................................................... - OUTPUT............................................. - PAUSE................................................ - PEEK................................................... - PINS.................................................... - POKE.................................................. - POT..................................................... - PULSin................................................ - PULSout.............................................. - PWM................................................... - RANDOM........................................... - READ.................................................. - RETURN............................................. - REVERSE............................................ - SERin................................................... - SERout................................................. - SLEEP.................................................. - SOUND................................................ - TOGLE................................................ - TRISA.................................................. - WRITE................................................. Exemples de programmes crits en langage PicBASIC..... - Programme 1................................................................. - Programme 2................................................................. - Programme 3................................................................. - Programme 4................................................................. - Programme 5................................................................. - Programme 6................................................................. - Programme 7................................................................. - Programme 8................................................................. - Programme 9................................................................. - Programme 10............................................................... - Programme 11............................................................... - Programme 12............................................................... - Programme 13............................................................... - Programme 14............................................................... - Programme 15............................................................... - Programme 16............................................................... - Programme 17........................................................... BIBLE pour dsassembler la main............................... Page 227 Page 228 Page 229 Page 230 Page 231 Page 232 Page 234 Page 235 Page 237 Page 239 Page 240 Page 244 Page 245 Page 246 Page 247 Page 248 Page 250 Page 253 Page 254 Page 256 Page 257 Page 258 Page 259 Page 260 Page 261 Page 263 Page 264 Page 265 Page 266 Page 268 Page 269 Page 270 Page 271 Page 272 Page 273 Page 274 Page 275 Page 276 Page 277 Page 278 Page 279
403 Lexique............................................................................... - Adresse......................................................................... - Assemblage................................................................... - Directives dassemblage............................................... - Digit Carry.................................................................... - Environnement de Dveloppement Intgr.................. - Include.......................................................................... - Interruption............................................................... ... - Pile (Stack)................................................................... - Program Counter (EEPROM)....................................... - Le vecteur de Reset....................................................... - Watch Dog Timer......................................................... Sommaire.......................................................................... Page 390 Page 391 Page 391 Page 391 Page 392 Page 393 Page 393 Page 394 Page 395 Page 395 Page 396 Page 397 Page 398