Professional Documents
Culture Documents
Le pic16F84
; processeur utilis
; initialisation des noms de variables
__config _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC ; configuration des fusibles
org
goto
0x00
debut
org
0x05
bsf
movlw
movwf
STATUS,5
B00000000
TRISB
bcf
bsf
STATUS,5
PORTB,0
; retour au bank 0
; met le bit 0 du port B 1 (allume la LED)
debut
end
Champ Champ
Champ
tiquette code
oprande
opratoire
Champ
commentaire
Champ tiquette
Champ code opratoire (mnmonique). Dans ce champ on trouve aussi des directives d'assemblage
Champ oprande
Champ commentaire
Pour passer d'un champ un autre, il suffit de mettre un espace avec la touche espace ou tabulation.
Plusieurs espaces accols correspondent un seul et mme espace.
II.
Directives d'assemblage
Une directive ne doit pas tre confondue avec les instructions du programme.
Elle indique tout simplement lassembleur la manire dont on veut quil travaille.
Les directives ne sont pas sensibles la casse des caractres.
END (pas sur colonne 1) : Fin du fichier contenant le programme.
EQU (sur colonne 1) : Permet de donner des quivalences (pour des valeurs). C.--d. associer un nombre
une tiquette.
Page1/10
OUATTARA ALI
Le pic16F84
Exemple :
ITES_IGN_TLC2
EQU
H0D
ITES_IGN_TLC2
#DEFINE (sur colonne 1) : Permet de donner des quivalences (pour des chanes de caractres).
Cest dire remplacer un texte difficile mmoriser par quelque chose de plus simple.
Exemple :
#DEFINE
LAMPE PORTA,1
PORTA,1)
Exemple :
ORG 0x00
GOTO debut
Linstruction GOTO est loge ladresse 00 de la mmoire de programme. Son excution renvoie se brancher
inconditionnellement au label debut qui se trouverait une certaine adresse.
__CONFIG (pas sur colonne 1) :
_CP_OFF :
_WDT_ON :
_PWRTE_ON :
_HS_OSC :
OUATTARA ALI
Le pic16F84
Exemple :
#INCLUDE
<P16F84A.INC>
Exemple :
CBLOCK
DELAI
ZONE :
TABLE
ENDC
0x20
: 1
3
: 8
;
;
;
;
;
Fin de la macro.
Exemple :
BANK0
macro
BCF STATUS,5
endm
Quelque part dans le programme on peut utiliser BANK0 comme une instruction.
III.
Modes dadressage
1. Adressage inhrent
Ce mode nest pas proprement parler un mode dadressage, mais tous les fabricants le dcomptent comme tel.
Les instructions agissent sur les registres internes du microprocesseur. Les instructions comportent donc un
code oprateur seul sans oprande.
Par exemple :
CLRW
MOVLW
MOVLW
SUBLW
53
B00110101
5Ah
Page3/10
OUATTARA ALI
Le pic16F84
Remarque :
Les chiffres hexadcimaux peuvent tre crits aussi de la manire suivante : 0x5A ou H5A.
3. Adressage direct
Par dfaut, le microcontrleur travail en adressage direct. Le code opratoire est suivi dun octet non sign qui
est ladresse effective pour une page prcise (bank 0 1) de la donne, ou oprande, manipuler. Il peut tre
suivi dune valeur prcde par une virgule.
Exemple :
ANDWF 0x20,0
ANDWF 0x20,1
MOVF
MOVF
0x0C,0
0x3A
4. Adressage indirect
Dans ce mode dadressage, loprande est constitu par INDF. Il suffit de spcifier la valeur dadresse sur 8 bits
dans le registre FSR.
Exemple :
Movlw 0x1A
Movwf FSR
MOVF
INDF,0
IV.
addlw
addwf
f,d
: Additionne une variable ladresse f avec W. Rsultat dans f si d=1 ou dans W si d=0.
andlw
andwf
f,d
bcf
f,b
: Met le bit b de f 0.
bsf
f,b
: Met le bit b de f 1.
btfsc
f,b
: Teste le bit b de f. Si ce bit vaut 0 alors linstruction suivante est ignore (instruction
NOP excut la place).
btfss
f,b
: Teste le bit b de f. Si ce bit vaut 1 alors linstruction suivante est ignore (instruction
NOP excut la place).
call
clrf
: Met 0 dans f.
Page4/10
OUATTARA ALI
Le pic16F84
clrw
: Met 0 dans W.
clrwdt
comf
f,d
decf
f,d
decfsz
f,d
goto
incf
f,d
incfsz
f,d
iorlw
iorwf
f,d
movf
f,d
movlw
movwf
nop
retfie
retlw
return
rlf
f,d
rrf
f,d
sleep
sublw
subwf
f,d
: Soustraction : une variable ladresse f-W, rsultat dans f si d=1 ou dans W si d=0.
swapf
f,d
xorlw
xorwf
f,d
Page5/10
OUATTARA ALI
Le pic16F84
Page6/10
OUATTARA ALI
Le pic16F84
Note :
1. Quand la sortie est modifie par elle-mme, par exemple MOWF PORTB,1 la valeur utilise est ltat
rel de laccs correspondant. Si par exemple ltat du latch associ est 1 mais que la broche soit force
0 par un court-circuit extrieur la valeur affecte par linstruction est zro.
2. Si linstruction est excute sur le compteur du TIMER (TMR0) le pr-diviseur est remis zro sil est
utilis.
3. Si un saut est effectu, cette instruction ncessite deux cycles machine, le second est excut comme un
NOP.
V.
Organigramme (en anglais flowchart), se dit aussi ordinogramme : cest un schma synoptique qui analyse
dans le dtail les diffrentes phases du problme traiter.
Algorithgramme : Cest la transposition dun organigramme en tches simplifies.
2. Structure linaire ou squentielle
Exemple : P = U x I
Page7/10
OUATTARA ALI
Le pic16F84
3. Structure itrative
Structure itrative : boucle tant que
Tant que < condition ralise >
Faire quelque chose
Rpter
4. Structure alternative
Exemple : Un candidat est reu si M > 10
Page8/10
OUATTARA ALI
Le pic16F84
If N5 Then
action
End If
If N > 5 Then
action
End If
If N < 5 Then
action
End If
Commentaires
; N dans W
; 5 - W dans W
; Si le rsultat est nul, (c..d. bit Z du registre statut=1) il
; y a skip (On excute l'action)
; Si le rsultat est 0, (c..d. bit Z du registre statut=0),
; on saute au label FinSi (on sort de la structure)
; N dans W
; 5 - W dans W
; Si le rsultat est 0, (c..d. bit Z du registre statut=0)
; il y a skip (on excute l'action)
; Si le rsultat est nul, (c..d. bit Z du registre statut=1),
; on saute au label FinSi (on sort de la structure)
; N dans W
; 5 - W dans W
; Si le rsultat 5-W est ngatif (c..d. bit C du registre
; statut=1), il y a skip (on excute l'action)
; Si le rsultat 5-W est positif, on sort de la structure
; N dans W
; 5 - W dans W
; Si le rsultat 5-W est positif (c..d. bit C du registre
; statut=0) , il y a skip (on excute l'action)
; Si le rsultat 5-W est ngatif, on sort de la structure
Page9/10
OUATTARA ALI
If N=5 Then
action1
Else
action2
End If
Dbut
MOVF
N,0
SUBLW 5
BTFSS STATUS,Z
GOTO Sinon
action1
GOTO FinSi
Sinon
action2
FinSi
..
Dbut
MOVF
N,0
SUBLW 5
BTFSS
STATUS,Z
GOTO
FinSi
MOVF M,0
SUBLW 3
BTFSS
STATUS,Z
GOTO
FinSi
action
FinSi
..
Dbut
MOVLW 1
MOVWF A
Test
action
MOVF
A,0
ADDLW 1
MOVWF A
SUBLW 5
BTFSC
STATUS,C
GOTO
Test
FinFor
..
For A=1 To 5
action
Next A
A=1
Do
A=A+1
Loop While A<5
Excution de l'action
(A=A+1)
au moins une fois
A=1
Do While A<5
A=A+1
Loop
Si le rsultat du test est
vrai, on excute l'action.
Dbut
MOVLW 1
MOVWF A
Faire
MOVLW 1
ADDWF A,1
MOVLW 5
SUBWF A,0
BTFSS
STATUS,Z
GOTO
Faire
FinDo
..
Dbut
MOVLW 1
MOVWF A
GOTO
TantQue
Faire
INCF
A,1
TantQue
MOVLW 5
SUBWF A,0
BTFSS
STATUS,Z
GOTO
Faire
FinDo
Le pic16F84
; N dans W
; 5 - W dans W
; Si le rsultat est nul, skip (on excute Action1) ensuite
; on saute au label FinSi (on nexcute pas Action2)
; Si le rsultat est 0, on saute au label Sinon
; (on excute Action2)
; Si N5
; on sort de la structure
; Si M3
; on sort de la structure
; 1 dans A
; puis W dans A (==> 1 dans A)
; excution de Action
; A dans W
; puis W+1 dans W
; W dans A (==> A+1 dans A)
; 5 - W dans W
; Si le rsultat est ngatif (5 passages), skip, on sort de la
structure
; Si le rsultat est positif on saute l'incrmentation
; de A (label Test)
; 1 dans A
; A+1 dans A (cest laction faire)
; A-5 dans W
; Si le rsultat est nul, skip, on sort de la structure car
; A=5
; Si le rsultat 0 (c..d A est diffrent de 5, on
; saute Faire
; 1 dans A
; on saute faire le test
Page10/10