Vous êtes sur la page 1sur 47

LE MICROCONTROLEUR

Comptences finales
VALIDER ET EXPLOITER UNE STRUCTURE LOGICIELLE
Concevoir.. Calculer.. partir dun algorithme donn -analyser et valider une commande par circuit programmable -tablir le programme en assembleur avec MPASM -simuler le fonctionnement avec MPSIM -programmer le circuit avec ICProg
2

La logique programme offre de nombreux avantages par rapport la logique cble. Le principal dentre eux est la possibilit de changer le fonctionnement dun systme par simple modification du programme.
3

Ensemble microprocesseur et priphriques

Avec un microcontrleur tout est intgr

Quest ce quun PIC ?

Brochage

Caractristiques du 16F84
Mmoire programme Flash 1K x 14 bits

RAM 68 octets Eeprom 64 octets Timer TMR0 8 bits PORTA port dentres/sorties 5bits RA0:RA4 PORTB port dentres/sorties 8bits RB0:RB7 Chien de garde (WATCHDOG) intgr Pile 8 niveaux 15 registres matriels de fonctions spciales

10

Caractristiques (suite)

4 sources dinterruptions - broche RB0/INT - portB <7:4>INT - dpassement Timer TMR0 - fin dcriture sur Eeprom Alimentation 2volts 6volts frquence interne = Frquence externe/4 Diviseur interne attribuable au Timer ou au Watchdog

11

Mapping de la mmoire RAM

12

Mapping de la mmoire RAM

13

14

'C' (Carry) c= 1 si le rsultat de la dernire opration traite par l ' UAL comporte une retenue 'DC' ce bit est 1 si la somme des 4 bits de poids faible de la dernire opration traite par l ' UAL est > 15 'Z' ce bit est 1 si le rsultat de la dernire opration traite par l ' UAL vaut 0 'PD' (Power Down) ce bit indique l ' vnement qui provoqu le dernier arrt du PIC ( soit watchdog , soit mode sleep ) 'TO' (Time Out bit) si ce bit vaut 0 il indique que la mise en service est issue d 'un arrt provoqu par un dpassement de temps (watchdog ) ou bien d 'une mise en sommeil (sleep) 'RP0' (Register bank select 0) permet de dfinir la banque 0 ou 1 que l 'on va adresser

'RP1' (Register bank select 1) permet de dfinir la banque 2 ou 3 le PIC 16F84 n 'utilise pas ce bit il doit tre laiss 0
IRP le PIC 16F84 n 'utilise pas ce bit il doit tre laiss 0

15

RBIF est mis 1 lors d 'un changement d 'tat sur l 'une des broches RB4-RB7. INTF . Est mis 1 si une interruption provient d 'un changement d 'tat sur la broche RB0. TOIF. Est mis 1 en cas de dbordement du TIMER. RBIE mis 1 valide l 'interruption du programme suite un changement d 'tat sur une des broches RB4 RB7. INTE ce bit 4 mis un valide l 'interruption du programme suite un changement d 'tat sur la broche RB0. TOIE ce bit 5 mis 1 valide l 'interruption dues au dbordement du TIMER EEIE.Ce bit 6 permet de valider l 'interruption issue de la fin d 'criture en EPROM. GIE ce bit 7 du registre mis 1 permet de valider les interruptions. C'est une validation gnrale ,

16

LES INTERRUPTIONS

17

'PS0' 'PS1' 'PS2' bits utiliss pour raliser une prdivision programmable

'PSA' Ce bit sert diriger une prdivision programmable soit pour le timer (si=0) soit pour le watchdog (si=1) 'TOSE' Ce bit indique le front valide sur la broche RA4 si celle-ci est utilise pour incrmenter le timer.Si ce bit=1 alors RA4 valide sur un front montant, si =0 alors RA4 valide sur front descendant 'TOCS' Le timer interne est un compteur qui s'incrmente en permanence, on peut choisir grce ce bit soit l 'horloge interne du pic issue du quartz et divise par 4 ou bien une horloge externe applique la broche RA4 'INTDG' Si ce bit est positionn 0 la broche RB0 provoquera une interruption ( si elle est autorise) sur un front descendant. Si ce bit est 1 l ' IT aura lieu pour un front montant sur RB0 'RBPU/' Si ce bit est positionn 0 une rsistance de rappel relie en interne au +5v toutes les entres du port B. 18

LE TIMER

19

'RD' Ce bit est positionn 1 en dbut de lecture en EEPROM et remis 0 la fin du cycle de lecture en EEPROM 'WR' Ce bit est positionn 1 en dbut d'criture en EEPROM et remis 0 la fin du cycle d 'criture en EEPROM

'WREN' Ce bit permet d 'autoriser l criture en EEPROM

'WRERR' Ce bit est positionn 1 si une opration d 'criture en EEPROM ne s 'est pas ralise

'EEIF' Ce bit est positionn 1 la fin du cycle d 'criture en EEPROM

20

Le registre d' adressage indirect des donnes Le registre f0 est le registre d' adressage indirect qui donne un accs aux donnes. Ce registre est en relation avec le registre FSR ( f4.) Le registre RTCC ( Real Time Clock Counter ) Le registre f1 est un emplacement mmoire dont le contenu volue au rythme d' un signal d' horloge. Le registre OPTION Le registre OPTION permet de dfinir entre autre le choix d' un diviseur et son affectation au Watch Dog intgr ou bien la RTCC qui est une horloge temps rel . On accde au registre OPTION uniquement en criture et aprs un RESET tous les bits sont positionns 1. Le registre PC Le registre f2 est le compteur de programme ( PC ) ou compteur ordinal. Il contient l' adresse en mmoire de programme de la prochaine instruction excuter.

21

Le registre d' tat Le registre f3 est le registre d' tat qui contient notamment les flags qui informent sur le rsultat de la dernire opration. Ce registre contient 8 bits IRP - RP1 - RP0 - TO - PD - Z - DC - C Le registre FSR ( slection de fichier ) Le registre f4 dfinit selon la position de ses bits 0 4 l'adresse du registre lors d' un accs indirect par le registre f0.Il est utilis en programmation pour les adressage indirect. Les registres TRIS Les registres TRIS ont pour fonction de configurer les broches d' entres - sorties des ports.

Le registre PCLATH Le registre PC travaille sur 13 bits , 8 bits sont dans le registre PC et 5 dans le registre PCLATH.
22

Le registre EEDATA ( famille 16c84 , 16f84 ) Le registre contient la donne lire ou crire une adresse de la mmoire l' EPROM interne.

Le registre EEADR ( famille 16c84 , 16f84 ) Le registre contient l'adresse de la donne lire ou crire dans la mmoire l' EPROM interne.

Le registre EECON 1 et 2 ( famille 16c84 , 16f84 ) Ces deux registres de contrle permettent de lire et d' crire dans la mmoire EPROM interne .Selon le positionnement de certain bits une criture ou une lecture est autorise. La lecture reste cependant beaucoup plus simple d' emploi.

Le registre W Le registre W dit registre de travail est similaire aux "accumulateurs" des microprocesseurs.
23

interet:
simplicit

24

COMMANDE EN PUISSANCE

25

COMMANDE DUN RELAIS

26

La programmation

27

Le jeux dinstructions

28

Les instructions orientes registre

29

30

Les instructions orientes bit

31

32

Oprations contrles et sauts

33

MPLAB

34

Procdure suivre pour dvelopper une application base de PICs laide de lensemble de dveloppement MPLab (diteur-assembleur-simulateurmulateur-programmateur) de MICROCHIP

35

Cration dun projet sous MPLab de Microchip

criture dun fichier source en assembleur laide dun diteur de texte ( Extension .Asm)

criture dun fichier en langage C Pour PIC (Extension .C)

Assemblage du fichier Obtention dun fichier Hexadcimal (Extension .Hex)

Compilation du fichier(avec CCS par exemple) Obtention dun fichier Hexadcimal (Extension .Hex)

Simulation du fonctionnement Correction

Transfert du fichier .Hex sur la PIC avec ICProg et un programmateur


36

Lenvironnement de dveloppement intgr MPLab


Il permet: De saisir le programme source en assembleur MPASM (fichier.asm) dans un diteur. Dassembler le fichier obtenu, de corriger les erreurs de syntaxe, on obtient un fichier hexa (fichier.hex) De simuler le fonctionnement du programme tape par tape ou en temps rel, de placer des points darrt, de visualiser ltat des entres/sorties, des registres etc.
37

diteur de saisie du fichier source

