Vous êtes sur la page 1sur 12

Cours pic16F648A S.T.I.

Gnie Electrique option Electronique



PIC : COURS ASSEMBLEUR
I) Fonctions de base dune machine informatique
Contenir de faon permanente les tches excuter (mmoire programme) en ROM
ou sur support magntique.
Contenir de faon temporaire des donnes (mmoire de travail) en RAM.
Permettre un dialogue avec lextrieur (circuit dinterface entre/sortie) :
PIA- ACIA- TIMER
PIO- USART
SIO- UART.
Effectuer des oprations arithmtiques et logiques lmentaires (UAL, en anglais
ALU).
Organiser des transits dinformations (unit de contrle : U.C.)
Cadencer les diffrentes informations (Horloge)
Pointer ltape du programme en cours (P.C. : compteur programme, en anglais
Program Counter).
II) Schma fonctionnel dune machine informatique
U.A.L.
Mmoires
Unit de
contrle
Horloge
Interface
de
sortie
Interface
d entre
P1
Pn
P 1
P n
DMA
DMA

A) Pn : Priphriques dentres
Clavier
Souris
Joystick
Ecran tactile
Lecteur de bande magntique
Lecteur de cartes
Chanes dacquisition de donnes
Crayon optique
B) Registres mmoires
A accs dit alatoire cest dire, temps daccs indpendant de lemplacement de la
donne stocke.
Lecture seule : ROM
PROM
REPROM
RAM (lecture & criture) : Statique
Dynamique
Page n1/12
Cours pic16F648A S.T.I. Gnie Electrique option Electronique

C) Mmoires de masse
Accs squentiel : Bandes magntiques
Accs alatoire : Disquettes
Disques durs
Cdroms
D) Pn : Priphriques de sortie
Dispositifs de visualisation : DELs
Affichage alphanumrique
Ecran vido
Imprimante
Table traante
Synthtiseur vocal
Lecteur disquette
III) Architecture dun systme microprocesseur
A) Structure : P 6809 MOTOROLA
Mmoires
Circuits
d interface
entre/sortie
Bus de donnes bidirectionnel
Bus d adresses unidirectionnel
8
16
Bus de
contrle
Extrieur
(UCT)
CPU
Central
Processing
Unit

B) Notion de programme source et programme objet
Programme source : Traduction de lalgorithme dans un langage comprhensible par
la machine informatique (BASIC, PASCAL, C, FORTRAN, COBOL, ALGOL, PL1, ADA, LOGO,
LSE, DELPHI, etc ...).
Programme objet : Traduction du programme source en instructions codes en
binaire, seul langage excutable par le microprocesseur.
Page n2/12
Cours pic16F648A S.T.I. Gnie Electrique option Electronique

Passage du programme source au programme objet :
Binaire
Programme
objet en
Matriel Mode de traduction Programme
source crit en
Binaire
Hxadcimal
Mnmonique
Langage volu:
* Basic
* Pascal
* C
Conversion Hxadcimal/binaire
Assembleur (logiciel)
Dsassembleur (logiciel)
Interprteur (logiciel)
Ligne ligne chaque excution
Compilateur (logiciel)
Globalement une seule fois
P

C) Plan mmoire du PIC16F648A

Page n3/12
Cours pic16F648A S.T.I. Gnie Electrique option Electronique


Mapping mmoire du PIC16F648A.
Le pic16F648A est un microcontrleur. Cest un microprocesseur qui possde de la
RAM, ROM et divers priphriques dentres/sorties. Un microcontrleur peut donc tre utilis
seul, car il est lui seul une machine informatique. Un microprocesseur, PENTIUM, 6809, Z80,
etc..., ne peut fonctionner seul, il a ncessairement besoin de ROM et de RAM externes.
Le pic16F648A fait partie de la famille Mid-Range de chez Microchip qui utilise des
mots de 14 bits. Les PICs sont des processeurs de la famille RISC (Reduce Instructions Set
Construction), cest dire ce sont des processeurs jeu dinstruction rduit mais trs rapide en
excution (en gnral 1 cycle machine par instruction traite). La plage mmoire adressable est de
4096 mots de 14 bits et donc ne gre que 12 des 13 bits dadresses (A11 A0).
Page n4/12
Cours pic16F648A S.T.I. Gnie Electrique option Electronique

Page n5/12

Architecture dun microcontrleur de la famille pic16F648A.
Nous pouvons identifier de la mmoire RAM, EEPROM, de la mmoire Flash pour le
programme.
Il y a 3 TIMERS pour concevoir des monostables ou astables de prcision.
Il y a un USART, qui permet de concevoir des liaisons sries (tel quune RS232 par
exemple) et utilisant RB1 et RB2 pour lmission-transmission.
Il y a 8 level-stack (cest dire une pile systme limite 8 sauts).
Il y a 2 ports bidirectionnels.
Il y a deux comparateurs de tensions analogiques.
Cours pic16F648A S.T.I. Gnie Electrique option Electronique

D) Registre fonction spciale (Special Function Register : SFR) :
Les registres fonction spciales sont utiliss par le microprocesseur et les
priphriques internes. Ils sont stocks dans la RAM statique, ce qui limite 8 bits (et non 14 bits)
ces registres. Les SFRs sont toujours stocks dans les 32 premiers octets de chaque page (bank).
Registre W :
Le registre W est le registre de travail sur 8 bits pour raliser des oprations
arithmtiques ou logiques.
Pointeur de pile S :
Le pointeur de pile S est un ensemble de registre sur 13 bits. Sur les PICs, il y a 8 mots
de 13 bits, ce qui limite le nombre maximal dinterruption ou dappel des sous-programmes. Le
pointeur de pile S mmorise une adresse, cest dire le contenu du compteur programme. Attention,
elle nest pas manipulable, exclusivement rserve au microprocesseur.
Compteur programme ou PC :
Le compteur programme, PC, indique ladresse du prochain code binaire 14 bits
traiter. Le registre PC est constitu de deux registres, un registre PCL constitu de 8 bits et un
registre PCLATH constitu de 5 bits. Le registre PC fait donc 13 bits qui correspond 8192 mots
de 14 bits mais dans notre cas limit 4096 mots de 14 bits (voir doc du pic16F648A).
Registre dtat (Status Register) :
Le registre dtat est un registre sur 8 bits. Chaque bit une signification particulire :

Le bit C (Carry) : C est mis 1 lorsquune opration arithmtique gnre une
retenue. Il est galement utilis comme indicateur derreur lors dune multiplication ou dune
division, et sert lors de certaines oprations de dcalage ou rotation qui peuvent passer par son
intermdiaire ou non.
Le bit Z (Zro) : Z est mis 1 lorsque le rsultat de linstruction excut est nul.
Les bits RP1 et RP0 : Bits indiquants sur quelle page (bank), le microprocesseur
travail en adressage direct (seul 7 bits dadresses sont ncessaires).
RP1 RP0 Description
0 0 bank 0 (adresse 00h-7Fh) ou page 0
0 1 bank 1 (adresse 80h-FFh) ou page 1
1 0 bank 2 (adresse 100h-17Fh) ou page 2
1 1 bank 3 (adresse 180h-1FFh) ou page 3
Le bit IRP : Bit indiquant sur quelle page (bank), le microprocesseur travail en
adressage indirect (8 bits dadresses sont ncessaires).
0 : bank 0, 1 (adresse 00h-FFh) ou page 0 et 1
1 : bank 2,3 (adresse 100h-1FFh) ou page 2 et 3
E) Ports
Port A :
RA0 RA7 sont des entres du port parallle A. Ces lignes sont bidirectionnelles (sauf
pour RA5 en entre seulement). De plus elles sont partages avec certains priphriques du pic (voir
doc constructeur en fonction des besoins). Nous considrons que sur notre systme dapprentissage,
elles sont en entre car il y a 4 interrupteurs de connects (RA0 pour SW1 RA3 pour SW4).
Page n6/12
Cours pic16F648A S.T.I. Gnie Electrique option Electronique

