Vous êtes sur la page 1sur 403

1

Pierre LOGLISCI

Le microcontrleur
PIC
16F84

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.

Cest elle que je ddicace ce livre.

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 .

Brochage du PIC 16F84


(C vu de dessus)

10

Le cortge des invariants

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

1) Pilotage par quartz

12

2) Pilotage par oscillateur RC

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

Organisation de la mmoire du PIC 16F84


La mmoire du PIC 16F84 est rpartie en trois espaces, logs sur
la mme pastille de silicium :
1) Une mmoire EEPROM de type flash, de 1 K mots de 14 bits,
allant de ladresse 000 ladresse 3FF.
Cet espace est dnomm mmoire de programme, dont le plan est le
suivant :
5 adresses rserves au C
(adresses que je
conseille de sauter)

000 Vecteur de Reset


001
002

003
004 Vecteur dInterruption
005

Dbut du programme
utilisateur

.
.
1019 adresses
restantes,
disponibles pour y loger
les instructions de
votre programme

.
.
.
.

3FF

Fin de lespace mmoire


disponible

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

17
BSF
BCF
BSF
BCF

EECON1,1
EECON1,2
INTCON,7
STATUS,RP0

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 :

00
01
02
03
04
05
06
07
08
09
0A
0B

Page 0
Adressage indirect
TMR0
PCL
STATUS
FSR
PORT A
PORT B
EEDATA
EEADR
PCLATH
INTCON

80
81
82
83
84
85
86
87
88

89
8A
8B

Page 1
Adressage indirect
OPTION
PCL
STATUS
FSR
TRIS A
TRIS B
EECON1
EECON2
PCLATH
INTCON

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

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

FOSC0
0

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

Les registres spciaux


Nous avons dit que dans lespace mmoire RAM que Microchip
appelle Register File, une zone est rserve aux registres spciaux.
Le mot registre est utilis ici pour dsigner un emplacement
mmoire, tandis que le mot file signifie groupement.
Certains de ces registres sont situs en Page 0 entre les adresses 00
et 0B, et dautres sont situs en Page 1 entre les adresses 80 et 8B.
Quelques-uns dentre eux figurent mme dans les deux pages (Page 0 et
Page 1) pour en faciliter laccs.
Ils ont des noms et des usages spcifiques, et servent commander
le microcontrleur.
Il y en a 16 en tout, et sont si importants quils conditionnent
vritablement la programmation.
Ils sont utiliss constamment, et constamment tenus prsents dans la tte du
programmeur.
Celui qui veut crire ne ft-ce quun petit programme de quelques
lignes, ne peut pas les ignorer.
Cest pourquoi ils doivent tre tudis et connus fond.
Examinons-les en dtail, un par un, par ordre alphabtique.

24

EEADR (EEprom ADRess)


Registre dans lequel on crit ladresse de la mmoire de donnes
EEPROM (mmoire flash de 64 octets, allant de ladresse 00 ladresse
3F) laquelle on veut accder pour y lire ou pour y crire.
Contrairement lEEPROM de programme qui - en plus de la
tension dalimentation du microcontrleur - ncessite une tension externe
pour la programmation, cette EEPROM fonctionne avec la seule tension
dalimentation, dans toute sa plage.

25

EECON1 (EEprom CONtrol 1)


Registre de contrle permettant de dfinir le mode de
fonctionnement de la mmoire de donnes EEPROM (mmoire flash de 64
octets, allant de ladresse 00 ladresse 3F).
Registre 8 bits, mais dont 5 seulement sont utiliss:
7

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

EECON2 (EEprom CONtrol 2)


Registre nayant aucune consistance physique, et dont le seul rle
consiste obliger le programmeur vrifier les donnes quil envoie dans
lEEPROM.

27

EEDATA (EEprom DATA)


- Pendant une opration de lecture : registre dans lequel est
disponible la donne quon est all chercher une certaine adresse de la
mmoire EEPROM.
- Pendant une opration dcriture : registre dans lequel on place la
donne quon veut y crire.

28

FSR (File Select Register)


Sert slectionner la mmoire de donnes, pour pouvoir y accder.

29

INTCON (INTerrupt CONtrol)


Est le registre qui prside au fonctionnement des interruptions.
Dans le 16F84 il y a quatre sources possibles dinterruptions.
Chaque fois que lune delles surgit, le microcontrleur (aprs avoir not
dans la pile ladresse de retour) abandonne momentanment (interrompt) le
programme quil avait en cours dexcution et saute ladresse 004
(adresse prdfinie par le fabricant, de la mme faon que ladresse 000 a
t prdfinie pour la fonction Reset).
En lisant le contenu de ce registre, on peut dterminer la provenance de la
demande dinterruption et aiguiller le programme de manire y rpondre
de faon adquate.
Linterruption peut tre commande soit par un flanc montant, soit par un
flanc descendant : cela dpend de la faon dont on a pralablement
programm le bit 6 (INTEDG) du registre OPTION :
1 = linterruption est gnre lapparition dun front
montant ;
0 = linterruption est gnre lapparition dun front
descendant.
Les quatre sources dinterruption possibles sont :
1) la fin dune programmation de lEEPROM de donnes ;
2) le dbordement du timer interne ;
3) une commande externe applique sur la pin 6 (RB0/INT) ;
4) un changement dtat sur lune des pins 10, 11, 12 ou 13
(respectivement RB4, RB5, RB6, RB7).
Dans ce cas, seule une configuration des lignes en entre peut donner
lieu une ventuelle demande dinterruption.

30
Examinons un par un chacun des bits de ce registre :
7

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

EEIE

31
Bit 5 : T0IE (Timer zero Interrupt Enable)
7

TOIE
Mis 1, il autorise les interruptions provoques par le
dbordement du timer interne (passage de FF 00).

Bit 4 : INTE (INTerrupt Enable)


7

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

Bit 3 : RBIE (Register B Interrupt Enable)


7

RBIE
Mis 1, il autorise les interruptions provoques
par un changement dtat sur les lignes du port B
(RB4, BR5, RB6, RB7).

32
Bit 2 : T0IF (Timer zero Interrupt Flag)
7

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).

Bit 1 : INTF (INTerrupt Flag)


7

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).

Bit 0 : RBIF (Register B Interrupt Flag)


7

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

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

)
sur un front montant (
0 = interruption programme pour se dclencher
sur un front descendant

).

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

PS1

PS0

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

Pour le TMR0
2
4
8
16
32
64
128
256

Pour le Watch-Dog
1
2
4
8
16
32
64
128

Pour crire dans ce registre on utilise soit linstruction BSF,bit


Soit linstruction BCF,bit.

35

Reprsentation image du fonctionnement du timer TMR0 et du


Watch-Dog (chien de garde) :

36

PCL (Program Counter Low)


Il sagit du compteur qui fournit au programme la partie basse de
ladresse.
Dans les microcontrleurs de Microchip les lignes dadresses sont
rparties en deux bytes : le PCL (fourni par ce registre Program Counter
Low), et le PCH (fourni par le registre PCLATH Program Counter LATch
High).
Il sagit dun compteur dont la tche est dadresser la mmoire
dans laquelle sont loges les instructions du programme.
Lorganisation de ce type de compteur, dans les microcontrleurs
PIC, veut que ladresse soit compose de deux parties : la partie basse
(fournie par PCL, sur dix lignes dadresse) et la partie haute (fournie par
PCLATH).

37

PCLATH (Program Counter LATch High)

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

MOVWF

