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


Horloge Unit de contrle P 1 U.A.L. Interface d entre Interface de sortie Mmoires DMA DMA

P1

Pn

P n

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

Cours pic16F648A C) Mmoires de masse Accs squentiel : Accs alatoire : Bandes magntiques Disquettes Disques durs Cdroms

S.T.I. Gnie Electrique option Electronique

D) Pn : Priphriques de sortie Dispositifs de visualisation : Imprimante Table traante Synthtiseur vocal Lecteur disquette DELs Affichage alphanumrique Ecran vido

III)

Architecture dun systme microprocesseur


A) Structure : P 6809 MOTOROLA

Bus de donnes bidirectionnel

(UCT) CPU Central Processing Unit

Bus de contrle

Mmoires

Circuits d interface entre/sortie

16

Bus d adresses unidirectionnel Extrieur

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 :


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

Binaire

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

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.

Page n5/12

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 0 0 1 1 RP0 0 1 0 1 Description bank 0 (adresse 00h-7Fh) ou page 0 bank 1 (adresse 80h-FFh) ou page 1 bank 2 (adresse 100h-17Fh) ou page 2 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 :

Champ tiquette Commentaire car symbole ; en dbut de ligne


; programme qui permet d'allumer une LED ; sur la sortie RB0 #include <p16F84.inc> ORG goto goto nop bsf movlw movwf bcf bsf end 0x00 main irq STATUS,5 B'00000000 TRISB STATUS,5 PORTB,0

Champ commentaire

; initialisation des noms de variables ; dbut de programme ; saut au programme principal ; saut au programme interruption ; TRIS est le registre de direction des ports ; banque 1 pour accder au registre TRIS ; 0 = sortie ; le port b est entirement en sortie ; retour la banque 0 ; met le bit 0 du port B 1 (allume la LED) ; fin de programme

main

Champ oprateur

Champ oprande

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 BCF ORG Ex: ORG

S.T.I. Gnie Electrique option Electronique

MONBIT ; Met le bit 1 du port A 0 (quivalent BCF PORTA,1) Dtermine o le compilateur doit mettre les codes qui suivent cette commande. 0x00.

_CONFIG Dtermine les fusibles qui fixeront le fonctionnement du PIC. Ex: _CONFIG _CP_OFF & _WDT_ON & _PWRTE_ON & _HS_ON. _CP_OFF : _WDT_ON : _PWRTE_ON : _HS_ON : Aucune protection en lecture du pic (choix par dfaut). WatchDog en service par dfaut (le mettre OFF sur nos Kits). Dlai de dmarrage du pic la mise sous tension (OFF par dfaut). 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 5Ahxadcimal-W rsultat dans W. Remarque : les chiffres hexadcimaux peuvent tre crit aussi de la manire suivant : 0x5A ou H5A. Page n8/12

Cours pic16F648A C) Adressage direct :

S.T.I. Gnie Electrique option Electronique

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

addlw addwf andlw andwf bcf bsf btfsc

k f,d k f,d f,b f,b f,b

Rsum en franais des mnmoniques : Additionne une constante k W. Rsultat dans W. : Additionne une variable ladresse f avec W. Rsultat dans f si d=1 ou dans W si d=0. : ET logique entre une constante k et W. Rsultat dans W. : ET logique entre une variable ladresse f et W. Rsultat dans f si d=1 ou dans W si d=0. : Met le bit b de f 0. : Met le bit b de f 1. : Teste le bit b de f. Si ce bit vaut 0 alors linstruction suivante est ignore (instruction NOP excut la place). Page n10/12

Cours pic16F648A btfss call clrf clrw clrwdt comf decf decfsz f,b k f

S.T.I. Gnie Electrique option Electronique

f,d f,d f,d

goto incf incfsz

k f,d f,d

iorlw iorwf movf movlw movwf nop retfie retlw return rlf rrf sleep sublw subwf swapf xorlw xorwf

k f,d f,d k f

k f,d f,d

k f,d f,d k f,d

: Teste le bit b de f. Si ce bit vaut 1 alors linstruction suivante est ignore (instruction NOP excut la place). : Appel a un sous/programme (PC mmoris dans la pile systme). : Met 0 dans f. : Met 0 dans W. : Fait un reset du chien de garde (registre WDT counter mis 0). : Complment 1 de f. Rsultat dans f si d=1 ou dans W si d=0. : Dcrmente de 1 la variable f. Rsultat dans f si d=1 ou dans W si d=0. : 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). : Branchement inconditionnel ladresse k. : Incrmente de +1 la variable f. Rsultat dans f si d=1 ou dans W si d=0. : 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). : OU logique entre une constante k et W. Rsultat dans W. : OU logique entre une variable ladresse f et W. Rsultat dans f si d=1 ou dans W si d=0. : Met la variable contenu ladresse f dans W si d=0 ou dans f si d=1. : Met la variable k dans W : Met la variable contenu dans W ladresse f. : Aucune opration effectu (1 cycle machine excut). : Fin du programme interruption (dpile la pile systme). : Fin dun sous/programme (associe call). Met la variable k dans W. : Fin dun sous/programme (associe call). : Rotation logique gauche de la variable stocke ladresse f. Rsultat dans f si d=1 ou dans W si d=0. : Rotation logique droite de la variable stocke ladresse f. Rsultat dans f si d=1 ou dans W si d=0. : Met le microprocesseur en mode sommeil. : Soustraction : k-W, rsultat dans W. : Soustraction : une variable ladresse f-W, rsultat dans f si d=1 ou dans W si d=0. : Permute les deux quartets de f. Rsultat dans f si d=1 ou dans W si d=0. : OU Exclusif entre une constante k et W. Rsultat dans W. : 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 B) Structure linaire ou squentielle :


Ex: P = U x I DEBUT

S.T.I. Gnie Electrique option Electronique C) Structure itrative : 1) Structure itrative : boucle tant que : Tant que < condition ralise > Faire quelque chose Rpter
Oui Condition ralise? Faire quelque chose Sortie

Saisir la valeur de u et la mmoriser

Saisir la valeur de I et la mmoriser

Afficher le rsultat P=UxI

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

FIN

Faire quelque chose

Condition ralise?

Non

Sortie

Remarque : Le travail effectuer lest au moins une fois. D) Structure alternative :


Ex: Un candidat est reu au bac si
M 10

M 10

M 8

Candidat dclar Reu

Candidat admis au 2e groupe dpreuves

Candidat refus

FIN

FIN

Page n12/12

Vous aimerez peut-être aussi