0% ont trouvé ce document utile (0 vote)
42 vues32 pages

ATC Uc

Le document présente les systèmes programmables, en mettant l'accent sur leur structure minimale comprenant un microprocesseur, des mémoires et des bus. Il décrit également le microcontrôleur PIC 16F877, ses caractéristiques, son architecture interne et externe, ainsi que des instructions de programmation en langage assembleur. Enfin, il propose des exercices pratiques pour manipuler les ports d'entrée/sortie et configurer le microcontrôleur.

Transféré par

b0481389
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
42 vues32 pages

ATC Uc

Le document présente les systèmes programmables, en mettant l'accent sur leur structure minimale comprenant un microprocesseur, des mémoires et des bus. Il décrit également le microcontrôleur PIC 16F877, ses caractéristiques, son architecture interne et externe, ainsi que des instructions de programmation en langage assembleur. Enfin, il propose des exercices pratiques pour manipuler les ports d'entrée/sortie et configurer le microcontrôleur.

Transféré par

b0481389
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

ATC / 2e STE

SYSTEMES PROGRAMMABLES

Environnement microinformatique minimal

Le contrôle d'un processus technique fait souvent Horloge Mémoire de Mémoire de


appel à un dispositif de traitement programmable programme données
Un système programmable comporte deux
éléments complémentaires indissociables : Bus d’adresse
 Logiciel : le programme qui décrit la gestion du
processus technique Bus de données
 Matériel : le dispositif électronique, à base de
µP, qui héberge le programme et lui donne vie Bus de contrôle

Microprocesseur
Ci-contre, la structure d’un système

( CPU )
programmable minimal :
Interfaces d’E/S
1. Microprocesseur (ou CPU pour Central série et parallèle
Processing Unit)
Le μP exécute le programme situé dans la
mémoire de programme .Toute l’activité du µP est
cadencée par une horloge Processus technique :
capteurs, actionneurs…
2. Les bus

Un bus est ensemble de fils destiné à véhiculer les données entre les différents composants du système. On
distingue :
 Le bus de données : à travers lequel transitent les données
 Le bus d’adresse : à travers lequel le μP applique l’adresse de la donnée à lire ou à écrire
 Le bus de contrôle : à travers lequel le µP dialogue avec le composant adressé

3. Les mémoires

Ce sont des composants chargés de conserver des contenus. En fonction des propriétés des mémoires, on peut
les classer selon l'arborescence suivante :

Lecture écriture volatile


RAM Oui oui Oui
ROM Oui Non (programmée une seule fois au moment de la fabrication) Non
PROM Oui Programmable une seule fois par l'utilisateur Non
Effaçable électriquement à l'aide d'une broche spécifique et
EEPROM Oui Non
reprogrammable

 Une mémoire volatile perd son contenu à la coupure de l'alimentation


 En principe, la RAM sert de mémoire de données tandis que la ROM sert de mémoire de programme
 Une variante de l'EEPROM est la mémoire FLASH qui est rapide et accepte d'être reprogrammée un grand
nombre de fois

4. Périphériques

Ils ont pour rôle de dialoguer avec le processus à gérer


 Interface parallèle : les données sont transmises par paquets de 8, 16 …bits
 Interface série : les données sont transmises bit pat bit sur un fil unique (exemples : USB, RS232, RS485)
ATC / 2e STE

Le microcontrôleur PIC 16F877

Généralités
Fréquence
Le µC se présente sous la forme d’un circuit intégré Oscillateur
réunissant tous les éléments d’une structure à base de µP
ainsi que certains modules auxiliaires :
RESET µP ROM RAM Chien de
 Un µP (CPU) FLASH EEPROM garde
 De la mémoire de données (RAM, EEPROM)
 De la mémoire de programme (FLASH, EEPROM)
 Des ports pour la connexion des entrées/sorties
 Des timers pour générer des impulsions, compter des Bus de données, d’adresse et de contrôle
évènements, mesurer des fréquences…
 Des CAN pour le traitement des signaux analogiques
Timer CAN Ports
 Un chien de garde : qui détecte s'il y a un problème logiciel et
d’E/S
provoque un RESET

Aujourd’hui on trouve les µC presque partout : cafetière,


réfrigérateur, four à micro ondes, téléviseur, téléphone portable, imprimante, scanner, voiture (airbags,
climatisation, alarme…)…

Architecture externe (brochage) du PIC 16F877 de Microchip

La popularité du 16F877 vient de sa facilité de mise en œuvre et la disposition d'un environnement de


développement complet totalement gratuit : MPLAB.

 L’alimentation du circuit est assurée par les


pattes VDD = +5V et VSS = 0V

 OSC1 et OSC2 : broches qui reçoivent un


quartz ou un circuit RC pour l’horloge interne

 MCLR (Master Clear Reset) : broche de remise à


zéro, active au niveau bas (0 V)

 RA0 à RA5 : 6 broches E/S du port A


RB0 à RB7 : 8 broches E/S du port B
RC0 à RC7 : 8 broches E/S du port C
RD0 à RD7 : 8 broches E/S du port D
RE0 à RE2 : 3 broches E/S du port E
ATC / 2e STE

Mise en œuvre (Montage minimum)

Ici un montage minimum avec :


 Alimentation du composant (VDD = +5V et VSS = 0V)
 Pilotage par quartz, ici de 4 MHz (OSC1 et OSC2)
 RESET manuel par un bouton poussoir
 RESET automatique à chaque mise sous tension. En effet, le
condensateur initialement déchargé (MCLR = 0), se charge
jusqu'à VDD (MCLR = 1)

Architecture interne

Les caractéristiques principales du 16F877 sont :

 Une mémoire programme de type flash de 8K mots de 14 bits de h'0000' à h'1FFF' (1K = 210 = 1024)
 Une mémoire RAM constituée :
 96 registres de configuration ayant des fonctions spéciales
 368 registres d’espace utilisateur
 Une mémoire EEPROM Data de données de 256 octets
 3 Timers avec prédiviseur programmable : 2 timers 8 bits TMR0, TMR2 et un autre 16 bits TMR1
 Un chien de garde WDT
 CAN 10 bits à approximations successives à 8 entrées multiplexées
 33 Entrée-Sortie bidirectionnelles réparties sur 5 ports : PORTA à 6 bits, PORTB, PORTC, PORTD à 8 bits et
PORTE à 3 bits
 1 registre de travail (accumulateur) W à 8 bits.
 Bus DATA sur 8 bits.
 Jeu de 35 instructions de durée 1 ou 2 cycles.
 Plusieurs sources d'interruption
 Autres modules : USART pour transmission série, interface I2C, 2 modules pour PWM…
ATC / 2e STE

La RAM de données

Page 0 Page 1 Page2 Page 3


ATC / 2e STE

Programmation du PIC 16F877 par le langage assembleur


Jeu d'instructions du 16F877

{W, F ? d} signifie que le résultat va soit dans W si d=0 ou w, soit dans F si d= 1 ou f

INSTRUCTIONS OPERANT SUR UN REGISTRE Indicateurs Cycles


ADDWF F, d W+F  {W, F ? d} C, DC, Z 1
ANDWF F, d W AND F  {W, F ? d} Z 1
CLRF F 0F Z 1
CLRW 0W Z 1
CLRWDT 0  WDT TO', PD' 1
COMF F, d Complémente F  {W, F ? d} Z 1
DECF F, d Décrémente F  {W, F ? d} Z 1
DECFSZ F, d Décrémente F  {W, F ? d} et saut si 0 1(2)
INCF F, d Incrémente F  {W, F ? d} Z 1
INCFSZ F, d Incrémente F  {W, F ? d} et saut si 0 1(2)
IORWF F, d W OR F  {W, F ? d} Z 1
MOVF F, d F  {W, F ? d} Z 1
MOVWF F W  F 1
RLF F, d Rotation à gauche de F à travers C  {W, F ? d} C 1
RRF F, d Rotation à droite de F à travers C  {W, F ? d} 1
SUBWF F, d F – W  {W, F ? d} C, DC, Z 1
SWAPF F, d Permute les 2 quartets de F  {W, F ? d} 1
XORWF F, d W XOR F  {W, F ? d} Z 1
INSTRUCTIONS OPERANT SUR UN BIT
BCF F, b Mise à 0 du bit b du registre F 1
BSF F, b Mise à 1 du bit b du registre F 1
BTFSC F, b Teste le bit b de F et saut si 0 1(2)
BTFSS F, b Teste le bit b de F et saut si 1 1(2)
INSTRUCTIONS OPERANT SUR UNE DONNEE
ADDLW K W+K  W C, DC, Z 1
ANDLW K W AND K  W Z 1
IORLW K W OR K  W Z 1
MOVLW K K W 1
SUBLW K K–W  W C, DC, Z 1
XORLW K W XOR K  W Z 1
INSTRUCTIONS GENERALES
CALL L Branchement à un sous-programme de label L 2
GOTO L Branchement à la ligne de label L 2
NOP Pas d’opération 1
RETURN Retour d'un sous-programme 2
RETFIE Retour d'interruption 2
RETLW K Retour d'un sous-programme avec K dans W 2
SLEEP Mode standby TO', PD' 1
ATC / 2e STE

 Accès à la RAM

Registre STATUS IRP RP1 RP0 T0 PD Z DC C

Les bits RP1 et RP0 du registre STATUS permettent la sélection des pages de la RAM

RP1 RP0 Page sélectionnée


0 0 Bank 0
0 1 Bank 1
1 0 Bank 2
1 1 Bank 3

 Expression des nombres

L’assembleur considère les nombres dans la base indiquée par la spécification adjointe

Base Indicateur Exemple


Décimal d d’27’
Hexadécimal h h’1B’ ou 0x1B
0x 1Bh

Binaire b b’00011011’

Exercice
Registre Bank
En utilisant le plan d’organisation de la RAM,
trouver la page concernée PORTA ………….
TRISA ………….
TMR0 ………….
ADCON1 ………….

Exercice

Question Réponse

BCF 0x03, 6 ou bien BCF STATUS, RP1


Sélectionner la page 0
…….……………... ……………………….

………………………………
Sélectionner la page 2
………………………………

…………… ; par CLRW


autrement
…………… ; par AND
Mettre à 0 le registre W
ou encore
…………… ; charger la valeur 0 dans W
ATC / 2e STE

………………. ; copier W dans un registre, d’adresse …... par exemple


………………. ; Incrémenter le registre avec résultat dans W
ou mieux
Incrémenter le registre W
………………. ; incrémenter W par addition

…………… ; RAZ du registre PORTB


…………… ; forcer le bit b0 à 1
Charger le registre PORTB autrement
par le mot 00000001
………………. ; charger l’octet ‘00000001’ dans W
…………… … ; copier W dans PORTB

Copier le contenu de PORTA ………………. ; copier le contenu de PORTA dans W


dans PORTB …………… … ; copier W dans PORTB

 Les ports d’entrées/ sortie

PORTA : pin RA0 à RA5


PORTB : pin RB0 à RB7
PORTC : pin RC0 à RC7
PORTD : pin RD0 à RD7
PORTE : pin RE0 à RE2

 La direction des données sur les ports est programmée à travers les registres TRISA, TRISB, TRISC, TRISD et
TRISE (0 sortie 1 entrée)

Exemples : Mettre la valeur ‘00000011’ dans TRISB configure les broches RB0 et RB1 en entrée et les autres en sortie

 La manipulation des données (lecture/écriture) sur les ports est programmée à travers les registres PORTA,
PORTB, PORTC, PORTD et PORTE

Exemple : bsf PORTC, 7  positionne la broche RC7 à 1 (écriture)


movwf PORTC  permet de sortir le contenu de w sur PORTC (écriture)
movf PORTC, w  récupère l’état de PORTC dans w (lecture)
ATC / 2e STE

Exercice Donner le programme assembleur réalisant la configuration suivante :

RD0 RB0
RD1 RB1 ………………………….. ; activer banque 1
RD2 RB2
RD3 RB3 …………………………..
RD4 RB4
RD5 RB5 ………………………….. ; configurer port B
RD6 RB6
RD7 PIC RB7 ………………………….. ; configurer port C
16F877 …………………………..
RA0 RC0
RA1 RC1 ………………………….. ; configurer port D
RA2 RC2
RA3 RC3 …………………………..
RA4 RC4
RC5 ………………………….. ; configurer port E
RE2 RC6
RC7 ………………………….. ; configurer port A
…………………………..
TRISA = ……………………………… ………………………….. ; activer banque 0
TRISB = ……………………………… …………………………..
TRISC = ………………………………
TRISD = ………………………………
TRISE = ………………………………

Exercice

 Configurer le port D ainsi que les 5 bits de poids faible du port C conformément à la figure
 Allumer les 2 LED supposées connectées aux broches RC3 et RC4 de PORTC
Lire le contenu de PORTD pour le stocker dans le registre d’adresse 7F

MSB ........................................ ; activer page 1


Pic PORTC
...........................................
16F877 LSB
........................................... ; configurer le port C
PORTD ...........................................
........................................... ; configurer le port D
...........................................
.......................................... ; retour à page 0
TRISC ……………………………………… ...........................................
........................................... ; allumer les 2 Leds du portC
TRISD ……………………………………….
...........................................
........................................... ; lire et ranger la valeur du port D
........................................... ; dans le registre 7F
ATC / 2e STE Lycée technique jbh

Exercice

Au repos les LEDs sont éteintes. Début


Une action sur le bouton poussoir S1 allume toutes les LEDs.
Une action sur le bouton poussoir S0 éteint toutes les LEDs. …………………………

Fournir l’organigramme et le programme


…………………………
5V

RB0
S0 non
RC0 RB1 …..
.
.
5V
PIC 16F877
……………………
S1
RC1 .

RB7
non
…..

TRISB ………………………………………

TRISC ……………………………………….

........................................... ; page 1
.......................................
........................................... ; configurer PORTB en sortie
........................................... ; configurer PORTC
...........................................
........................................... ; page 0
...........................................

boucle1 ........................................... ; éteindre les LEDs


boucle2 ........................................... ; Si RC1 = 1 (signifiant si S1 appuyé)
........................................... ; sinon retester si RC1 = 1
........................................... ; si oui allumer les LEDs
...........................................
boucle3 ........................................... ; Si RC0 = 1
........................................... ; sinon retester si RC0 = 1
........................................... ; Se brancher à ‘boucle1’ pour éteindre de nouveau
ATC / 2e STE Lycée technique jbh

Techniques de comparaison

Bits indicateurs d'état Z et C du registre STATUS

Le bit Z est l'indicateur Zéro; Z = 1 si le résultat d'une opération arithmétique ou logique est zéro.
Z = 0 si le résultat est différent de zéro

Le bit C est l'indicateur de signe; C = 1 si le résultat d'une soustraction est positif


C = 0 si le résultat est négatif

F1 et F2 étant deux registres, compléter ce tableau :

Question Réponse
……………………………… ; copier F1 dans W puis contrôler le bit Z
Si F1 = 0
………………………………

……………………………… ; effectuer l'opération F1-F2 puis contrôler le bit Z


Si F1 = F2 ………………………………
………………………………

……………………………… ; effectuer l'opération F1-F2 puis contrôler le bit C


Si F1 < F2 ………………………………
………………………………

……………………………… ; effectuer l'opération F1-0 puis contrôler le bit C


………………………………
Si F1  0
………………………………

 Temporisation et sous-programme

Un sous-programme est une séquence d’instructions chargée d’effectuer un traitement particulier.


Les sous-programmes permettent ainsi de décomposer un programme en plusieurs sous-parties

Programme principal Sous-programme


………………. X ………………..
……………….. ………………..
CALL X ………………..
……………….. RETURN
………………..
CALL X
………………..

CALL : instruction d’appel du sous-programme


RETURN : instruction de retour au programme appelant
ATC / 2e STE Lycée technique jbh

Exercice

Faire clignoter à, 1 Hz, les 8 LED (à la fois) supposées montées sur PORTB
On suppose déclaré un sous-programme "tempo" qui réalise une temporisation de 0,5 s

loop …………………….. ; Eteindre les LED


…………………….. ; Temporiser 0,5 s
…………………….. ; Allumer les LED
……………………..
…………………….. ; Temporiser 0,5 s
…………………….. ; répéter

Variante utilisant l’instruction comf F, d

…………………….. ; Eteindre les LED


loop …………………….. ; Temporiser
…………………….. ; complémenter PORTB
…………………….. ; répéter

Exercice

Faire clignoter la LED du montage suivant ; le bouton permet de lancer les clignotements
Réaliser la temporisation par une boucle de retard (temporisation logicielle) et la confier à un sous-programme

RB1

VDD
RB5
ATC / 2e STE Lycée technique jbh

Programme
N equ 0x20 ; Initialisation des variables

........................... ; page 1
Début ...........................
........................... ; configurer port B
Configurations
...........................
........................... ; page 0
...........................
............
............ test ........................... ; tester si RB5 = 1 et saut si vrai
... oui ........................... ; revenir à ‘test’
....................... lab ........................... ; allumer
.... ........................... ; appel du sous-programme ‘tempo’
........................... ; éteindre
......................
..... ........................... ; temporisation

.......................... ........................... ; revenir à ‘lab’


.
tempo Movlw 0xFF ; sous prog. de temporisation
...................... movwf N
..... boucle Decfsz N, f
Goto boucle
Return

Sous-programme de temporisation

tempo

NFF
tempo ........................... ; N  FF
...........................
loop ........................... ; décrémente N et test si N=0
N  N-1 ........................... ; sinon retour à l’étiquette ‘loop’
return ; retour au programme principal
non
N=0

retour
ATC / 2e STE Lycée technique jbh

Durée de temporisation du sous-programme

La fréquence f de fonctionnement interne du PIC est le quart de celle du quartz soit f = Fosc /4

 Pour un quartz de Fosc = 20 MHz  f = 5 MHz  1 cycle = 1/f = 0.2 µs


 Pour un quartz de Fosc = 4 MHz  f = 1 MHz  1 cycle = 1 µs

 Pour un quartz de 4MHz, 1 cycle instruction = 1μs


 Toutes les instructions du sous prog. prennent 1 cycle sauf goto et return qui en prennent 2

La temporisation est approximativement :


…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………

Multiples durées de temporisation

Augmenter la durée de temporisation peut être obtenu par imbrication des boucles de retard

tempo ...........................
...........................
loop ........................... Durée T = …………… avec un quartz de ……………
...........................
return

tempo1 ...........................
...........................
loop1 ...........................
Durée T1 = ……………
...........................
...........................
return

tempo2 ...........................
...........................
loop2 ...........................
........................... Durée T2 = ……………
...........................
return
ATC / 2e STE Lycée technique jbh

 Le module Timer 0

 Le Timer 0 est un compteur 8 bits qui peut servir de temporisateur (timer) ou de compteur d’évènements
 TMR0 est un registre associé au Timer 0

Horloge T0CS PSA


RA4
externe Ft 8
TMR0
Fosc/4 TOIF
Prédiviseur
Fosc /4

Horloge interne
PS2 PS1 PS0

Configuration

Timer 0 est configuré par le registre OPTION_REG


Registre OPTION_REG
RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
(pages 1 et 3)

 L’horloge peut être interne ou externe


T0CS = 0  horloge interne (de fréquence Fosc/4)
T0CS = 1  horloge externe appliquée à la broche RA4

 On peut ou non utiliser le prédiviseur.


PSA = 0  le prédiviseur est affecté au timer TMR0
PSA = 1  le prédiviseur est affecté au Watchdog WDT

Le facteur de division de la fréquence est fixé par les bits PS2, PS1 et PS0

PS2 PS1 PS0 000 001 010 011 100 101 110 111

Division de fréquence de TMR0 par 2 4 8 16 32 64 128 256

Timer 0 en mode timer

Dans ce mode, Timer 0 est piloté par l’horloge interne du microcontrôleur et sert de temporisateur
La durée de temporisation est T = Tc.Prédiviseur.(256 – TMR0)
Tc : durée d’un cycle horloge
Prédiviseur : valeur de prédivision
TMR0 : valeur de départ du registre TMR0

Fosc Tc Tc.Prédiviseur
/4 Prédiviseur Timer 0

Temporisation par scrutation du débordement du Timer 0

Au débordement du timer (passage de FF à 00), le bit TOIF du registre INTCON passe à 1


Registre INTCON
GIE PEIE TOIE INTE RBIE TOIF INTF RBIF
(pages 0, 1, 2 et 3)
ATC / 2e STE -

Exercice

On désire obtenir une temporisation de 10 ms, trouver le mot de configuration(OPTION_REG) et la valeur initiale de TMR0.
On donne Fosc = 4 MHz
Ecrire, ensuite, un sous-programme qui met en œuvre cette temporisation en scrutant le bit TOIF

En mode timer, on utilise l’horloge interne : T0CS = ….


Et si on choisit une prédivision = …….., le mot de configuration sera :

RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0


OPTION_REG
….. ….. ….. ….. ….. ….. ….. …..

Avec un quartz de Fosc = 4MHz, la période du signal de l’horloge interne est ……….
………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………
Sous-programme de temporisation de 10 ms par scrutation du bit TOIF
..
……….……….. ; configurer Timer 0 via OPTION_REG
………………...
..
tempo10ms ........................... ; valeur de départ du registre TMR0
...........................
........................... ; baisser le drapeau càd mettre TOIF = 0
attente ........................... ; tester si TOIF = 1
........................... ; sinon revenir à ‘attente’
........................... ; retour au programme principal

Exercice
Donner la valeur initiale de TMR0 et trouver le mot de configuration(OPTION_REG) pour obtenir la temporisation maximale
possible. On donne Fosc = 4 MHz
Ecrire, ensuite, un sous-programme qui met en œuvre cette temporisation
………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………

RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0


OPTION_REG
….. ….. ….. ….. ….. ….. ….. …..
Sous-programme de temporisation maximale
..
……….……….. ; configurer Timer 0 via OPTION_REG
………………...
..
tempomax ........................... ; valeur de départ du registre TMR0
........................... ; baisser le drapeau càd mettre TOIF = 0
attente ........................... ; tester si TOIF = 1
........................... ; sinon revenir à ‘attente’
........................... ; retour au programme principal
ATC / 2e STE -

 Le module WDT Watchdog Timer ou chien de garde

C’est un compteur 8 bits incrémenté par une horloge indépendante de l'horloge système (même si le µC est
en mode sleep). Lorsqu’il déborde (après 18 ms), deux situations sont possibles :
 Si le µC est en fonctionnement normal, cela provoque un RESET.
 Si le µC est en mode SLEEP, cela provoque un WAKE-UP (l’exécution du programme reprend)

Configuration
Registre OPTION_REG
RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
(pages 1 et 3)

Il est possible d'augmenter la durée par utilisation du prédiviseur (celui partagé avec le timer 0). Le coefficient
de prédivision est fixé par les bits PS0, PS1 et PS2
 PSA = 0  le prédiviseur est affecté au timer TMR0
 PSA = 1  le prédiviseur est affecté au Watchdog WDT

Le coefficient de prédivision de la fréquence est fixé par les bits PS2, PS1 et PS0

PS2 PS1 PS0 000 001 010 011 100 101 110 111

Division de fréquence par 1 2 4 8 16 32 64 128

Le WDT est activé par la directive __CONFIG _WDT_ON

Le mode SLEEP

Dans ce mode, l'horloge système est arrêtée ce qui suspend l'exécution du programme.
Pour sortir du mode SLEEP et donc continuer l’exécution, il faut provoquer un WAKE-UP par :
 Un RESET externe dû à l'initialisation du PIC; dans ce cas, l’exécution recommence
 Ou par un débordement du chien de garde WDT s’il est activé; dans ce cas, l’exécution continue

Temporisation par le WDT combiné au mode Sleep

On met le µC dans le mode Sleep ; le programme est alors suspendu et reprendra après débordement du WDT.

Exercice

Faire clignoter une LED montée sur la ligne RC0

On optera pour une prédivision par ……….. donc PSA = …….. et PS2 PS1 PS0 = ………..….

Donc RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0


OPTION_REG
….. ….. ….. ….. ….. ….. ….. …..

La durée du WDT étant de ………………………


Avec le prédiviseur elle devient …………………………………
ATC / 2e STE

……………………………… ; activer WDT


..
………………… ; configurer WDT via OPTION_REG  tempo=……….
…………………
..

loop ............................ ; allumer la LED


............................ ; passer en mode sleep. Réveil dans ……….… par débordement de WDT
............................ ; éteindre la LED
............................ ; passer en mode sleep. Réveil dans …………. par débordement de WDT
goto loop

Durées possibles du WDT

Taux de
PS2, PS1, Mot de configuration Durée indicative
PSA prédivision du
PS0 (OPTION_REG)
WDT
1 000 …….. ……………………………… ……………

1 001 …….. ……………………………… ……………

1 010 …….. ……………………………… ……………

1 011 …….. ……………………………… ……………

1 100 …….. ……………………………… ……………

1 101 …….. ……………………………… ……………

1 110 …….. ……………………………… ……………

1 111 …….. ……………………………… ……………

Implantation du GRAFCET dans un microcontrôleur

Le système est une perceuse automatique simple. Lorsque la pièce à usiner est en place, un appui sur le bouton M
lance le cycle : la machine descend jusqu'à Cb puis remonte pour s'arrêter en Ch

RB1 Ch
RB2 Cb
RB3 hP
RB4 M

PIC 16F877 RC0 KD (contacteur descente de la broche)


RC1 KM (contacteur montée de la broche)
RC2 KT (contacteur rotation de la broche)

Fournir le GRAFCET, le traduire en organigramme puis en un programme assembleur pour le microcontrôleur PIC16F877.
ATC / 2e STE

Début

Configurations

RB3=1
1
oui …………
………… …………
…… …………
2 …….. …… ...
oui

………. …………
…………
........
3 …….. ........
oui
........
………
...
........ …………
........
oui
........
...

bcf STATUS, RP1 ; page 1


bsf STATUS, RP0
……………………. ; configurer PortB
…………………….
……………………. ; configurer PortC
bcf STATUS, RP0 ; page 0
bcf STATUS, RP1

test1 ……………………. ; si RB3 = 1


…………………….
……………………. ; si RB4 = 1
…………………….
……………………. ; RC0  1
……………………. ; RC2  1
test2 ……………………. ; si RB2 = 1
…………………….
……………………. ; RC0  0
……………………. ; RC2  0
……………………. ; RC1  1
test3 ……………………. ; si RB1 = 1
…………………….
……………………. ; RC1  0
……………………. ; recommencer
ATC / 2e STE

 Les interruptions