ICPROG
Ouvrir le CDRom et faire un simple copier / coller de ICProg sur le bureau
Type de microcontrleur

Valeurs inscrites en mmoire programme

Type oscillateur
Paramtres __CONFIG

Valeurs inscrites en Eeprom

Valeur binaire de __CONFIG

39

40


a ) (M1 )(M2 ) (a ) (M1 ) (b ) (M2 )(c )(M2) (M1

non oui

AFFECTATION DES ENTREES SORTIES AU PIC 16F84

Entre

Broche PIC

a b c

RA0 RA1 RA2 RB0 RB1

RA0
5V

RA1
5V
5V c 4.7k

RA2

Sorties

Broche PIC

a 4.7k

M1 M2

RB0 RB1

4.7k

PROGRAMME EN ASSEMBLEUR AVEC MPLAB


;********************************************************************** ; ; ; ; ; ; ; NOM: Date: SEMINAIRE DE GENIE ELECTRIQUE DECEMBRE 2007 GRAFCET MARDI 04 DECEMBRE 2007 * * * * * * *

Version: 01 Circuit: GRAFCET LINEAIRE Auteur: AZZEDDINE LAMRAOUI

;**********************************************************************

;Fichier requis: P16F84.inc (Doit tre copier dans le mme rpertoire *


;que lapplication) ;**********************************************************************

LIST

p=16F84

; Dfinition de processeur ; Dfinitions des constantes

#include <p16F84.inc> __CONFIG

_CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

; '__CONFIG' prcise les paramtres encods dans le processeur au moment de ; la programmation du processeur. Les dfinitions sont dans le fichier include. ; Voici les valeurs et leurs dfinitions :

; ;

_CP_ON _CP_OFF

Code protection ON : impossible de relire Code protection OFF

;
; ; ; ;

_PWRTE_ON
_PWRTE_OFF _WDT_ON _WDT_OFF _LP_OSC

Timer reset sur power on en service


Timer reset hors-service Watch-dog en service Watch-dog hors service Oscillateur quartz basse vitesse

;
; ;

_XT_OSC
_HS_OSC _RC_OSC

Oscillateur quartz moyenne vitesse


Oscillateur quartz grande vitesse Oscillateur rseau RC

;********************************************************************* ; DEFINE *

;*********************************************************************

#DEFINE M1 #DEFINE M2 #DEFINE a #DEFINE b #DEFINE c

PORTB,0 PORTB,1 PORTA,0 PORTA,1 PORTA,2

; MOTEUR1 ; MOTEUR2 ; entre a ; entre b ; entre c

;*********************************************************************

MACRO

;*********************************************************************

M1ON macro BSF M1

endm
M1OFF macro BCF M1 endm

M2ON macro
BSF M2 endm M2OFF macro

BCF M2
endm

;********************************************************************** ; DEMARRAGE SUR RESET *

;**********************************************************************

org 0x000 goto init

; Adresse de dpart aprs reset ; Adresse 0: initialiser

;**********************************************************************

Init

; INITIALISATION DU PORT A EN ENTREE ET LE PORT B EN SORTIE

BSF STATUS,5
MOVLW B'00000000 MOVWF TRISB MOVLW B'00011111' MOVWF TRISA BCF STATUS,5

; ou

BSF STATUS,rpo

SELECTIONNER BANQUE 1

; mettre 0 dans le registre W ; transferer le registre W dans le registre TRISB ; mettre 00011111 dans le registre W ; transferer le registre W dans le registre TRISA ; REPASSER EN BANQUE 0

;********************************************************************* ; PROGRAMME PRINCIPAL *

;*********************************************************************

start
BOU1

CLRF PORTB ; mise zro du PORTB M1=0 et M2=0 BTFSS a


; tester si lente a = 1 sauter linstruction suivante

goto BOU1 ; si non aller a ltiquette BOU1


BOU2

M1ON M2OFF BTFSS b

; M1 = 1 ; M2 = 0 ; tester si lente b = 1 sauter linstruction suivante

goto BOU2 ;si non aller a ltiquette BOU2


BOU3

M2ON M1OFF BTFSS c goto BOU3 M1OFF M2OFF GOTO start END

; M2 = 1

; M1 = 0
; tester si lente c = 1 sauter linstruction suivante

;si non aller a ltiquette BOU3


; M1 = 0

; M2 = 0
; aller a ltiquette start ; directive fin de programme