Le but de ce cours est d’aborder le développement de
programmes en assembleur et la mise en œuvre matérielle pour
les microcontrôleurs Microchip (PIC) de moyenne gamme (MID-
RANGE).
AUTOMATISME
Un équipement est dit automatique quand il est capable de
prendre des décisions ponctuelles sans intervention humaine.
Un automatisme comporte toujours deux parties :
Une PARTIE OPERATIVE (P.O.) dont les actionneurs
(moteurs, vérins,...) agissent dans un processus,
Une PARTIE COMMANDE (P.C.) qui coordonne les
différentes actions de la partie opérative.
Dans un automatisme numérique, la partie commande est une
commande numérique.
Le Statut est constitué des informations d'entrée de la commande
numérique.
La Commande constitue l’information de sortie de la commande
numérique.
Le calculateur élabore les commandes, en fonction du statut,
suivant une séquence d'opérations numériques.
La séquence des opérations numériques est décrite dans un
programme d'instructions.
COMMANDES NUMERIQUES
ORGANISATION FONCTIONNELLE
Le schéma synoptique suivant représente une organisation
classique de commande numérique de type VON-NEUMAN.
Mémoire
Données
(RAM)
Ports
Entrée/Sortie
Bus d'Adresse
Bus de données
Instruction
Commande
Statut
Processseur Décodeur
Donnée Donnée
moire
Programme
(EPROM)
Processeur
Le processeur lit et exécute les instructions du programme.
Les instructions sont des opérations de logique, d'arithmétique,
de test ou de transfert.
Les données sont reçues par les ports d’entrée ou stockées dans
la mémoire de données.
moire Programme
Le programme est mémorisé sous forme d'instructions
élémentaires dans une mémoire de programme non volatile.
Ces instructions sont accessibles par l’intermédiaire de leur
adresse de stockage.
Mémoire Données
Les données sont mémorisées temporairement sous forme de
mots dans la mémoire de données. Ces données sont accessibles
par l’intermédiaire de leur adresse de stockage.
Port d’Entrée/Sortie
Cette fonction échange les informations de commande et de
statut avec la partie opérative. Ces échanges sont arrangés par
l’intermédiaire d’une adresse de sélection
Bus de Données
Ce bus transfert les informations, instructions ou données, entre
des fonctions internes de la commande numérique.
Bus d’Adresse et Décodeur
L’adresse est un numéro d'ordre, émis par le processeur, qui
permet d’accéder à tous les périphériques.
Le décodeur d’adresse décode une partie du bus d’adresse pour
activer la fonction périphérique concernée.
ORGANISATION SEQUENTIELLE
L’organigramme suivant représente l'organisation séquentielle de
base des commandes numériques.
COURS « INITIATION AUX
MICROCONTROLEURS PIC DE
MICROCHIPS »
BUT DU COURS « INITIATION AUX
MICROCONTROLEURS PIC DE
MICROCHIPS »
RAPPELS SUR LES COMMANDES
NUMERIQUES
Lire Statut
Calculer Commande
Initialiser
Sortir Commande
Temporiser
Reset
Le RESET fait débuter le fonctionnement de la commande par
une phase d'initialisation.
La commande effectue la lecture du statut actuel.
D’après les informations contenues dans le statut, la commande
numérique élabore un ordre qu’elle transfert en sortie.
Enfin la commande peut effectuer une période de temporisation
avant de recommencer le cycle par une nouvelle lecture du statut.
MICROPROCESSEURS
ARCHITECTURE CLASSIQUE VON-NEUMANN
CPU
Mémoire
Programme
et
Mémoire
Donnée
Architecture Von-Neumann
L’architecture Von-Neumann utilise un seul bus pour transmettre
les instructions (programme) et les données.
Cette architecture ne permet pas de lire les instructions pendant
la lecture ou l’écriture d’une donnée.
ARCHITECTURE HARVARD
Mémoire
Programme CPU moire
Donnée
Architecture Harvard
L’architecture utilise deux bus séparés. Un bus pour les
instructions (programme) et un autre bus pour les données.
Avec cette architecture ont peut lire les instructions pendant la
lecture ou l’écriture des données (pipeline). L’architecture
Harvard est plus rapide.
MICROPROCESSEURS RISC ET CISC
Les microprocesseurs CISC (Complex Instruction Set
Computing) sont dotés d’un jeu étendu d’instructions complexes.
Ces instructions sont relativement lentes. Les microprocesseurs
CISC privilégient la puissance de traitement au triment de la
rapidité.
Les microprocesseurs RISC (Reduced Instruction Set
Computing) sont munis d’un jeu réduit d’instructions simples.
Ces instructions sont adaptées et sont très rapides.
MICROCONTROLEURS
Les Microcontrôleurs sont des circuits intégrés qui contiennent,
dans un circuit unique, toutes les fonctions d’une commande
numérique classique.
C'est-à-dire :
-le microprocesseur ;
- les mémoires de programme et de données ;
-les ports d’entrée et de sortie paralle ou série ;
-les bus de données et d’adresse ;
-d’autres périphériques (compteur/timer, convertisseurs
analogique/numérique, etc).
SEQUENCE DU PROCESSEUR
Le grafcet suivant reproduit le cycle de fonctionnement d’un
processeur :
Suite Programme
Saut Programme
Lecture Instruction
1
Transfert Données
Transfert ?
11
Test ?
Exécution calcul
Calcul ?
Début Programme
1
RESET
1
Le RESET fait débuter le processeur par la première instruction
du programme. Le processeur lit cette instruction en
sélectionnant son adresse dans la mémoire de programme.
Les instructions sont des opérations de calcul, de test ou de
transfert :
En cas de transfert, le processeur effectue un cycle de
lecture ou un cycle d'écriture ;
En cas de test, le processeur fait un choix entre deux
branches de programme ;
En cas d'opération de calcul, le processeur exécute
l'oration.
Le processeur détermine l'adresse de la prochaine instruction et
continue la séquence par la lecture de la prochaine instruction.
LANGAGE DE PROGRAMMATION
Edition de programme
Le programmeur édite, enregistre et teste le programme sur un
ordinateur équipé pour le développement du logiciel et la
programmation du microcontrôleur ou d’une mémoire non
volatile.
Les programmes peuvent être écrits à trois niveaux différents :
Langage évolué (Pascal, Basic, Langage C, etc),
Assembleur (mnémonique et opérande),
Langage machine (binaire ou hexadécimal).
Le programme binaire est transféré dans une mémoire non
volatile.
Cette mémoire et sont logiciel sont implantés sur la carte de
commande ou dans un microcontrôleur.
Microchip Technology Incorporated fabrique, entre autres, les
produits suivants :
- les microcontrôleurs picmicro®,
- des microcontrôleurs radio rfPIC,
- des microcontrôleurs dsp dspic®,
- des circuits analogiques et des interfaces,
- des circuits d’authentification keelok®,
- des eeproms séries…
L’entreprise Microchip Technology Incorporated a été fondée en
1989. Sont siège est installé à Chandler en Arizona (USA).
Elle emploie 3400 personnes.
Microchips est le premier fournisseur mondial de
microcontrôleurs 8 bits.
Les microcontrôleurs de Microchips sont commercialisés sous la
marque PIC®.
Depuis leur lancement, en 1990, plus de 3 milliards de PIC
auraient été livrés.
Il y aurait plus de 212 types de microcontrôleurs différents.
L’architecture des PICs est de type Harvard à noyau RISC.
Cette architecture reste compatible à travers une famille de 8 à 84
broches. Ce qui permet une migration aisée avec très peu de
changement dans les programmes.
Les caractéristiques avancées sont :
-des périphériques de comptage et temporisation
sophistiqués ;
-des convertisseurs analogique/numérique internes ;
-des capacités mémoires étendues pour le code et les
données ;
-des périphériques de communication évolués
(I2C™/SPI™/ USB/CAN ports et USARTs) ;
-une technologie de programmation in situ (sur carte) ;
-des mémoires Flash, EEPROM, OTP et ROM.
Les Microcontrôleurs PIC sont répartis en trois gammes en
fonction de la largeur des mots d’instructions.
- Base-Line : instruction sur 12 bits,
- Mid-Range : instruction sur 14 bits,
- High-End : instruction sur 16 bits.
ARCHITECTURE COMPLETE.
PIC16C712(REMPLACE LE PIC 16C71)
moire programme 1024*14
EEPROM data -
Ram 256 octets
Port I/O 8 (Port B) + 5 (Port A)
Boîtier 18 broches
CAN 4 entrées sur 8 bits
1 Générateur PWM 10 bits
Compteur/Timer 1 x 16 bits + 2 x 8 bits + WDT
QUI EST MICROCHIPS
LES MICROCONTROLEURS MID-
RANGE DE MICROCHIPS (PIC16CXXX)
Fréquence max 20 MHz
ICSP (programmation in situ) oui
BOR (reset à l’affaiblissement
de tension) oui
CCP (comparaison et capture
PWM) oui
PIC16F84A (REMPLACE LE PIC 16F84)
moire programme Flash 1024*14
EEPROM data 64
Ram 68 octets
Port I/O 8 (Port B) + 5 (Port A)
Boîtier 18 broches
CAN -
1 Générateur PWM -
Compteur/Timer 1 x 8 bits + WDT
Fréquence max 20 MHz
ICSP (programmation in situ) Oui
BOR (reset à l’affaiblissement
de tension) Non
CCP (comparaison et capture
PWM) Non
PIC16F877A(REMPLACE LE PIC 16F877)
moire programme Flash 8192*14
EEPROM data 256
Ram 368 octets
Port I/O 3 x 8 (Port B,C,D) + 6 (Port
A) + 3 (port E)
Boîtier 40 broches
CAN 8 entrées sur 10 bits
Comparateurs 2
1 Générateur PWM 2 x 10 bits
Compteur/Timer 1 x 16 bits + 1 x 8 bits + WDT
Fréquence max 20 MHz
Port série USART, I²C, SPI
ICSP (programmation in situ) Oui
BOR (reset à l’affaiblissement
de tension) Oui
CCP (comparaison et capture
PWM) 2
CHAMPS MEMOIRE
MEMOIRE DE PROGRAMME
1FFFh 2ko (page 3)
1800h
17FFh 2ko (page 2)
1000h
0FFFh 2ko (page 1)
08000h
07FFh 2ko (page 0)
0000h
Memory
rganization
MEMOIRE DE DONNEES
Bank 0 Bank 1 Bank 2 Bank 3
7Fh 128 o 128 o 128 o 128 o
00h
RAM INTERNE
Bank 0 Bank 1 Bank 2 Bank 3
7Fh Zone libre Zone libre Zone libre Zone libre
20h
1Fh SFR SFR SFR SFR
00h
REGISTRES SPECIAUX (SFR)
Add Bank 0 Bank 1 Bank 2 Bank 3
00h INDF INDF INDF INDF
01h TMR0 OPTION_REG TMR0 OPTION_REG
02h PCL PCL PCL PCL
03h STATUS STATUS STATUS STATUS
04h FSR FSR FSR FSR
05h PORTA TRISA
06h PORTB TRISB PORTB TRISB
07h PORTC TRISC PORTF TRISF
08h PORTD TRISD PORTG TRISG
09h PORTE PORTE
0Ah PCLATCH PCLATCH PCLATCH PCLATCH
0Bh INTCON INTCON INTCON INTCON
0Ch PIR1 PIE1
0Dh PIR2 PIE2
0Eh TMR1L PCON
0Fh TMR1H OSCCAL
10h T1CON
11h TMR2
12h T2CON PR2
13h SSPBUF SSPADD
14h SSPCON SSPATAT
15h CCPR1L
16h CCPR1H
17h CCP1CON
18h RCSTA TXSTA
19h TXREG SPBRG
1Ah RCREG
1Bh CCPR2L
1Ch CCPR2H
1Dh CCP2CON
1Eh ADRES
1Fh ADCON0 ADCON1
REGISTRE DETAT (STATUS)
Bit 7 6 5 4 3 2 1 0
IRP RP1 RP0 /TO /PD Z DC C
Symbole Fonction
CRetenue
DC Retenue décimale (pour les opérations BCD).
ZZéro
/PD Power Down
/TO Time Out (WDT)
RP0 Bit 0 de sélection de banque de registre.
RP1 Bit 1 de sélection de banque de registre.
IRP Sélection de banque de registre en accès indirect
RP1 RP0 Banque de Registre Adresse
00 Banque 0 000h—07Fh
0 1 Banque 1 080h—0FFh
1 0 Banque 2 100h—17Fh
1 1 Banque 3 180h—1FFh
RESET ET VECTEUR DINTERRUPTION
Le tableau suivant donne les adresses ou le microcontrôleur doit
trouver le programme principal et le sous-programme
d’interruption.
Source Vecteur
RESET 0000H
INTERUPT 0004H
PORT DENTREE/SORTIE PARALLELE
Pour la plupart des ports, la direction des informations (entrée ou
sortie) est contrôlée par le registre de direction TRIS.
TRISx contrôle la direction du PORTx.
Un bit à 1 pour TRISx, correspond à une entrée pour le PORTx.
Un bit à 0 pour TRISx, correspond à une sortie pour le PORTx.
La lecture d’un PORT, prend en compte le niveau logique de la
broche et non celui du registre du PORT.
JEU DINSTRUCTIONS
TRANSFERTS
MOVF f,d ;si d=0 alors W = f
;si d=1 alors f = f (permet de tester un registre)
MOVWF f ; f = W
MOVLW k ; W = #k
CLRF ; f = 0
CLRFW ; W = 0
CLRWDT ; WDT = 0
OPERATIONS
Opérations arithmétiques
ADDWF f,d ; si d=0 alors W = W + f
; si d=1 alors f = W + f
ADDLW k ; W = W + #k
SUBWF f,d ; si d=0 alors W = f - W
; si d=1 alors f = f - W
SUBLW k ; W = #k – W
INCF f,d ; si d=0 alors W = f + #1
; si d=1 alors f = f + #1
DECF f,d ; si d=0 alors W = f - #1
; si d=1 alors f = f - #1
Opérations logiques
ANDWF f,d ; si d=0 alors W = W & f
; si d=1 alors f = W & f
ANDLW k ; W = W & #k
COMF f,d ; si d=0 alors W = /f
; si d=1 alors f = /f
IORWF f,d ; si d=0 alors W = W + f
; si d=1 alors f = W + f
IORLW k ; W = W + #k
XORWF f,d ; si d=0 alors W = W f
; si d=1 alors f = W f
XORLW k ; si d=1 alors W = W #k
RLF f,d ; si d=0 alors W = < f
; si d=1 alors f = < f
RRF f,d ; si d=0 alors W = f >
; si d=1 alors f = f >
BCF f,b ; bit f.b = 0
BSF f,b ; bit f.b = 1
SWAPF f,d ; échange les demi octets
SAUTS
CALL a ; appelle le sous programme à l’adresse #a
GOTO a ; saut à l’adresse #a
BTFSC f ,b ; si f.b = 0 alors sauter1 ligne
BTFSS f,b ; si f.b = 1 alors sauter1 ligne
RETFIE ; retour d’interruption
RETURN ; retour de sous-programme
RETLW k ; W = #k et RETURN
DECFSZ f,d ; DECF et si ro alors sauter1 ligne
INCFSZ f,d ; INCF et si Zéro alors sauter1 ligne
NOP ; aucune opération
SLEEP ; mode veille
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !