Fichier PDF

Partage, hébergement, conversion et archivage facile de documents au format PDF

Partager un fichier Mes fichiers Convertir un fichier Boite à outils Recherche Aide Contact



ANNEXE2 PIC LOTFI .pdf



Nom original: ANNEXE2 PIC -LOTFI.pdf

Ce document au format PDF 1.5 a été généré par / doPDF Ver 7.3 Build 391 (unknown Windows version - Version: 10.0.10240 (x64)), et a été envoyé sur fichier-pdf.fr le 04/03/2017 à 23:15, depuis l'adresse IP 197.16.x.x. La présente page de téléchargement du fichier a été vue 1011 fois.
Taille du document: 645 Ko (10 pages).
Confidentialité: fichier public




Télécharger le fichier (PDF)









Aperçu du document


I - PROGRAMMATION EN MIKROPASCAL :
1 - Structure d’un programme :
Un programme est un texte que le compilateur va traduire en fichier hexadécimal. Le texte d'un programme
contient au moins trois parties.
a- L'entête : commence par le mot réservé " Program " suivi par le nom du projet.
b- Les déclarations : On déclare les variables, les Procédures et les fonctions utilisées dans le
programme.
c- Le corps du programme : Commence par " Begin " et se termine par "End " suivi d'un point final.
Entre "Begin" et "End" se trouvent les instructions à effectuer par le programme.
Algorithmique

Langage PASCAL

Algoritme Nom Algorithme ;
Variables

Commentaires
// Entête

Program Nom programme ;
Var

Nom variable : Type ;

// Déclaration

Nom variable : Type ;

Constantes
Nom constante : Type =valeur ;
Début

Const
Nom constante : Type =valeur ;
Begin

……..

// Programme

……..

Fin.

principal

End.

2 - Les règles de bases :
a- Toutes instructions ou actions se terminent par un point virgule ;
b- Une ligne de commentaires doit commencer par "{" et se terminer par "}" ou commence par "//".
c- Un bloc d'instructions commence par "Begin" et se termine par "End".

3 - Les types de variables utilisées en Mikropascal :
Type

Désignation

Taille

Rang

Bit
Bit registre
octet
Caractère ASCII
mot
Octet signé
Entier
Entier long

bit
sbit
byte
char
word
short
integer
longint

1 bit
1 bit
8 bits
8 bits
16 bits
8 bits
16 bits
32 bits

Réel

real

32 bits

Tableau

Array[n]of type

n éléments

0 ou 1
0 ou 1
0 - 255
0 - 255
0 - 65535
-128 à +127
-32768 à +32767
-2147483648 à +214783647
±1.17549435082 * 10-38 à
±6.80564774407 * 1038
Rang du type

Chaîne de caractères

String[N]

N*8bits

0 – 255(pour chaque caractère)

N.L

Documents technologiques pour PIC

Page :

1/10

4 - Les bases du compilateur Mikropascal :
Le décimal : A = 12 ; L’hexadécimal : A = $0C ou A = 0x0C ; Le binaire A = %0001100

5- Les opérateurs arithmétiques :
Opérateur
+
*

Opération
Addition
Soustraction
Multiplication

Opérateur
/
Div
Mod

Opération
Division
Division : arrondit à l'entier le plus proche
reste de la division entière

6- Les opérateurs de comparaison :
Opérateur
=
<>
>

Opération
Egalité
Différent
Supérieur à

Opérateur
<
>=
<=

Opération
Inférieur à
Supérieur ou égale
Inférieur ou égale

7- Les opérateurs logiques :
Opérateur
Opération
And
Fonction ET logique
Or
Fonction OU logique
- décalage à droite
- chaque bit de l’octet a est déplacé
Shr
vers la droite
- exemple : si a = 1101 alors :
a shr 2 = 0011

Opérateur
Opération
Not
complement : inverser chaque bit
Xor
Fonction XOR logique
- décalage à gauche
- chaque bit de l’octet a est déplacé
Shl
vers la gauche
- exemple : si a = 1101 alors :
a shl 2 = 0100

8 - Les structures usuelles :
a- L'affectation : C'est l'action d'attribuer une valeur à une variable.
Langage graphique
a = b+c

Langage algorithmique

Langage PASCAL

a  b+c

a : = b+c

b- Structure répétitive:
Structure : Boucle While
Langage Graphique

Langage algorithmique

Langage mikropascal

TANQUE condition
FAIRE
DEBUT
Action ;
FINFAIRE ;

WHILE condition DO
BEGIN
Action ;
END ;

- L’action est exécutée de façon répété tant que la condition est vraie.
- L’action ne s’exécute pas si la condition est fausse.
Structure : Boucle Repeat
Langage Graphique

Langage algorithmique

Langage mikropascal

REPETER
REPEAT
DEBUT
BEGIN
Action ;
Action ;
FIN ;
END ;
JUSQU’A condition
UNTIL condition;
-L’action est exécutée de façon répété tant que la condition est fausse.
-L’action est exécutée une seule fois si la condition est vraie.

N.L

Documents technologiques pour PIC

Page :

2/10

Structure : for .. To .. do :
Langage Graphique

Langage algorithmique
POUR n variant de valeur_initiale
JUSQU’A valeur_finale FAIRE
DEBUT
Action ;
FIN ;
FINFAIRE ;

Langage mikropascal
FOR n :=valeur_initiale
TO valeur_finale DO
DEBUT
Action ;
FIN ;
END ;

c- Structure conditionnelle :
Structure : if ... Then …
Langage graphique

Langage algorithmique

Langage MikroPascal

Si condition ALORS
DEBUT
Action ;
FINSI ;

IF condition THEN
BEGIN
Action ;
END;

Structure : if ... Then ... else …
Langage graphique

Langage algorithmique

SI condition ALORS Action1 ;
SINON Action2 ;

Langage MikroPascal

IF condition THEN Action1
ELSE Action2 ;

Structure : case ... of ...
Utiliser dans le cas d’une longue série des conditions en cascade
Langage graphique

Langage algorithmique
Selon expression
Val1 : Action1 ;
Val2 : Action2 ;

ValN : ActionN;
Autrement : Action0 ;
FinSelon

Langage MikroPascal
Case expression of
Val1 : Action1 ;
Val2 : Action2 ;

ValN : ActionN;
Else : Action0
End ;

II- Différents types de PIC :
 Le PIC 16F84 :
La Figure ci-contre montre le brochage du circuit.
Les fonctions des pattes sont les suivantes :
- VSS, VDD : Alimentation
- OSC1, 2 : Horloge
- RA0-4 : Port A
- RB0-7 : Port B
- T0CKL : Entrée de comptage
- INT : Entrée d'interruption
- MCLR : Reset

N.L

Documents technologiques pour PIC

Page :

3/10

 Le PIC 16F628 :
Le 16F628 possède jusqu'à
16 entrées/sorties :


6 dans le port A (RA0 à RA7)



8 dans le port B (RB0 à RB7)

 Le PIC 16F876 :
Le 16F876 possède jusqu'à
22 entrées/sorties :


6 dans le port A (RA0 à RA5)



8 dans le port B (RB0 à RB7)



8 dans le port C (RC0 à RC7)

 Le PIC 16F877 :
Le 16F877 possède jusqu'à
33 entrées/sorties :


6 dans le port A (RA0 à RA5)



8 dans le port B (RB0 à RB7)



8 dans le port C (RC0 à RC7)



8 dans le port D (RD0 à RD7)



3 dans le port E (RE0 à RE2)

III- Les interruptions :
1- Définition : Une interruption est un événement qui provoque l’arrêt d’un programme en cours
d’exécution pour aller exécuter un autre programme appelé programme (ou routine ) d’interruption.
A la fin du programme d’interruption le microcontrôleur reprend le programme principal à l’endroit où il
s’est arrêté.
Donc Une interruption est un programme qui a une totale priorité sur le déroulement global d’un programme.
En l’absence d’interruption, le programme se déroule de la façon dont a décidé
L'exécution d'une procédure d'interruption répond à un évènement qui peut être interne ou externe au
microcontrôleur. Dans la suite, on s’intéresse uniquement aux interruptions externes.

2- Les interruptions externes :


Un changement d'état sur la broche RB0/INT



Un changement d'état sur l’une des broches RB4 à RB7;

Registre INTCON (INTerrupt CONTroler):: (PIC 16F628 - PIC 16F876 - PIC16F877)
Bit7
GIE

Bit6
PEIE

Bit5
T0IE

Bit4
INTE

Bit3
RBIE

Bit2
T0IF

Bit1
INTF

Bit0
RBIF

Pour le PIC 16F84A le bit 6 est : EEIE (EEPROM Interrupt Enable bit)

N.L

Documents technologiques pour PIC

Page :

4/10

Bit7

GIE

Global Interrupt Enable : autorise toute les sources d’interruption

Bit6

PEIE

Peripheral Interrupt Enable : interruptions causées par les périphériques.

Bit5

T0IE

Timer0 Overflow Interrupt Enable : Interruption suite au débordement du Timer0

Bit4

INTE

RB0 Interrupt Enable : autorise l’Interruption sur RB0

Bit3

RBIE

PortB Interrupt Enable : autorise l’interruption suite au changement de RB4..7

Bit2

T0IF

Timer0 Overflow Interrupt Flag : drapeau mis à 1 suite au débordement du Timer0

Bit1

INTF

RB0 Interrupt Flag : drapeau mis à 1 si l’interruption sur RB0 est active

Bit0

RBIF

PortB Interrupt Flag : drapeau mis à 1 si l’interruption sur RB4..7 est active

3- Déroulement d'une interruption :
Lorsque l'événement déclencheur d'une interruption intervient, alors son drapeau est positionné à un
(levé). Si l'interruption correspondante a été validée (au cours du programme), elle est alors déclenchée :
le programme arrête ce qu'il est en train de faire et va exécuter la procédure d’interruption.
Interruptions
causés par les
périphériques

PEIE

Interruption RB0/INT :
L’interruption externe RB0/INT se produit sur le front montant ou descendant sur l’entrée RB0.
 Configuration de l’interruption RB0/INT : L’interruption externe RB0/INT est gérée par 4 bits :
- GIE : bit de validation globale de toutes les interruptions (1 = oui, 0 = non)
- INTE : bit de validation de l’interruption externe RB0/INT (1 = oui, 0 = non)
- INTF : indicateur ou drapeau correspondant à l’interruption externe RB0/INT
- INTEDG : type du front sur l’entrée RB0/INT
(INTEDG = 1 : Front montant ; INTEDG = 0 : Front descendant) (Registre PTION_REG)
Pour activer l'interruption externe via la broche RB0/INT on doit affecter au registre INTCON :
GIE
1

EEIE
0

T0IE
0

INTE
1

RBIE
0

T0IF
0

INTF
0

RBIF
0

INTCON := $90

Pour pouvoir revenir au programme principal et autoriser de nouvelles interruptions sur la broche RB0/INT,
il faut mettre : Intcon.GIE :=1 ; Intcon.INTF :=0 ; à la fin du sous-programme d’interruption.
N.B : si on veut produire l’interruption sur le front descendant ou le front montant d’une impulsion appliquée
sur RB0 on doit configurer le registre OPTION_REG
Bit 7

Bit 6

RBPU INTEDG

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

TOCS

TOSE

PSA

PS2

PS1

PSO

INTEDG = 1 : interruption si front montant sur RB0.
INTEDG = 0 : interruption si front descendant sur RB0.

N.L

Documents technologiques pour PIC

Page :

5/10

Interruption RBI :
Cette interruption est provoquée par un changement d’état sur au moins une des entrées RB4 à RB7.
Les broches (RB4 à RB7) configurées en entrées sont comparées périodiquement à l’ancienne valeur
mémorisée par la dernière lecture du port B pour gérer l’interruption.
Lorsque le mécanisme de l’interruption RB4 à RB7 se déclenche le microcontrôleur verrouille le bit
indicateur RBIF à 1, une opération de lecture sur le port B est nécessaire pour déverrouiller l’accès
au bit RBIF afin de pouvoir le remettre à 0
 Configuration de l’interruption RBI : Cette interruption est gérée par les 3 bits suivants :
- GIE : bit de validation globale de toutes les interruptions (1 = oui, 0 = non)
- RBIE : bit de validation de l’interruption externe RBI (1 = oui, 0 = non)
- RBIF : indicateur ou drapeau correspondant à l’interruption externe RBI
Pour activer l'interruption sur les broches RB4 à RB7, on doit affecter au registre INTCON :
GIE
1

EEIE
0

T0IE
0

INTE
0

RBIE
1

T0IF
0

INTF
0

RBIF
0

INTCON := $88

Pour pouvoir revenir au programme principal et autoriser d’autres interruptions sur les broches RB4 à RB7,
il faut mettre : Intcon.GIE :=1 ; Intcon.RBIF :=0 ; à la fin du sous-programme d’interruption.
Procedure interrupt ;
Begin
Instruction 1 ; …… ; Instruction n ;
Réactivation de l’interruption // bit GIE
Remise à zéro de l’indicateur correspondant à la source d’interruption utilisée // bit TOIF INTF RBIF
End ;

IV- LE TIMER :
1- Définition : Le Timer est un module intégré dans les microcontrôleurs type PIC. Il assure la
fonction comptage ou la fonction temporisation.
Le choix du mode de fonctionnement se fait par programmation du registre OPTION_REG.
 Mode compteur : le TIMER0 est un compteur modulo 256 qui permet de compter le nombre des
impulsions reçues sur la broche RA4/TOCKI.
 Mode Temporisateur : le TIMER0 est un compteur modulo 256 qui permet de compter le nombre
des impulsions d’horloge reçues sur la broche Osc1/Osc2.

2- Principe de fonctionnement :

3- Registre de contrôle :OPTION_REG :

N.L

Bit 7

Bit 6

Bit5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

RBPU

INTEDG

TOCS

TOSE

PSA

PS2

PS1

PS0

Documents technologiques pour PIC

Page :

6/10

Le tableau suivant résume les huit bits du registre OPTION_REG:
Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

Prédivision

RBPU

INTEDG

TOCS

TOSE

PSA

PS2

PS1

PS0

TMR0 WDT

Pull up

1 : RB0/INT

Timer0

Timer0

Prédiviseur

0

0

0

2

1

sur portB

active au

clock select

source edge

0

0

1

4

2

0

1

0

8

4

0

1

1

16

8

1

0

0

32

16

1

0

1

64

32

1

1

0

128

64

1

1

1

256

128

front mon
1:

(RA4)
1 : Compteur (RA4)

désactivé
0 : activé

0: Timer0

0 : front

0 : RB0/INT

montant

1:chien de

active au

1 : front

garde

descendant

(WDT)

front des

0 : Temporisateur

NB : Quand le prédiviseur est affecté au watchdog (PSA=1), le TMR0 est prédivisé par 1.

V- Les afficheurs LCD :
Les afficheurs à cristaux liquides, autrement appelés afficheurs LCD.

Bibliothèque LCD :

Lcd_Init();

Lcd_Out(ligne: byte;
colonne: byte; var texte:
string);

Lcd_Chr(ligne: byte;
colonne: byte;
caractere: byte);
Lcd_Cmd( commande:
byte);

Description
Initialiser le module LCD en
respectant les connexions déclarées
Imprime le texte sur l'écran LCD à
partir de la position spécifiée.
• ligne: la position de départ
numéro de ligne
• Colonne: la position de départ
numéro de colonne
• Texte: texte à rédiger
Afficher caractère sur l'écran LCD à
la position spécifiée.
Envoie une commande à LCD

Exemple
Lcd_Init();

Lcd_Out(1, 3, "Hello!");
// écrire texte « Hello! » sur LCD
à la position ( ligne 1, colonne 3)

Lcd_Chr(2, 3, 'i');
// écrire le caractère « i » sur LCD
à la position (ligne2, colonne3)
Lcd_Cmd(_LCD_CLEAR);
//effacer l’écran LCD

VI- Conversion Analogique Numérique : CAN ou ADC
1- Introduction : - Le PortA est un Port multiplexé en mode analogique noté (AN) et en mode numérique
noté (RA) : (RA) : mode logique (0 ou 1) ; (AN) : mode analogique (de 0 à 5V)
Pour PIC16F628A : Pour initialiser les broches du PortA en mode logique en doit configurer le
registre CMCON :=7;
Pour PIC16F876A ou PIC16F877A : Pour initialiser les broches du PortA en mode logique en doit
configurer le registre : ADCON1 :=6 ;
Pour PIC16F84A : les broches du PortA sont non multiplexées et ils sont en mode logique.
Les microcontrôleurs PIC 16F87X possèdent un module de conversion permettant de convertir une tension
analogique, appliquée sur l’un des 8 canaux (de AN0 à AN7 pour le PIC 16F877A) ou l’un des 5 canaux
(de AN0 à AN4 pour le PIC 16F876A), comprise entre Vréf - et Vréf + en une valeur numérique N de 10 bits

N.L

Documents technologiques pour PIC

Page :

7/10

2- Principe de fonctionnement :
Le convertisseur analogique-numérique (CAN ou ADC) permet de convertir une grandeur analogique
(tension Ue) en une valeur numérique (nombre N) :

3- Bibliothèque d’un CAN :
Description
ADC_Init();

Exemple
ADC_Init();

- Initialiser le module ADC de PIC.

// Initialiser le module ADC

- initialiser le module et configurer le
channel spécifié comme entrée.

var tmp : word; // tmp : valeur

ADC_Read(channel : byte)
- démarrer une opération de conversion.
: word;
- lire la tension analogique sur le channel
et le convertir en une valeur numérique

numérique de 0..1023

- lire le résultat de conversion
ADC_Get_Sample(channel uniquement.
- Remarque : Il faut initialiser le module
: byte) : word;
avant d’appeler cette fonction

var tmp : word; // tmp : valeur

tmp := ADC_READ(2);

numérique de 0..1023
tmp := ADC_Get_Sample(2);

4- Conversion d’un nombre en une chaine de caractère :
 ByteToStr :
procedure ByteToStr(nombre : byte; var chaine : array[3] of char);
Description Convertir un nombre en une chaine de caractères,
var N : byte;
txt : Sting[3] ;
N := 24;
Exemple
ByteToStr(N, txt);
// N = 24 = nombre , txt ="˽24" = 3 chaines de caractère

 Autres procédures de conversion des données :
WordToStr( )

;

IntToStr ( ) ;

5- Registre de configuration :
ADCON1 :
Bit 7

Bit 6

Bit5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

ADFM

-

-

-

PCFG3

PCFG2

PCFG1

PCFG0

 Bit « 7 » : ADFM : Justification du résultat
de la conversion sur 10 bits « ADRESH-ADRESL ».
 ADFM = 1 : justification à droite,
 ADFM = 0 : justification à gauche
 Bits « 6 : 5 : 4 » : non utilisés  lire 0.

N.L

Documents technologiques pour PIC

Page :

8/10

 Bits « 3 à 0 » : PCFG3 PCFG2 PCFG1 PCFG0 : Configuration des E/S et des tensions de références.
Les 5 broches de PORTA peuvent être configurés soit en E/S digitales, soit en entrées analogiques.
RA2 et RA3 peuvent aussi être configurées en entrée de référence.

ADCON1
AN7/RE2

AN6/RE1

AN5/RE0

AN4/RA5

AN3/RA3

AN2/RA2

AN1/RA1

AN0/RA0

-

PCFG0

-

PCFG1

-

Tension de référence

PCFG2

1
1
1
1
1
1

Port E

PCFG3

ADFM

- - -

PIC 16F876
PIC 16F877
Port A

0
0
0
0
1
1

0
0
1
1
0
1

0
1
0
1
0
1

0
0
0

A
D
D
D
D
D

A
D
D
D
D
D

A
D
D
D
A
D

A
A
D
D
A
D

A
A
A
D
A
D

A
A
D
D
A
D

A
A
A
D
A
D

A
A
A
D
A
A

×
1
0

Vréf+

Vréf-

VDD
VDD
VDD
VDD
VDD
VDD

Vss
Vss
Vss
Vss
Vss
Vss

A : entrée analogique ; D : entrée numérique ; - : état 0 ou 1

VII- Modulation de largeur d’une impulsion : MLI ou PWM
1- Principe :
La PWM est un module intégré dans le PIC qui consiste à générer un signal carré de période constante
mais à rapport cyclique α variable. (C’est le principe d’un hacheur série)

2- Bibliothèque d’un MLI :
Description

Exemple

Initialiser le module pour générer sur la

PWM1_ Init (5000) ;

sortie CCPi un signal PWM à la fréquence f

Initialise le module à f = 5KHz

Changer le rapport α (0 < α < 1)

PWM1_Set_Duty(192) ;

α= alpha / 255 et 0 < alpha <255

 = 192 / 255 = 0.75

PWMi_Start

Démarrer le signal PWM

PWM1_Start() ;

PWMi_Stop

Arrêter le signal PWM

PWM1_Stop() ;

PWMi_Init(f)

PWMi_Set_Duty(alpha)

N.L

Documents technologiques pour PIC

Page :

9/10

VIII- Gestion d’un clavier :
Le compilateur Mikropascal Pro propose des procédures
prédéfinies pour la gestion d’un clavier matriciel :

Bibliothèque d’un clavier :
Description

Keypad_Init( );

Keypad_Key_Click( ):
byte;

Exemple
var keypadPort : byte at PORTB;
Initialiser le port pour travailler avec clavier. Keypad_Init();
// Initialiser PORTB pour
communication avec keypad
-Si une touche enfoncée :
var kp : byte;
le code est de 1 à 16.
kp := Keypad_Key_Click();
-Si aucune touche n’est actionnée (au
// kp={0,1,2,…,16}
repos) : le code est 0.

IX- Procédure prédéfinie :
1- Procédure INC ( ) ;
L’instruction N :=N+1 peut être remplacée par la procédure prédéfinie INC
Prototype
Procedure Inc (var p : longint);
Description
Incrémenter p par 1.
Exemple
p := 4; // p =4
Inc(p); // p = 5

2- Procédure DEC ( ) ;
L’instruction N :=N-1 peut être remplacée par la procédure prédéfinie DEC
Prototype
Procedure Dec (var p : longint);
Description
décrémenter p par 1.
Exemple
p := 4; // p =4
Inc(p); // p = 3

3- Procédure Delay_ms ( ) ;
Prototype
Exemple

procedure Delay_ms(time_in_ms : const dword);
Delay_ms(1000); // pause d’une seconde

4- Procédure SetBit :
Prototype
Description
Exemple
équivalence

procedure SetBit(var register : byte; bit_registre : byte);
Mettre le bit du registre à 1
SetBit(PORTB, 2); // mettre à 1 le bit N°2 du registre PORTB
L’instruction SetBit(PORTB,2) est équivalente à l’instruction : PORTB.2 :=1 ;

5- Procédure ClearBit :
Prototype
Description
Exemple
Equivalence

procedure ClearBit(var register : byte; bit_registre : byte);
Mettre le bit du registre à 0
ClearBit(PORTC,7) ; // mettre à 0 le bit N°7du registre PORTC
L’instruction ClearBit(PORTC,7) est équivalente à l’instruction : PORTC.7 := 0;

6- Procédure TestBit :
Prototype
Description
Exemple

function TestBit(register, bit_registre : byte) : byte;
Si le bit du regsitre égale 1 alors TestBit = 1 sinon alors TestBit = 0
KM:= TestBit(PORTD,3); // Si PORTD.3 = 1 alors le relais KM =1
// si PORTD = 0 alors le relais KM=0

Equivalence

If PortD.3 = 1 then KM :=1 else KM :=0 ; est équivalent à KM :=TestBit(Portd,3) ;

N.L

Documents technologiques pour PIC

Page :

10/10


Documents similaires


Fichier PDF algorithme
Fichier PDF emd licence acad 0809
Fichier PDF cours10 gif1001 h12
Fichier PDF interrupts
Fichier PDF 4d v12 4 langage
Fichier PDF 66 accord branche avril 2001


Sur le même sujet..