Port B :
PB0 PB7 sont des sorties du port parallle B. Ces lignes sont bidirectionnelles. De
plus elles sont partages avec certains priphriques du pic (voir doc constructeurs en fonction des
besoins). Nous considrons que sur notre systme dapprentissage, elles sont en sortie car il y a 6
LEDs rouges de connectes (RB0 pour LD1 RB5 pour LD6)
IV) Editeur assembleur :
A) Fentre dun diteur standard pour raliser un programme en assembleur :
; programme qui permet d'allumer une LED
; sur la sortie RB0
#include <p16F84.inc> ; initialisation des noms de variables

ORG 0x00 ; dbut de programme
goto main ; saut au programme principal
goto irq ; saut au programme interruption
main nop ; TRIS est le registre de direction des ports
bsf STATUS,5 ; banque 1 pour accder au registre TRIS
movlw B'00000000 ; 0 = sortie
movwf TRISB ; le port b est entirement en sortie

bcf STATUS,5 ; retour la banque 0
bsf PORTB,0 ; met le bit 0 du port B 1 (allume la LED)

end ; fin de programme



Champ commentaire Champ tiquette
Commentaire car symbole
; en dbut de ligne
Champ oprande Champ oprateur
On remarque que l'cran se dcoupe en 4 champs :
Champ tiquette
Champ oprateur (code mnmonique) ou directive d'assemblage
Champ oprande
Champ commentaire
Pour passer d'un champ un autre, il suffit de mettre un espace avec la touche espace ou
TAB. Plusieurs espaces accols correspondent un seul et mme espace. Attention on ne peut
sauter des champs, c'est dire passer du champ tiquette au champ oprande. Seul le champ
commentaire est un peu particulier. Si un champ quelconque est rempli, on peut aller directement au
champ commentaire. Il y a une exception, lorsqu'aucun champ n'est rempli, l'diteur considre que
toute la ligne est un champ commentaire, d'o la condition de mettre ; en dbut de ligne.
On n'utilisera pas d'tiquette comportant plus de 8 caractres du code ASCII standard.
B) Directives d'assemblage :
END Fin du fichier contenant le programme.
EQU Permet de donner des quivalences (pour des valeurs).
Ex: FSR EQU H04.
Et dans le programme cela donnera :
MOVF FSR ; Ecriture de W dans FSR
#DEFINE Permet de donner des quivalences (pour des chanes de caractres).
Ex: #DEFINE MONBIT PORTA,1.
Et dans le programme cela donnera :
Page n7/12
Cours pic16F648A S.T.I. Gnie Electrique option Electronique

BCF MONBIT ; Met le bit 1 du port A 0 (quivalent BCF PORTA,1)
ORG Dtermine o le compilateur doit mettre les codes qui suivent cette commande.
Ex: ORG 0x00.
_CONFIG Dtermine les fusibles qui fixeront le fonctionnement du PIC.
Ex: _CONFIG _CP_OFF & _WDT_ON & _PWRTE_ON & _HS_ON.
_CP_OFF : Aucune protection en lecture du pic (choix par dfaut).
_WDT_ON : WatchDog en service par dfaut (le mettre OFF sur nos Kits).
_PWRTE_ON : Dlai de dmarrage du pic la mise sous tension (OFF par dfaut).
_HS_ON : Oscillateur quartz grande vitesse (_XT_OSC sur nos kits : quartz lent)
(_RS_OSC par dfaut).
_BODEN_ON : Reset du pic si chute de tension (choix par dfaut).
_LVP_ON : Utilisation de RB3 comme broche de programmation sous 5V(choix par
dfaut).
_CPD_OFF : Non protection en criture de la zone EEPROM (choix par dfaut).
_DATA_CP_OFF : Non protection en criture de la zone RAM (choix par dfaut).
_WRT_ON : Non protection de la mmoire FLASH (li _CP_) (choix par dfaut).
_DEBUG_OFF : Non utilisation dun dbuggeur (avec RB6 et RB7) (choix par dfaut).
#INCLUDE Dtermine pour le compilateur toutes les quivalences lis la structure du pic
(pour lassembleur). Aussi utilis en programmation en langage C. Cela permet
alors dinclure des fonctions ou procdures en C dj ralises.
Ex: #INCLUDE <pic16F648A>.
CBLOCK Dtermine un bloc mmoire pour rserver des octets pour diffrentes variables.
ENDC Fin de la dclaration pour le bloc mmoire.
Ex : CBLOCK 0x20 ; Dclaration dun bloc mmoire ladresse 0x20
TEMP : 1 ; Rservation dun octet ladresse 0x20
TABLE : 8 ; Rservation de 8 octets partir de ladresse 0x21
ENDC ; Fin de la dclaration du bloc mmoire
V) Modes dadressage
A) 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.
CLRW Met le registre de travail W 0 et met le bit Z 1.
B) Adressage immdiat ou littral :
Dans ce mode dadressage, le code oprateur est suivi par la donne manipuler, code
oprande. Linstruction est donc compos dun code oprateur et dun code oprande seul. Une
instruction littral se reconnat facilement car elle se termine toujours par LW.
MOVLW 53 Stocke la valeur 53 en dcimale dans le registre W.
MOVLW B00110101 Stocke la valeur 53 en dcimale dans le registre W.
SUBLW 5Ah Soustraction 5A
hxadcimal
-W rsultat dans W.
Remarque : les chiffres hexadcimaux peuvent tre crit aussi de la manire suivant : 0x5A
ou H5A.
Page n8/12
Cours pic16F648A S.T.I. Gnie Electrique option Electronique

C) Adressage direct :
Par dfaut, le microcontrleur travail en adressage direct. Le code oprateur est suivi
dun octet non sign qui est ladresse effective pour une page prcise (bank 0 3) de la donne, ou
oprande, manipuler. Il peut tre suivi dune valeur prcde par une virgule.
Ne codant ladresse que sur un octet, mais seul les 7 premiers bits (A6 A0) de poids
faible sont pris en compte. Il nest donc possible que dadresser les 128 premiers octets dune page
donne. Le choix de la page se faisant par RP1 et RP0 qui sont respectivement les bits 8 et 7
dadressage. Ladresse 00h ladresse 7Fh, de lespace adressable du microcontrleur sera
accessible pour la page 0 (voir page 3 pour les diffrentes pages).
ANDWF 0x20,0 ET logique entre W et le contenu de ladresse 0x20, rsultat
dans W.
ANDWF 0x20,1 ET logique entre W et le contenu ladresse 0x20, rsultat
ladresse 0x20 (autre criture possible ANDWF 0x20 car
par dfaut la valeur vaut 1 si absente).
MOVF 0x7F,0 Lecture du registre 0x7F (RAM), rsultat dans W.
MOVF 0x7F Lecture du registre 0x7F (RAM), rsultat dans 0x7F. Permet
de tester le bit Z.
D) Adressage indirect :
Dans ce mode dadressage, loprande est constitue par INDF. Il suffit de spcifier la
valeur dadresse sur 8 bits dans le registre FSR (Attention, les adresses sont sur 8 bits et non sur 7
bits comme pour ladressage direct). Pour complter ladresse, il faut spcifier le neuvime bit (bit
IRP du registre STATUS).
MOVF INDF,0 Lecture du registre point par la valeur contenu dans INDF,
rsultat dans W.
VI) Jeux dinstructions :

Page n9/12
Cours pic16F648A S.T.I. Gnie Electrique option Electronique

Page n10/12

Rsum en franais des mnmoniques
addlw k : Additionne une constante k W. Rsultat dans W.
addwf f,d : Additionne une variable ladresse f avec W. Rsultat dans f si d=1 ou dans W
si d=0.
andlw k : ET logique entre une constante k et W. Rsultat dans W.
andwf f,d : ET logique entre une variable ladresse f et W. Rsultat dans f si d=1 ou dans
W si d=0.
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).
Cours pic16F648A S.T.I. Gnie Electrique option Electronique

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 k : Appel a un sous/programme (PC mmoris dans la pile systme).
clrf f : Met 0 dans f.
clrw : Met 0 dans W.
clrwdt : Fait un reset du chien de garde (registre WDT counter mis 0).
comf f,d : Complment 1 de f. Rsultat dans f si d=1 ou dans W si d=0.
decf f,d : Dcrmente de 1 la variable f. Rsultat dans f si d=1 ou dans W si d=0.
decfsz f,d : Dcrmente de 1 la variable f. Rsultat dans f si d=1 ou dans W si d=0. Si le
rsultat de lopration vaut 0, alors linstruction suivante est ignore (instruction
NOP excut la place).
goto k : Branchement inconditionnel ladresse k.
incf f,d : Incrmente de +1 la variable f. Rsultat dans f si d=1 ou dans W si d=0.
incfsz f,d : Incrmente de +1 la variable f. Rsultat dans f si d=1 ou dans W si d=0. Si le
rsultat de lopration vaut 0, alors linstruction suivante est ignore (instruction
NOP excut la place).
iorlw k : OU logique entre une constante k et W. Rsultat dans W.
iorwf f,d : OU logique entre une variable ladresse f et W. Rsultat dans f si d=1 ou dans
W si d=0.
movf f,d : Met la variable contenu ladresse f dans W si d=0 ou dans f si d=1.
movlw k : Met la variable k dans W
movwf f : Met la variable contenu dans W ladresse f.
nop : Aucune opration effectu (1 cycle machine excut).
retfie : Fin du programme interruption (dpile la pile systme).
retlw k : Fin dun sous/programme (associe call). Met la variable k dans W.
return : Fin dun sous/programme (associe call).
rlf f,d : Rotation logique gauche de la variable stocke ladresse f. Rsultat dans f si
d=1 ou dans W si d=0.
rrf f,d : Rotation logique droite de la variable stocke ladresse f. Rsultat dans f si
d=1 ou dans W si d=0.
sleep : Met le microprocesseur en mode sommeil.
sublw k : Soustraction : k-W, rsultat dans W.
subwf f,d : Soustraction : une variable ladresse f-W, rsultat dans f si d=1 ou dans W si
d=0.
swapf f,d : Permute les deux quartets de f. Rsultat dans f si d=1 ou dans W si d=0.
xorlw k : OU Exclusif entre une constante k et W. Rsultat dans W.
xorwf f,d : OU Exclusif entre une variable ladresse f et W. Rsultat dans f si d=1 ou dans
W si d=0.
VII) Structures algorithmiques fondamentales
A) Dfinitions :
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.
Page n11/12
Cours pic16F648A S.T.I. Gnie Electrique option Electronique

B) Structure linaire ou squentielle :
DEBUT
FIN
Saisir la valeur de u
et la mmoriser
Saisir la valeur de I
et la mmoriser
Afficher le rsultat
P = U x I
Ex: P = U x I

C) Structure itrative :
1) Structure itrative : boucle tant que :
Tant que < condition ralise >
Faire quelque chose
Rpter
Condition
ralise?
Faire quelque chose
Sortie
Oui

Remarque : Le travail peut ne jamais tre
effectu.
2) Structure itrative : boucle jusqu :
Faire quelque chose
Jusqu ce que < condition ralise >
Condition
ralise?
Faire quelque chose
Sortie
Non

Remarque : Le travail effectuer lest au
moins une fois.
D) Structure alternative :
?
FIN
Candidat dclar
Reu
Candidat refus
Candidat admis au
2
e
groupe dpreuves
Ex: Un candidat est reu au bac si
10 M
10 M
?
8 M
FIN

Page n12/12

Vous aimerez peut-être aussi