Une interruption provoque l’arrêt du programme principal pour aller exécuter un sous-programme, dit
d'interruption, qui se trouve à l’adresse 0004.
A la fin de cette procédure, le microcontrôleur reprend le programme principal à l’endroit où il l’a laissé.

Sources d'interruption

Interruption Source d’interruption Bit de Flag Interruption


validation périphérique
TOI Débordement de Timer0 TOIE TOIF Non
INT Front sur la broche RB0/INT INTE INTF Non
(le front de déclenchement est configuré par le bit INTEDG)
RBI Front sur une broche RB4-RB7 RBIE RBIF Non
ADI Fin de conversion A/N ADIE ADIF Oui
TMR1I Débordement de Timer1 TMR1E TMR1F Oui
TMR2I Timer2 a atteint la valeur maxi TMR2E TMR2F Oui
EEI Fin d’écriture en EEPROM EEIE EEIF Oui

 Toutes les interruptions peuvent être validées/interdites à la fois par le bit GIE
 Chaque interruption peut être validée/interdite par son bit de validation individuel
 Un bit drapeau (flag) permet de savoir si l’évènement déclenchant l’interruption arrive

L’interruption INT

Cette interruption externe arrive via la broche RB0/INT, sa mise en œuvre nécessite de :

 Mettre à 1 le bit GIE pour l’autorisation globale de toutes les interruptions


 Mettre à 1 le bit INTE afin d’autoriser l’interruption sur RB0/INT.
 Choisir le front (montant ou descendant) qui déclenche l’interruption par le bit INTEDG du registre
OPTION_REG

Le bit INTF (flag) est un indicateur, il est mis à 1 si une interruption arrive sur RB0/INT. Il doit être remis à 0
dans le programme de traitement de l'interruption.

Registre INTCON GIE EEIE T0IE INTE RBIE T0IF INTF RBIF
ATC / 2e STE

Exercice : mise en œuvre de l’interruption INT

Il s’agit d’alerter les responsables en cas de danger autour de la perceuse de l’exercice traité plus haut : en cas d’anomalie
signalée par le détecteur D sur la broche RB0, la sirène S montée sur RC3 entre en action

On va charger le programme principal de l’opération de perçage et la routine d’interruption du traitement de


l’anomalie

RB1 Ch
RB2 Cb
RB3 hP
RB4 M
RB0 D (Détecteur d’anomalie)

RC0 KD (contacteur descente de la broche)


PIC 16F877
RC1 KM (contacteur montée de la broche)
RC2 KT (contacteur rotation de la broche)
RC3 S (Sirène)

Configuration de l’interruption INT (sur RB0)

Registre bit Action


INTCON GIE = 1 Autorisation générale de toutes les interruptions
INTCON INTE = 1 Autorisation de l’interruption INT (sur RB0)
OPTION_REG INTEDG = 1 Choix du front montant sur RB0

ORG 0000
goto depart

ORG 0004
........................... ; déclencher la sirène
Sous-prg
........................... ; remettre à 0 le flag INTF d’interruption
........................... ; retour au prog.principal

depart ..
........................... ; configurer l’interruption
Prog.principal
...........................
...........................
..
ATC / 2e STE

Exercice : Examen national 2018, session normale


ATC / 2e STE
ATC / 2e STE

Exercice : Examen national 2018, session de rattrapage


ATC / 2e STE

Exercice : Examen national 2019, session de rattrapage


ATC / 2e STE
ATC / 2e STE

Exercice : Examen national 2021, session normale


ATC / 2e STE
ATC / 2e STE
ATC / 2e STE

Exercice : Examen national 2022, session normale


ATC / 2e STE
ATC / 2e STE
ATC / 2e STE

Vous aimerez peut-être aussi