BCF

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 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.

2) Comment crire un 1 sur une ligne de port (par exemple, sur RA2) :
MOVLW

11111110

MOVWF

TRISA

(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.

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

MOVWF
BTFSC

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.

4) Comment lire loctet entier dun port configur en entre :


MOVF PORTA,W

Charge le contenu du port A


dans le registre W.

40

STATUS (Registre dtat)


Les cinq premiers bits de ce registre (bits 0 4) correspondent
des flags que le programmeur peut interroger pour obtenir des informations
lui permettant dcrire correctement la suite des instructions de son
programme ; tandis que les bits 5, 6 et 7 (RP0, RP1, RP2), daprs la faon
dont on les programme, pourraient slectionner 8 pages de registres
internes (chacune de 128 octets).
Comme dans le 16F84 il ny a que deux pages de registres (Page 0 et Page
1), seul le bit 5 (RP0) sert (les bits 6 et 7 sont ignorer purement et
simplement).
7

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).

2)

BSF

STATUS,RP0

(Bit Set File STATUS Register Page 0).


Met 1 le bit RP0 du registre

dtat. Autrement dit : slectionne


le banc mmoire 1 (adresses de 80
FF).

42

TMR0 (TiMeR zero)


Est le registre de contrle de lhorloge interne (timer) du
microcontrleur.
Ce timer peut soit fonctionner seul, soit tre prcd par un pr diviseur
programmable 8 bits dont la programmation se fait par lintermdiaire du
registre OPTION.
Ce registre peut tre lu et modifi tout moment, soit pour
connatre sa position courante, soit pour le dclencher partir dune valeur
dtermine.
Une quelconque opration dcriture dans ce registre met automatiquement
zro le comptage en cours dans le pr diviseur.
Se rappeler que le timer compte sur 8 bits, et quune fois que le comptage
est arriv FF, celui-ci revient 00 (ce qui provoque le passage 1 du bit 2
du registre INTCON appel T0IF).
En programmation on peut crire :
1) pour le lire :
MOVF TMR0 ,W
(porte la valeur de TMR0 dans W)
2) pour lui donner une valeur de dpart :
MOVLW valeur
MOVWF TMR0
3) pour le mettre zro :
CLRF TMR0

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

Avantages et inconvnients de la programmation en


langage ASSEMBLEUR
Avantages :
La programmation en langage ASSEMBLEUR se fait laide dun outil de
programmation entirement gratuit et que lon peut diffuser librement.
Cet outil (qui est un magnifique environnement de programmation complet)
sappelle MPLAB.
Il est disponible en tlchargement gratuit sur le site de Microchip.
Inconvnients :
Pour programmer en langage ASSEMBLEUR, il faut non seulement
connatre le fonctionnement de chaque instruction, mais aussi larchitecture
interne du microcontrleur, la structure de sa mmoire, les adresses des
registres spciaux, le fonctionnement de chacune de ses ressources internes,
etc..
La programmation en langage ASSEMBLEUR sappuie sur des
organigrammes plus travaills, et requiert plus de rigueur et de minutie.
Le programmeur doit plus faire attention aux impratifs machine qu la
finalit de son programme.
Distrait par le impratifs machine, le programmeur commet souvent des
erreurs.
Ces erreurs sont souvent difficiles dceler et corriger.

46

Avantages et inconvnients de la programmation en


langage BASIC
Avantages :
La programmation en BASIC se fait laide dun langage facile et direct
qui (bien qutant de langlais) comprend des mots puissants, si bien quun
programme crit en BASIC comporte peu de mots.
Les erreurs de programmation sont plus rares, et se dclent facilement.
Lcriture des programmes prend peu de temps.
Inconvnients :
La programmation en BASIC ncessite un COMPILATEUR
expressment conu pour la programmation des PIC.
Il sagit dun produit commercial, fruit dun travail dquipe, et donc
payant.
Les programmes en langage BASIC, bien que trs courts pour le
programmeur qui les crit, demandent plus de place EEPROM car, vus ct
PIC, ils demandent plus dinstructions lmentaires. A tel point que parfois
un microcontrleur pouvant contenir laise un programme crit en
langage assembleur, savre possder une mmoire insuffisante sil tait
programm en langage BASIC, pour faire la mme chose.

47

Les outils ncessaires pour programmer en


langage ASSEMBLEUR
Pour programmer en langage ASSEMBLEUR il faut :
1) un PC et une imprimante, pour crire les instructions permettant de
confectionner le fichier extension . asm
2) un ASSEMBLEUR fourni gratuitement par Microchip ( tlcharger
sur INTERNET) permettant de confectionner le fichier extension .hex
Cet ASSEMBLEUR sappelle MPLAB.
Il faut linstaller sur votre PC et apprendre vous en servir.
3) un PROGRAMMATEUR de PIC.
Relativement simple raliser.
Il existe des modles pour port srie et des modles pour port parallle.
Je vous conseille un modle pour port parallle.
Cherchez un schma sur un magazine dElectronique, ou achetez un kit.
4) un LOGICIEL adapt votre programmateur de PIC.
Si vous achetez un kit, il vous sera fourni avec le kit.
Si vous copiez le schma dans un magazine, vous devez pouvoir
tlcharger le logiciel ladresse cite dans larticle.
5) Des cbles de liaison et une petite alimentation (un bloc secteur).

48

Les outils ncessaires pour programmer en


langage BASIC
Pour programmer en langage BASIC il faut :
1) un PC et une imprimante, pour crire les instructions permettant de
confectionner le fichier extension .bas
2) un COMPILATEUR PicBASIC propos par Micro Engineering Labs
(dont limportateur exclusif pour la France est SELECTRONIC Lille)
permettant de confectionner le fichier extension .hex
3) un PROGRAMMATEUR de PIC
(mmes remarques qu propos des outils pour programmer
en langage ASSEMBLEUR)
4) un LOGICIEL adapt votre programmateur de PIC
(idem)
5) Des cbles de liaison et une petite alimentation (un bloc secteur).

49

STRUCTURE dun PROGRAMME


Lcriture dun programme implique llaboration dune vritable
structure.
Cest pourquoi je ne saurais trop vous conseiller dagir avec mthode et
prcision.
Tout programme doit comporter un titre : une sorte de dfinition
succincte de ce que fait le programme.
Ltape suivante consiste mettre ce programme sur papier
(listing).
Nous y ajouterons des commentaires, ligne par ligne, pour chaque opration
effectue.
Ceux-ci seront clairs et abondants. Ils vous aideront plus tard
comprendre les dtails du programme.
Ils doivent tre tels que si vous repreniez votre feuille plusieurs mois aprs,
vous devriez facilement savoir vous relire et comprendre.
Mieux encore : si vous travaillez en quipe, nimporte qui de votre quipe
devrait tre en mesure de comprendre de quoi il sagit.
Prenez lhabitude de signer et dater vos programmes.
Dans la mesure du possible, accompagnez-les dun organigramme.

50

CANEVAS dun programme


Tout programme se construit selon un modle, une sorte de
squelette (template, en anglais).
Voici le squelette dun programme pour PIC 16F84 :
Processor 16F84
Dclarations obligatoires

Equivalences
Initialisation de la RAM
et rservation dun
certain nombre dadresses
mmoire
Dbut du programme
aprs Reset

Radix .....
Include <<P16F84>>
..... EQU .....

ORG 0C
RES ...

ORG 00

Configuration des lignes


de port
Instructions
Sous programmes

Fin du programme

END

51

PROGRAMMATION
en langage ASSEMBLEUR
La programmation en langage ASSEMBLEUR se fait en utilisant
les 37 instructions formant son dictionnaire.
En langage ASSEMBLEUR le PIC 16F84 ne comprend que ces 37
mots (en fait : 35 instructions communes tous les modles de PIC, plus
deux instructions spcifiques au 16F84 : OPTION et TRIS).
Ces 37 mots forment ce que lon appelle le set dinstructions du
16F84.
Il convient de toutes les connatre.
Ecrire un programme en langage ASSEMBLEUR revient donc
dtailler au PIC ce quil doit faire, en le disant exclusivement au moyen de
ces 37 mots de son vocabulaire : les seuls mots quil est capable de
comprendre.
Examinons-les une par une.

52

Les INSTRUCTIONS du 16F84


Le microcontrleur 16F84 possde un set de seulement 37 instructions
codes (en reprsentation binaire) sur 14 bits, selon le modle :
XX XXXX XXXX XXXX
bit de poids fort

bit de poids faible

Codes en hexadcimal, elles prennent la forme :


XXXX
A remarquer qutant donn que les deux bits de poids fort (bits 12
et 13) ne peuvent prendre que seulement quatre valeurs binaires (00 - 01 10 et 11), il en rsulte que la premire valeur de toute instruction code en
hexadcimal ne peut dpasser 3.
Autrement dit : eu gard la premire valeur de chaque instruction code
en hexadcimal, les seuls formats possibles sont :
0XXX...
1XXX...
2XXX...
3XXX...
avec une tendue comprise entre 0000 et 3FFF.
La plupart des instructions oprent en utilisant le registre de travail
W (Working register) comparable laccumulateur des anciens
microprocesseurs, et soit un registre soit une valeur immdiate code sur 8
bits appele literal.
Le rsultat des oprations peut tre envoy soit dans le registre W
(accumulateur) soit dans le registre sollicit (soit dans les deux, avec
certaines instructions).
Un petit nombre dinstructions oprent en utilisant uniquement un registre
(cest le cas des instructions BCF, BSF, BTFSC, BTFSS, CLRW, CLRWT
et SLEEP).
Les 37 instructions du 16F84 peuvent tre classes comme on
veut.

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

a) Classement par lettre alphabtique


ADDLW
ADDWF
ANDLW
ANDWF

ADD Literal to W
ADD W to File
AND Literal and W
AND W and File

BCF
BSF
BTFSC
BTFSS

Bit Clear File


Bit Set File
Bit Test File, Skip if Clear
Bit Test File, Skip if Set

CALL
CLRF
CLRW
CLRWDT
COMF

CALL subroutine
CLeaR File
CLeaR W
CLeaR Wach Dog Timer
COMplement File

DECF
DECFSZ

DECrement File
DECrement File, Skip if Zero

GOTO
INCF
INCFSZ
IORLW
IORWF

INCrement File
INCrement File, Skip if Zero
Inclusive OR Literal with W
Inclusive OR W with File

MOVF
MOVLW
MOVWF

MOVe File
MOVe Literal to W
MOVe W to File

NOP

No OPeration

OPTION

load OPTION register

RETFIE
RETLW
RETURN
RLF

RETurn From IntErrupt


RETurn from subroutine with Literal in W
RETURN from subroutine
Rotate Left File

55
RRF

Rotate Right File

SLEEP
SUBLW
SUBWF
SWAPF

SUBtract Literal with W


SUBtract W from File
SWAP File

TRIS

TRIState port

XORLW
XORWF

eXclusive OR Literal and W


eXclusive OR W and File

56

b) Classement par genre


- instructions arithmtiques :
ADDLW
ADDWF
SUBLW
SUBWF
- instructions dincrmentation :
DECF
DECFSZ
INCF
INCFSZ
- instructions deffacement :
CLRF
CLRW
CLRWDT
- instructions de mouvement :
MOVF
MOVLW
MOVWF
- instructions de rotation :
RLF
RRF
- instructions logiques :
ANDLW
ANDWF
COMF
IORLW
IORWF
XORLW
XORWF

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

c) Classement par type


- instructions travaillant seules :
CLRW
CLRWDT
NOP
OPTION
RETFIE
RETURN
SLEEP
- instructions travaillant avec une constante ou une tiquette (k) :
ADDLW k
ANDLW k
CALL k
GOTO k
IORLW k
MOVLW k
RETLW k
SUBLW k
XORLW k
- instructions travaillant avec un registre (f) :
CLRF f
MOVWF f
TRIS f
- instructions travaillant sur un bit (b) doctet (f) :
BCF f,b
BSF f,b
BTFSC f,b
BTFSS f,b
Il est vident que b ne peut prendre quune
valeur comprise entre 0 et 7, dsignant la position du bit dans loctet :
7

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

d) Classement par ordre croissant


dencodage

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

1
1xxx BCF
1xxx BSF
1xxx BTFSC
1xxx BTFSS

2
2xxx CALL
2xxx GOTO

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

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

00 0111
0

dfff

(W) 0
ou
(registre) 1

ffff

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

63
2)

MOVF
ADDWF,1

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

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

- Exemple de programmation :
ANDLW

A7

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

00 0101

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)

ANDWF,0

Adresse

2)

ANDWF,1

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

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.

10

11

100

101

110

111

- Position du bit dans loctet :

- 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

ou

BCF

27,0

(pour mettre zro le bit 0)

BCF

27,1

(pour mettre zro le bit 1)

ou

BCF

27,2

etc...

(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

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.

10

11

100

101

110

111

- Position du bit dans loctet :

- 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

BSF

1C,0

(pour mettre 1 le bit 0)

ou

BSF

1C,1

(pour mettre 1 le bit 1)

ou

BSF

1C,2

(pour mettre 1 le bit 2)

etc...

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

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.

10

11

100

101

110

111

- Position du bit dans loctet :

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

(pour tester le bit 0)

ou

BTFSC 1A,1

(pour tester le bit 1)

ou

BTFSC 1A,2

(pour tester le bit 2)

etc...

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

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.

10

11

100

101

110

111

- Position du bit dans loctet :

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

(pour tester le bit 0)

ou

BTFSS 1C,1

(pour tester le bit 1)

ou

BTFSS 1C,2

(pour tester le bit 2)

etc...

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

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

- Exemple de programmation :
CALL Tempo

(saute ladresse correspondant Tempo).

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

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

(pour dsactiver les interruptions)

2) CLRF PORTB

(pour mettre zro tous les bits du port B)

3) CLRF 1E

(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

00 0001 xxxx xxxx


0
1
0
0
- Exemple de programmation :
CLRW

(efface le registre W).

En supposant que W contienne F8 avant linstruction, aprs linstruction


il contient 00.

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

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

00 1001

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

00 0011

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)

2) DECF

COMPTEUR,1

(mme chose, mais cette fois


le rsultat est rang ladresse
COMPTEUR).

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

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

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

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)

2) INCF

NOMBRE,1 (mme chose, mais cette fois


le rsultat est rang ladresse
NOMBRE. La nouvelle valeur
prend la place de lancienne).

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

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

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

91
- Exemple de programmation :
IORLW

B5

(10110101)

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

00 0100

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)

IORWF

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).

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

00 1000

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)

MOVF

PORTB,0

(porte dans W ltat


es lignes du port B).

1)

MOVF

18,1

(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

11 00xx kkkk kkkk


3
0
Valeur du literal

- Exemple de programmation :
MOVLW

F5

(met F5 , cest -dire


11110101, dans W).

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

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

00 0000
0
0

0xx0
0

0000
0

- Exemple de programme:
NOP

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

00 0000
0
0

0000
0

1001
9

- Exemple de programme :
RETFIE

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

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

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

104
- Encodage de linstruction:
13

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

106
- Encodage de linstruction:
13

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

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

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

00 0010

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

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.

112
- Encodage de linstruction :
13

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)

- Exemple de programmation :
MOVLW
MOVWF

00000100 (en binaire)


TRISB

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

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

00 0110
0

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.
6

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

ENCODAGE des INSTRUCTIONS

Signification des lettres utilises dans lencodage des


instructions :
b = position du bit dans loctet sur lequel on opre ( il peut aller
de 0 7)
d = registre de destination, avec deux variantes :
d = 0 : le rsultat est plac dans W
d = 1 : le rsultat est plac dans le registre
f = gnralement adresse de la mmoire RAM o se trouve loctet
concern ( dans lespace mmoire compris entre 00 et 4F).
Dans linstruction TRIS : octet de configuration de port
k = valeur du literal (ou adresse, dans les instructions CALL et
GOTO)
w = registre W (accumulateur)

x = valeur indiffrente : peut tre soit 0 soit 1.


Lassembleur lui donne automatiquement la valeur 0
(forme recommande par Microchip)

118

Exemples de programmes
crits en langage ASSEMBLEUR
Programme 1

a) Organigramme

119

b) Fichier extension .asm


;Titre du programme : PROG1
;Ce programme allume la LED branche sur la
;sortie RB0 (bit 0 du Port B) et la laisse
;indfiniment allume.
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
DIRECTIVES
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
PROCESSOR
16F84
RADIX
HEX
INCLUDE
P16F84.INC
__CONFIG
3FF1
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
VECTEUR de RESET
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ORG
00
;Vecteur de Reset.
GOTO
START ;Renvoi ladresse EEPROM 05 (hexa)
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
INITIALISATIONS
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
START ORG
05
;Saut introduit pour passer au-dessus
;des 5 premires adresses de la mmoire
;EEPROM (00 01 02 03 et 04).
CLRF

PORTB

;Initialise le Port B.

BSF

STATUS,RP0

;Met 1 (set) le bit 5 (RP0) du


;registre dtat (STATUS).
;Autrement dit : slectionne la
;page 1 du Register File (adresses
;de 80 8B) dans laquelle se trouve
;le Registre STATUS ( ladresse 83).

MOVLW b00000000

;Met la valeur binaire 00000000 dans


;le registre W, matrialisant ainsi notre
;intention dutiliser les 8 lignes du
;Port B comme SORTIES.

MOVWF TRISB

;Port B configur, mais encore en


;haute impdance (Trhee-state).

BCF

;Retour la page 0 du Register File.

STATUS,RP0

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

LOOP

END

c) Fichier extension .hex


020000000528D1
06000A00860183160030A0
080010008600831206140A2881
02400E00F13F80
00000001FF

;Le programme se reboucle.


;La LED reste indfiniment allume.
;Fin du programme.

121

Programme 2
a) Organigramme

122

b) Fichier extension .asm


;Titre du programme : PROG2
;Ce programme fait clignoter indfiniment la LED branche sur la
;sortie RB0 (bit 0 du Port B).
;Le programme comporte une temporisation (DELAI) pour rendre
;perceptibles les allumages et les extinctions de la LED, sinon les
;transitions auraient lieu trs grande vitesse et notre il ne verrait
;pas les clignotements.
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
DIRECTIVES
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
PROCESSOR
16F84
RADIX
HEX
INCLUDE
P16F84.INC
__CONFIG
3FF1
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
DECLARATIONS DES VARIABLES
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
COMPT1 EQU
0C
;On met la variable COMPT1
;ladresse RAM 0C.
COMPT2 EQU
0D
;On met la variable COMPT2
;ladresse RAM 0D.
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
VECTEUR DE RESET
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ORG
00
;Vecteur de Reset.
GOTO
START ;Renvoi ladresse EEPROM 05 (hexa)
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
INITIALISATIONS
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
START ORG
05
;Saut introduit intentionnellement pour faire
;dmarrer le programme ladresse EEPROM 05.
CLRF

PORTB

;Efface les 8 bits du Port B.

BSF

STATUS,RP0

MOVLW b00000000

;Met 1 (set) le bit 5 (RP0) du


;registre dtat (STATUS).
;Autrement dit : slectionne la
;page 1 du Register File (adresses
;de 80 8B) dans laquelle se trouve
;le Registre STATUS ( ladresse 83).
;Met la valeur binaire 00000000 dans
;le registre W, matrialisant ainsi notre
;intention dutiliser les 8 lignes du

123
;Port B comme SORTIES.
;La notation b00000000 indique que
;la valeur 00000000 est interprter
;en tant que chiffre binaire.
MOVWF TRISB

;Port B configur, mais encore en


;haute impdance (Trhee-state).

BCF

;Retour la page 0 du Register File.

STATUS,RP0

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
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

DELAI

;Appelle le sous-programme de
;retard (DELAI).

BSF

PORTB,0

;LED allume, car linstruction


; BSF met 1 (set).
;Ici elle met 1 le bit 0 du
;Port B (PORTB,0).

CALL

DELAI

GOTO

MAIN

;On appelle nouveau le


;sous-programme de retard.
;Retour au programme principal.

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
SOUS-PROGRAMME de TEMPORISATION
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DELAI DECFSZ COMPT1,1
;Dcrmente COMPT1et - sil nest pas
GOTO
DELAI
; zro - va DELAI
MOVLW .255
MOVWF COMPT1

;Charge la variable COMPT1 (adresse


;RAM 0C) avec 255 (en dcimal).

DECFSZ COMPT2,1
GOTO
DELAI

;Dcrmente COMPT2, et sil nest pas


; zro, va DELAI

MOVLW .255
MOVWF COMPT1

;Recharge COMPT1 avec 255

MOVLW .255
MOVWF COMPT2

;Recharge COMPT2 avec 255

RETURN

;Fin du sous-programme DELAI

END

;Fin du programme.

124

c) Fichier extension .hex


020000000528D1
06000A00860183160030A0
100010008600831206100F2006140F200A288C0B6E
100020000F28FF308C008D0B0F28FF308C00FF3025
040030008D00080037
02400E00F13F80
00000001FF

125

PROGRAMME 3
a) Organigramme

126

b) Fichier extension .asm


;Titre du programme : PROG3
;Ce programme fait clignoter un certain nombre de fois la LED
;branche sur la sortie RB0 (bit 0 du PORT B), puis fait clignoter
;un certain autre nombre de fois la LED branche sur la sortie
;RB1 (bit 1 du Port B), et recommence le cycle indfiniment.
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
DIRECTIVES
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
PROCESSOR
16F84
RADIX
HEX
INCLUDE
P16F84.INC
__CONFIG
3FF1
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
DECLARATIONS DES VARIABLES
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
COMPT1 EQU
0C
;On met la variable COMPT1
; ladresse RAM 0C.
COMPT2 EQU
0D
; On met la variable COMPT2
; ladresse RAM 0D.
nFOIS
EQU
0E
; On met la variable nFOIS
; ladresse RAM 0E.
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
VECTEUR DE RESET
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ORG
00
;Vecteur de Reset.
GOTO
START ;Renvoi ladresse EEPROM 05 (hexa)
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
INITIALISATIONS
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
START ORG
05
;Saut introduit intentionnellement pour faire
;dmarrer le programme ladresse EEPROM 05.
CLRF

PORTB

;Efface les 8 bits du Port B.

BSF

STATUS,RP0

MOVLW b00000000

;Met 1 (set) le bit 5 (RP0) du


;registre dtat (STATUS).
;Autrement dit : slectionne la
;page 1 du Register File (adresses
;de 80 8B) dans laquelle se trouve
;le Registre STATUS ( ladresse 83).
;Met la valeur binaire 00000000 dans
;le registre W, matrialisant ainsi notre
;intention dutiliser les 8 lignes du

127
;Port B comme SORTIES.
;La notation b00000000 indique que
;la valeur 00000000 est interprter
;en tant que chiffre binaire.
MOVWF TRISB

;Port B configur, mais encore en


;haute impdance (Trhee-state).

BCF

STATUS,RP0

;Retour la page 0 du Register File.

GOTO

MAIN1

;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

;Charge COMPT1 ( petite boucle )


;avec la valeur dcimale 255.

DELAI1 DECFSZ COMPT1,1


GOTO
DELAI1

;Dcrmente COMPT1et - sil nest pas


; zro - va DELAI1

DECFSZ COMPT2,1
GOTO
DELAI2

;Dcrmente COMPT2, et sil nest pas


; zro, va DELAI2.

RETURN

;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).

CALL

TEMPO

;Appelle le sous-programme de
;retard (TEMPO).

BSF

PORTB,0

;LED allume, car linstruction


; BSF met 1 (set).
;Ici elle met 1 le bit 0 du
;Port B (PORTB,0).

CALL

TEMPO

;On appelle nouveau le


;sous-programme de retard.

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 .

MAIN2

MOVLW .5
MOVWF nFOIS

;On dfinit le nombre de cycles de la


;deuxime phase (ici :5 clignotements)

LED2

BCF

PORTB,1

;LED teinte car linstruction


; BCF met 0 (clear).
;Ici, elle met 0 le bit 1 du
;Port B (PORTB,1).

CALL

TEMPO

;Appelle le sous-programme de
;retard (TEMPO).

BSF

PORTB,1

;LED allume, car linstruction


; BSF met 1 (set).
;Ici elle met 1 le bit 1 du
;Port B (PORTB,1).

CALL

TEMPO

;On appelle nouveau le


;sous-programme de retard.

DECFSZ nFOIS,1
GOTO
LED2
GOTO
MAIN1

;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 .

END

;Fin du programme.

129

c) Fichier extension .hex


020000000528D1
06000A00860183160030A0
10001000860083121428FF308D00FF308C008C0B7B
100020000F288D0B0D28080001308E0006140B20C0
1000300006100B208E0B16281D2802308E00861409
0C0040000B2086100B208E0B1F281428AC
00000001FF

130

PROGRAMME 4

a) Organigramme

131

b) Fichier extension .asm


;Titre du programme : PROG4
;Ce programme fait clignoter une LED
;branche sur la sortie RB0 (bit 0 du PORT B), si lentre RA4
;(bit 4 du Port A) est active.
;En dsactivant RA4, la LED steint.
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
DIRECTIVES
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
PROCESSOR
16F84
RADIX
HEX
INCLUDE
P16F84.INC
__CONFIG
3FF1
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
DECLARATIONS
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
STATUS EQU
03
;
Aurions pu ne pas les
RP0
EQU
05
;
dclarer, car ces
PORTA EQU
05
;
quivalences sont
PORTB EQU
06
;
dfinies dans le fichier
TRISA
EQU
85
;
INCLUDE P16F84.INC .
TRISB
EQU
86
;
Cest redondant. Mais ce nest
START EQU
05
;
pas interdit.
COMPT1 EQU
0C
;On met la variable COMPT1
; ladresse RAM 0C.
COMPT2 EQU
0D
.On met la variable COMPT2
; ladresse RAM 0D.
nFOIS
EQU
0E
;On met la variable nFOIS
; ladresse RAM 0E.
ORG

00

;Vecteur de Reset.

GOTO

START

;Renvoi ladresse EEPROM 05 (hexa)

ORG

05

;Voulons intentionnellement faire


;dmarrer le programme ladresse EEPROM 05.

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
INITIALISATIONS
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
CLRF

PORTB

;Efface les 8 bits du Port B.

BSF

STATUS,RP0

;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.

BCF

STATUS,RP0

;Retour la page 0 du Register File.

GOTO

MAIN

;Renvoi au programme principal.

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
SOUS-PROGRAMMES
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
TEMPO

;Dbut du sous-programme TEMPO


MOVLW .255
MOVWF COMPT2

;Charge COMPT2 ( grande boucle )


;avec la valeur dcimale 255

DELAI2 MOVLW .255


MOVWF COMPT1

;Charge COMPT1 (petite boucle )


;avec la valeur dcimale 255

DELAI1 DECFSZ COMPT1,1


GOTO
DELAI1

;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.

DECFSZ COMPT2,1
GOTO

DELAI2

RETURN

;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 .

LED

;Dbut du sous-programme LED


BSF

PORTB,0

;Allume la LED.

133
CALL

TEMPO

;Appel du sous-programme de
;temporisation.

BCF

PORTB,0

;Eteint la LED.

CALL

TEMPO

;Nouvel appel du sous;programme de temporisation.

RETURN

;Fin du sous-programme LED .

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
PROGRAMME PRINCIPAL
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
MAIN
BTFSS PORTA,4
;Est-ce que lentre RA4 est active ?
GOTO

MAIN

;NON. Alors on continue tester.

CALL

LED

;OUI. Dans ce cas on appelle le


;sous-programme LED.

GOTO

MAIN

;Retour au programme principal.

END

c) Fichier extension .hex


020000000528D1
06000A00860183160030A0
100010008600FF30850083121B28FF308D00FF30E3
100020008C008C0B11288D0B0F28080006140D2056
0E00300006100D200800051E1B2816201B2898
00000001FF

134

PROGRAMME 5

Fichier extension .asm


;Titre du programme : PROG5
;Ce programme fait clignoter une LED
;en utilisant les interruptions gnres
;par le timer interne (TMR0).
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
DIRECTIVES
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
PROCESSOR
16F84
INCLUDE
P16F84.INC
__CONFIG
3FF1
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
DECLARATIONS
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SAVE_W
SAVE_STAT

EQU
EQU

0C
0D

;Dclaration de
;deux variables.

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
VECTEURS
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ORG
00
;Vecteur de Reset.
GOTO
START
ORG
GOTO

04
INT_VECT

;Vecteur dinterruption.

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
START
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
START ORG
05
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
INITIALISATIONS
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
BSF

STATUS,RP0

MOVLW b00000000
MOVWF TRISB

;On passe en Page 1.


;Port B en sortie.

135
MOVLW b00000111
MOVWF OPTION_REG

;On configure OPTION.


.Le pr diviseur divise par 255.

BCF

STATUS,RP0

;On revient en Page 0.

CLRF

TMR0

;Timer zro.

CLRF

PORTB

;Toutes LED teintes.

MOVLW b10100000
MOVWF INTCON

;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

;Phase de PUSH (store).

MOVF
STATUS,W
MOVWF SAVE_STAT

;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).

BCF

INTCON,T0IF

BTFSC
GOTO
BSF
GOTO

PORTB,0
LED_OFF
PORTB,0
FIN

LED_OFF

