Professional Documents
Culture Documents
mid-range pic16fxxx
Eric Nativel
IUT Nmes - GEII S2
Anne universitaire 2014 2015
usb
Bus de donnes
cran Bus dadresse
Bus de contrle
srie
clavier, souris
parallle
stockage de masse ethernet ->uC pic
Processeur
CPU : Central Unit Processor == unit de traitement de donnes
== cerveau de tout systme informatique
gre et contrle les oprations arithmtiques et logiques des
processus informatiques
Ne comprend que le langage binaire == suite de codes binaires
uniques pour 1 type de processeur donn
Architecture CISC : jeu dinstructions puissantes non limits, temps
dexcution variable
Architecture RISC : jeu dinstructions rduits simple, temps dexcution
garanti et optimis
Algorithme cod en assembleur premier langage informatique :
Assembleur correspondance mnmonique vers code binaire
Ex: LD 0x12,w
bas niveau -> langage C, langage volu
Ex : printf(coucou);
retour
Bus
Bus dadresse : permet de slectionner un
composant selon son adresse sur le
systme
Bus de contrle : permet de contrler ces
transferts
Bus de donnes : vhicule les donnes
entre les diffrents composants du
systme
retour
Microcontrleur / Microprocesseur
Microcontrleur = processeur + mmoires
+ priphriques (module dinterface)
Microcontrleur : pic16f877
Microcontrleur : pic16f877
structure pic16f877
Structure interne : pic16f877
Priphriques
Mmoires
CPU
Horloge =
Cur
Registres permettent :
de configurer luC et les
priphriques en positionnant des
bits (criture)
davoir une info sur ltat dun
priphrique ou le uC (lecture)
Les entres / sorties tout ou rien
Broches du pic sont multifonctions
Pic 16f877 : 33 I/Os TOR, rparties sur 5 ports A (6), B(8), C(8), D(8) et E(3)
Les broches sont bidirectionnelles, pas simultanment !!
Niveau logique tension (niveau TTL)
Niveau logique ou tat 1 correspond une tension en entre ou en
sortie de 5V
Niveau logique ou tat 0 correspond une tension en entre ou en
sortie de 0V
2 registres (8 bits) par port grent les broches dI/O individuellement :
TRISA, TRISB, TRISC, TRISD et TRISE : grent le sens des broches,
configuration dune broche en entre ou en sortie
PORTA, PORTB, PORTC, PORTD et PORTE : crit ou lit ltat dune broche
Mmoire
de donnes
sortie
Led
Techniques en C :
Masque : opration pour extraire un ou plusieurs bits dans un ensemble binaire
Utilisation des oprateurs bit bit &(ET) et | (OU)
si var contient 13 ou 0b00001101
var & 4 quivaut var & 0b00000100 : rsultat vaut 0b0000100 (on
ne garde que le bit 3)
Dcalage : oprateur pour effectuer un dcalage vers la droite >> ou la
gauche << dun certain nombre de rang
si var contient 13 ou 0b00001101
var << 2 : rsultat vaut 0b00110100, on dcale le contenu de var de
2 bits vers la gauche
Exemple de code
#include <htc.h>
#define _XTAL_FREQ 4000000 // dclaration horloge 4 MHz
__CONFIG(WDTE_OFF & LVP_OFF & FOSC_HS); // configuration des fusibles
void main(void)
{
TRISA=0xF0; // configuration : broches RA5 entre, RA0 RA4
sortie
while(1) // boucle infinie
{
PORTA=0x0D; // broche RA0, RA2, RA3 mis 1
__delay_ms(500);
if(PORTAbits.RA5==1) // si on impose un tat 1 sur RA5
PORTAbits.RA0=0; // RA0 mis 0
}
}
Fonctionnalits spciales
Bits de configuration hors zone mmoire (0x2007)
Information fournie lors de la programmation de la cible seulement
Directive mettre dans le code source
Instructions
Horloge fixe traitement d1 instruction
Frquence dhorloge de DC Fclock_max (20 MHz)
1 instruction est dcode en 4 temps (4*Tosc) =
1 temps de cycle (1 Tcy)
Timer 2 : fonctionne par comparaison entre TMR2 = registre de 8 bits et PR2 = registre
de 8 bits
! comptage de 0 255
Timer0
Configuration de OPTION_REG
Possibilit horloge externe sur RA4
Pr-diviseur (pr): multiplication du Tcy
Pr-diviseur partag avec le chien de
garde
(watchdog)
Calcul de valeur de TMR0 pour
rebouclage
tv=TMR0*Tcy*pr
Timer0 : option register
Ex : OPTION_REG = 0x01;
horloge interne
pr-diviseur associ Timer0
pr-division 4
Si Horloge fixe 4 MHz
Si temps de comptage Tv = 500 s
!TRM0 = 125
Timer1
TMR1 = TMR1L+TMR1H*256
Timer2
Fonctionne par comparaison entre le registre
TMR2 et PR2
Lors d1 galit ! remise 0 du registre
TRM2
Prsence dun post-diviseur : activation du
drapeau TMR2IF retarde (voir chapitre
interruption)
Ex :
horloge 4 MHz
T2CON = 0x05;
PR2 = 125;
La frquence de remise 0
de TMR2, Fraz= 2 kHz
Exemples de code
#include <htc.h> #include <htc.h>
#define _XTAL_FREQ 4000000 #define _XTAL_FREQ 4000000