BCF

PORTB,0

FIN

MOVF
SAVE_STAT,W
MOVWF STATUS
MOVF
SAVE_W,W
RETFIE

;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

Fichier extension .asm


;Titre du programme : PROG6
;Ce programme fait clignoter une LED
;en utilisant les interruptions gnres
;par le timer interne (TMR0), et - en plus - allume et laisse
;toujours allume une deuxime LED branche sur RB1.
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
DIRECTIVES
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
PROCESSOR
16F84
INCLUDE
P16F84.INC
__CONFIG
3FF1
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
DECLARATIONS
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SAVE_W
SAVE_STAT
CHOIX
COMPT

EQU
EQU
EQU
EQU

0C
0D
0E
0F

;Variables

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
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

;Port B en sortie.

MOVLW b00000111
MOVWF OPTION_REG

;On configure OPTION.


.Le pr diviseur divise par 255.

BCF

STATUS,RP0

;On revient en Page 0.

CLRF

TMR0

;Timer zro.

CLRF

PORTB

;Toutes LED teintes.

MOVLW b10100000
MOVWF INTCON

;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

;Phase de PUSH (store).


;On sauve W
;et STATUS dans la RAM.

BCF

INTCON,T0IF

;On met zro le flag


;T0IF qui passe 1 chaque
;dbordement du TMR0
;(bit 2).

BTFSC
GOTO
BSF
GOTO

PORTB,0
SUITE
PORTB,0
FIN

SUITE

BCF

PORTB,0

FIN

MOVF
SAVE_STAT,W
MOVWF STATUS
MOVF
SAVE_W,W
RETFIE

;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

Fichier extension .asm


;Titre du programme : PROG7
;Ce programme active un chenillard sur 4 LED
;utilisant les bits 0, 1, 2, et 3 du Port B.
;Chaque LED sallume pendant un temps calibr de juste 1 minute
;(60 secondes) fourni par le TMR0 en association avec un compteur.
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
DIRECTIVES
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
PROCESSOR
16F84
INCLUDE
P16F84.INC
__CONFIG
3FF1
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
DECLARATIONS des VARIABLES
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SHIFT
EQU
0C
COMPT1
EQU
0D
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
VECTEURS
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ORG
00
;Vecteur de Reset.
GOTO
START
;Renvoi ladresse EEPROM 05
ORG
GOTO

04
INT_VECT

;Vecteur dinterruption.
;Renvoi au programme dinterruption.

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
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

MOVLW b00000000
MOVWF TRISB
MOVLW b00000100

;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

;configurer pour diviser par 32.

BCF

;On revient en Page 0.

STATUS,RP0

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

BTFSC

;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

rotation

SWAPF

CALL

;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

142

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
SOUS-PROGRAMME de TEMPORISATION
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DELAI

MOVLW .6
MOVWF TMR0

;On initialise le TMR0 avec la valeur


;6 (dcimal), afin quil dborde
;aprs 250 impulsions.

TEST

MOVF
BTFSS

TMR0,0
STATUS,Z

GOTO

TEST

;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.

MOVLW
MOVWF
DECFSZ
GOTO

.6
TMR0
COMPT1,1
TEST

MOVLW .6
MOVWF TMR0

;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.

MOVLW .125
MOVWF COMPT1

;On recharge
;la variable COMPT1.

RETURN

;Fin du sous-programme DELAI.

END

;Fin du programme.

143

MPLAB

Quest-ce que MPLAB


MPLAB est un outil de dveloppement spcifique aux
microcontrleurs PIC, conu et fourni gratuitement par Microchip.
Il permet dcrire, mettre au point et optimiser les programmes,
sous Windows.
En effet, en plus dun diteur et dun assembleur, il inclut un ensemble
doutils permettant non seulement de fabriquer le code objet dune
application, mais aussi de simuler le programme, cest dire le voir
drouler lcran.
Il supporte plusieurs outils externes, parmi lesquels deux modles
de programmateurs (PICSTART PLUS et PROMATE 2) et deux
mulateurs (PICMASTER et PICMASTER-CE).
MPLAB est facile apprendre et utiliser.

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

Comment obtenir MPLAB


MPLAB est tlchargeable partir du site Internet de Microchip
(www.microchip.com).
Si vous aviez besoin de le copier sur disquettes, prvoyez-en un bon
nombre (il vous en faudra au moins huit).
Vous seriez en possession de fichiers compresss, que vous devriez
dcompresser au moyen dun logiciel adapt (WinZip, par exemple).
Remarquez que MPLAB est un produit en constante volution, et
quen fonction de la version qui vous serait fournie, vous pourriez trouver
un certain nombre de fichiers modifis ou diffrents dune version lautre.
La version que Microchip diffuse au moment o jcris et dont je
me sers dans mes exemples est la version 5.20

146

Caractristiques requises par le PC pour


linstallation de MPLAB

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

Comment installer MPLAB

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

Acceptez la configuration par dfaut (No) en cliquant sur Next.

152
Dans la fentre suivante (Add to Start Menu ?) acceptez
suggestion Yes .

la

153
Faites la mme chose dans la fentre suivante :

Acceptez la configuration suggre, en cliquant sur Next.

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

Comment dsinstaller MPLAB


Le fichier INSTALL.LOG enregistre les noms de tous les fichiers
copis au cours de la procdure dinstallation.
Le jour que lon souhaite dsinstaller MPLAB, la procdure de
dsinstallation utilise INSTALL.LOG pour savoir quels sont les fichiers
supprimer.
Pour la dsinstallation, il suffit de lancer UNWISE.EXE se
trouvant dans le rpertoire de MPLAB.

158

Comment dmarrer avec MPLAB


Tout dabord une constatation : lcran de dmarrage de MPLAB
ressemble la plupart des crans Windows, en ce sens quil comporte - en
haut - la barre des menus et la barre doutils, et - en bas - une barre dtat
informant de la faon dont le systme est configur.
En cliquant sur la toute premire icne de la barre doutils (icne
en couleur reprsentant trois fiches en perspective : bleu, rouge, jaune):

vous pouvez dj constater la prsence dautres barres doutils (il y


en a quatre) :

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

Premire tape : cration du projet


Crer un projet
Pour pouvoir aboutir un programme, MPLAB a besoin de
naviguer entre plusieurs fichiers.
Pour cette raison, avant de vous autoriser crire un programme,
MPLAB vous oblige crer un projet.
Crer un projet revient dfinir entre autres:
1) le nom que va porter le programme ;
2) les fichiers que MPLAB devra utiliser au cours du
dveloppement.
Un projet comporte un nom, avec extension .pjt
Convenons dappeler notre projet phase1
Le nom du projet sera donc : phase1.pjt

161

Comment crer un projet


Lancez MPLAB, puis allez dans :
Project

New Project

Une fentre souvre (New Project) :

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).

Puis cliquez sur OK.

Cette manuvre ouvre une autre fentre (Edit Project):

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

Deuxime tape :
criture du programme source
Pour taper votre programme, allez dans :
File

New

Cest partir de maintenant que lcriture proprement parler des


instructions du programme peut dmarrer.

166
La fentre daccueil est Untitled1 :

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...

Une fentre souvre (Save File 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

Troisime tape:
conversion du programme source
en programme objet
Le but de cette opration est de convertir le fichier source (celui
dont lextension est .asm ) en fichier objet, cest dire en un fichier ayant
le mme nom que celui du fichier source, mais avec extension .hex
Autrement dit : convertir phase1.asm en phase1.hex
Pour cela, allez dans :
Project

Edit Project

170

Une fentre souvre :

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.

172
La fentre Edit Project souvre une nouvelle fois :

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.

Puis allez dans :


Project

Build All

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

Quatrime tape:
correction des erreurs
Si votre programme contient des erreurs, la compilation naboutit
pas.
Avec le message Build failed (construction rate), vous verriez
apparatre des messages mentionnant la ou les erreurs.
Dans ce cas, il faut imprativement revenir au fichier extension
.asm et corriger les erreurs.
Puis, relancer la compilation depuis le dbut par :
Project

Make Project

Vous revenez ainsi la fentre Build Results.


Cela autant de fois que ncessaire, jusqu lire le message :
Build completed successfully .

177

Cinquime tape:
simulation du programme
Disons-le tout de suite : cette tape est facultative, car elle
concerne la simulation.
La simulation est une sorte de vrification virtuelle permettant de
voir lcran ce qui se passe lorsque les instructions sont excutes par le
microcontrleur.
On peut la faire de diffrentes faons :
- en mode pas pas
- en mode step over
- en mode excution automatique
- avec ouverture de fentres.

178

Mode pas pas


Pour simuler un programme en mode pas pas, appelez lcran
le fichier extension .asm
Puis allez dans :
Debug

Run

Reset
(ou tapez le raccourci clavier F6) :

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

Vous pouvez aussi vous


servir de la souris, en cliquant
sur licne :

(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 :

(Feu rouge : Halt : F5)

181

Mode Step Over


Lorsque dans le programme il y a des boucles, lexcution peut
prendre beaucoup de temps.
Dans ce cas, il existe la possibilit de demander au simulateur
dignorer les boucles.
Cest le mode Step Over.
Pour ce type dexcution il faut choisir le chemin :
Debug

Run

Step Over

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

Mode excution automatique


Au lieu de faire du pas pas, on peut faire excuter le programme
en entier, automatiquement, sans avoir besoin ni de cliquer sur une
quelconque icne, ni de taper sur une quelconque touche de raccourci.
Il suffit daller dans :
DebugRunAnimate :

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

PROGRAMMATION
en langage BASIC
Le BASIC que nous allons utiliser est le PicBASIC labor par la
Socit MICRO ENGINEERING Labs (reprsente en France par
SELECTRONIC Lille).
Le COMPILATEUR PicBASIC tient sur une disquette.
Il est propos en deux versions : la version standard et la version
professionnelle.
Tous les exemples que je fournis ont t raliss avec la version standard,
qui permet de raliser nimporte quel programme, sans limitations.
Ce que lon trouve en plus dans la version Pro, cest un plus grand confort
de travail : possibilit douvrir plusieurs fentres en mme temps,
numrotation des lignes du fichier source, etc..
La disquette est accompagne dun manuel dutilisation en anglais et dune
traduction en franais.
Ce logiciel, vendu par SELECTRONIC Lille, au moment de la rdaction
de ces pages, cote 129,50 (prix au 16/09/2002).

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

Les variables de type B et W


Les variables correspondent des emplacements mmoire utiliss
pour stocker temporairement des donnes.
Le MEL PicBASIC propose demble des variables prtes
lemploi.
Selon que les donnes stocker soient de petites donnes et
quelles tiennent en un seul octet (byte = 8 bits), ou quelles soient de
grandes donnes et que pour les accueillir il faille un mot (word = 16 bits),
MEL PicBASIC propose deux types de variables :
a) les variables de type B (byte) utilises pour stocker des
variables 8 bits, et
b) les variables de type W (word) utilises pour stocker des
variables 16 bits.
Pour le microcontrleur 16F84 PicBASIC a prdfini 52 variables
de type B (de B0 B51), et 26 variables de type W (de W0 W25).
Les variables de type W sont constitues de la juxtaposition de
deux variables de type B. Ainsi la variable W0 est constitue de la
juxtaposition de la variable B0 et de la variable B1. La variable W1 est
constitue de la juxtaposition de la variable B2 et de variable B3, et ainsi de
suite..
Le compilateur ne peut utiliser que les registres du microcontrleur
pour stocker les variables du programme. Ce qui veut dire que le nombre
des variables mises disposition dpend du modle de PIC utilis.

191

Les variables de bit


Il faut savoir quil existe aussi des variables de bit prdfinies.
Ce sont les variables B0 et B1 qui les accueillent.
Dans ce cas, les variables de bit quelles logent sappellent :
Bit0, Bit1, Bit2 ........ et ainsi de suite jusqu Bit15.

192

Dnomination des lignes de PORTS


MEL PicBASIC nappelle pas de la mme faon les bits du Port A
et les bits du Port B.
a) Les bits du Port A
Les bits du Port A sont appels : Pin0
Pin1
Pin2
Pin3
Pin5
b) Les bits du Port B
Les bits du Port B sont appels : 0
1
2
3
4
5
6
7
Attention donc !
- Pour vous rfrer lun des 5 bits du Port A vous direz :
Pin0, Pin1, Pin2, Pin3, Pin4.
- Pour vous rfrer lun des 8 bits du Port B vous direz :
0, 1, 2, 3, 4, 5, 6, 7.

193

Configuration des bits de chaque Port


Chaque bit de Port (Port A et Port B) peut tre configur en entre
ou en sortie :
- tout bit mis 0 est configur en entre
- tout bit mis 1 est configur en sortie.
Mais la faon dont MEL PicBASIC configure les bits nest pas la
mme pour le Port A et pour le Port B.

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)

(Tous bits du Port B configurs en


sortie).

- DIRS = % 00000000
(ou DIRS = 0)

(Tous bits du Port B configurs en


entre).

- DIRS = % 00001111
(ou DIRS = 15)

(Bits 0 3 configurs en sortie, et


bits 4 7 configurs en entre)

- etc.. (tous les cas de figure sont permis).

195

Lecture des Ports


Pour lire ltat dun Port on utilise linstruction PEEK.
Comme ceci :
PEEK PORTA,B0
Ce qui signifie : lire le contenu du Port A et le stocker dans la
variable B0. En fait cette variable peut tre lune quelconque
des variables prdfinies pour le 16F84 (B0... B51).
Ensuite on peut affiner par :
IF B0, Bit0 = 0 Then......
ou
IF B0, Bit0 = 1 Then.....
etc..

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

Le set dINSTRUCTIONS du
MEL PicBASIC
Le MEL PicBASIC est constitu de 40 instructions.
Ne confondez pas - je vous prie - les 40 instructions de ce langage
avec les 37 instructions du langage ASSEMBLEUR : cela na strictement
rien voir !
Examinons ces 40 instructions une par une, en les prsentant par
ordre alphabtique pour que vous les retrouviez plus facilement.
Je signale quelles peuvent tre crites comme on veut :
- en majuscules
- en minuscules
- et mme en mlangeant majuscules et minuscules.
Par exemple, linstruction GOTO peut scrire :
- GOTO
- Goto
- goto
- GoTO
- goTO
- gOto
- etc...

200

Classement par ordre alphabtique


BRANCH
BUTTON
CALL
DEBUG
DIRS =
EEPROM
END
FOR/NEXT
GOSUB
GOTO
HIGH
I2Cin
I2Cout
IF...THEN
INPUT
LET
LOOKdown
LOOKup
LOW
NAP
OUTPUT
PAUSE
PEEK
PINS =
POKE
POT
PULSin
PULSout
PWM
RANDOM
READ
RETURN
REVERSE
SERin
SERout
SLEEP
SOUND
TOGLE
TRISA
WRITE

201

Classement par genre


BRANCH
CALL
GOSUB
GOTO
RETURN

BUTTON
DIRS =
HIGH
INPUT
LOW
OUTPUT
PINS =
POT
PULSin
PULSout
PWM
REVERSE
SERin
SERout
SOUND
TOGLE

I2Cin
I2Cout
TRISA

DEBUG
EEPROM
END
FOR...NEXT
IF...THEN
LET
LOOKDOWN
LOOKUP
NAP
PAUSE
PEEK
POKE
RANDOM
READ
SLEEP
WRITE

202

BRANCH
Cette instruction est une variante de GOTO.
Comme GOTO, elle permet de sauter des sous-programmes.
Mais ici en fonction de la valeur prise par la variable 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.

EXEMPLE :
FOR B1 = 1 TO 10
HIGH 0
PAUSE 200
LOW 0
PAUSE 200
NEXT B1

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 37
INSTRUCTION 38
GOSUB
TEMPO
INSTRUCTION 40
INSTRUCTION 41
FIN

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

Schma-type de connexion dun PIC 16F84


avec une EEPROM 24LC01B

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.

2)

PINS = B1
Met chacun des bits du Port B ltat haut ou ltat bas,
conformment loctet se trouvant dans la variable B1.

3)

PINS = 255
Met ltat haut tous les bits du Port B.

4)

DIRS = 255

(Port B en sortie)

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.

2)

SYMBOL
SYMBOL

PORTA = 5
TRISA = $85

(Adresse de PORTA)
(Adresse de TRISA)

POKE TRISA, 0
PEEK PORTA, B0

(Port A en sortie)
(Copie Port A
dans 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 :

1 = la partie haute
0 = la partie basse.

( 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

Temps
ON

Temps
OFF

Temps
de cycle

0,10
0,20
0,30
0,40
0,50
0,60
0,70
0,80
0,90
1,00

20
20
30
40
60
90
140
160
180
200

180
80
70
60
60
60
60
40
20
0

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.

Rappel : Pour crire dans cette mmoire on utilise


linstruction EEPROM.

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

Symbole
T2400
T1200
T9600
T300
N2400
N1200
N9600
N300

Valeur
0
1
2
3
4
5
6
7

Baud Rate
2400
1200
9600
300
2400
1200
9600
300

Mode
TTL vrai

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

Mode
TTL vrai

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

Sur fiche DB9


RS232 Rx
Pin 2
RS233 Masse
Pin 5

Sur fiche BD25


Pin 3
Pin 7

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)

SOUND 7, (100, 50)


Gnre sur RB7 une note de hauteur 100, pendant 50 ms.

2)

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

Exemples de programmes
crits en langage PicBASIC
Voici 17 exemples de programmes crits en MEL PicBASIC
quils ne faut pas juger au nombre dinstructions, car ainsi que
je lai dj dit les programmes crits en PicBASIC sont souvent
courts, cela tant d la puissance de ses instructions.
Ce ne sont que des bases. Ils illustrent le mcanisme de la programmation
en MEL PicBASIC (je rappelle que MEL est lacronime de MICRO
ENGINERING LABS, la Socit qui a dvelopp ce BASIC pour PIC).
Je vous encourage vous procurer un Editer MEL PicBASIC
et faire comme moi.
Vous verrez que dvelopper avec ce logiciel devient un jeu denfants.
Bonne programmation.

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

PAUSE tant ici positionne 100, la LED clignote plutt rapidement.

262
Pour faire clignoter la LED moins rapidement, il suffit de modifier
la valeur de PAUSE :
LOOP : IF PIN 0 = 1 THEN LED
GOTO LOOP
LED : HIGH 5
PAUSE 1000
LOW 5
PAUSE 1000
GOTO LOOP
END
1000 ms = 1 seconde. Ici la LED 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 :

INC :
DEC :

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

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

qui renvoient des sons de diffrente hauteur (en crescendo).

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 :

ZERO :
UN :
DEUX :
TROIS :
QUATRE :

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 :

1_bip :
2_bips :
3_bips :
4_bips :
5_bips :

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

(Port A en entre)
(Mmorise le Port A dans B0)

- 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

BIBLE pour
DESASSEMBLER A LA MAIN
Version 1.00
DESSASSEMBLER est le contraire dASSEMBLER.
Cette BIBLE nest donc valable que pour des programmes assembls,
cest dire ayant t crits en langage ASSEMBLEUR, extension .hex.
Elle ne sapplique pas des programmes crits en BASIC ou dans un
quelconque autre langage.
Lorsque dans un programme en ASSEMBLEUR vous crivez, par
exemple :
GOTO START
MOVLW 00
MOVWF TRISB
.
.
.
lAssembleur code ces instructions et fournit les valeurs hexadcimales
suivantes :
2805
3000
0086
.
.
.
2805 veut dire GOTO ladresse 05
3000 veut dire MOVLW 00
0086 veut dire MOVWF TRISB....
Il est donc possible de procder linverse, cest dire : partir des codes
hexadcimaux et remonter aux instructions.
Ce travail est gnralement confi un logiciel appel
DESASSEMBLEUR. Mais, avec un peu de patience, vous pouvez
dsassembler un programme la main, sans besoin daucun logiciel, en
vous aidant de ma bible dsassembler la main, dont vous truvez ici
la premire version. Cest une nouveaut MONDIALE.

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

INDF
TMR0
PCL
STATUS

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

FSR
PORTA
PORTB
EEDATA
EEADR
PCLATH
INTCON
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

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

Environnement de Dveloppement Intgr


I. D. E. Integrated Development Environment (Environnement de
Dveloppement Intgr).
On appelle Environnement de Dveloppement Intgr lensemble
des fentres et palettes se trouvant immdiatement la disposition de
lutilisateur pour mener bien une application.
Cest un programme qui regroupe en une seule entit plusieurs modules,
reprsentant lensemble des outils dont on a besoin, ou dont on pourrait
avoir besoin au cours dun travail.
A titre dexemple, MPLAB, dans son I. D. E. comprend :
- un Editeur
- un Assembleur
- un Dbogueur
- un Simulateur et
- un Programmateur.

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.

Program Counter (EEPROM)


Le Program Counter est un compteur dont la tche est dadresser la
mmoire dans laquelle sont loges les instructions du programme.
Cest lorgane qui fournit au programme les adresses de la mmoire o se
trouvent les instructions excuter.
En rgle gnrale ces adresses sont successives, se suivent lune aprs
lautre sans discontinuer. Sauf lorsque dans un programme figurent les
instructions CALL et GOTO. Dans ces cas le programme nexcute pas

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

Watch Dog Timer


Le Watch Dog Timer (timer chien de garde) est un chrono cadenc par un
oscillateur RC se trouvant lintrieur du C et ne demandant aucun
composant externe, indpendant de lhorloge qui pilote le C .
Sa caractristique principale est que chaque fois quil arrive au bout du
comptage, il gnre une interruption.
Do la ncessit de rgulirement le mettre zro avant quil natteigne la
fin du comptage.
Utilis seul (sans pr-diviseur) il a une priode de 18 millisecondes. Sil est
prcd par le pr-diviseur, sa priode dpend du taux de division quon lui
a impos, et peut aller jusqu 2,3 secondes.

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

Page 45
Page 46
Page 47
Page 48
Page 49
Page 50

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

Vous aimerez peut-être aussi