Presentation Pic
Presentation Pic
par
Chafik ANDALOUSSI
1
Chafik ANDALOUSSI mardi 29 novembre 2022
2
Chafik ANDALOUSSI mardi 29 novembre 2022
1
29/11/2022
3
Chafik ANDALOUSSI mardi 29 novembre 2022
4
Chafik ANDALOUSSI mardi 29 novembre 2022
2
29/11/2022
5
Chafik ANDALOUSSI mardi 29 novembre 2022
3
29/11/2022
8
Chafik ANDALOUSSI mardi 29 novembre 2022
4
29/11/2022
Exemple : PIC16F84A
- 1 Ko de ROM,
- 68 octets de RAM,
- 64 octets de ROM,
- 13 entrées sorties,
- 10 MHz,
- un timer,
- 4 sources d’interruption
10
Chafik ANDALOUSSI mardi 29 novembre 2022
5
29/11/2022
11
Chafik ANDALOUSSI mardi 29 novembre 2022
6
29/11/2022
PIC16F877A
-14,3 Ko de ROM,
- 368 octets de RAM,
- 256 octets d’EEPROM,
- 33 entrées sorties, un CAN,
- 20 MHz,
- 3 timers,
- 15 sources d’interruptions
- une USART,
- un MSSP,
- 2 comparateurs,
- 2 modules comparateur et
PWM .
13
Chafik ANDALOUSSI mardi 29 novembre 2022
14
Chafik ANDALOUSSI mardi 29 novembre 2022
7
29/11/2022
Description du PIC16F877A
16
Chafik ANDALOUSSI mardi 29 novembre 2022
8
29/11/2022
Structure orthogonale,
processeur RISC
17
Chafik ANDALOUSSI mardi 29 novembre 2022
18
Chafik ANDALOUSSI mardi 29 novembre 2022
9
29/11/2022
19
Chafik ANDALOUSSI mardi 29 novembre 2022
20
Chafik ANDALOUSSI mardi 29 novembre 2022
10
29/11/2022
21
Chafik ANDALOUSSI mardi 29 novembre 2022
22
Chafik ANDALOUSSI mardi 29 novembre 2022
11
29/11/2022
• 16F877A
23
Chafik ANDALOUSSI mardi 29 novembre 2022
Exemple:
Pour accéder au registre TRISA (adresse
85h) il faut mettre à 1 le bit RP0 de STATUS
pour un 16F84, et les deux bits RP1-RP0 à 0-
1 pour un 16F877. Nous reparlerons plus en
détail par la suite de l'adressage indirect.
Notez que certains registres (comme PCL, INTCON, …) sont accessibles de plusieurs banks,
ce ci permet de les atteindre sans devoir changer de banque. C'est le cas aussi pour des cases
mémoires pour les données (comme la zone 0Ch-4Fh est mappée sur la zone 8Ch- 8Fh pour le
16F84, et la zone 70h-7Fh est mappée sur les zones F0h-FFh, 170h-17Fh et 1F0h-1FFh). Notez
aussi que la mémoire pour les variables mémoires est de seulement 68octets pour le 16F84A
alors qu'elle est de 368octets (96+80+80+80+16+16) pour le 16F877A.
NB: Il est évident que le registre STATUS doit être accessible de toutes les banques! 24
Le rôle de chacun des registres sera expliqué
Chafik ANDALOUSSI par
mardi la suite2022
29 novembre chaque fois qu'on en aura besoin.
12
29/11/2022
Le jeu d’instructions
Le jeu d’instruction
26
Chafik ANDALOUSSI mardi 29 novembre 2022
13
29/11/2022
L’adressage
adressage littéral ;
adressage directe ;
adressage indirecte.
27
Chafik ANDALOUSSI mardi 29 novembre 2022
L’adressage littéral
(ne concerne que le registre W)
28
Chafik ANDALOUSSI mardi 29 novembre 2022
14
29/11/2022
L’adressage direct
utilisation des bits RP0 et RP1 du registre d’état
29
Chafik ANDALOUSSI mardi 29 novembre 2022
L’adressage indirect
adresse écrite dans le registre FSR
adresse lue dans le registre IND
exemple d’effaçage de la RAM de 20h à 2Fh
15
29/11/2022
L’adressage indirect
utilisation du bit IRP du registre d’état
31
Chafik ANDALOUSSI mardi 29 novembre 2022
le registre de configuration
32
Chafik ANDALOUSSI mardi 29 novembre 2022
16
29/11/2022
33
Chafik ANDALOUSSI mardi 29 novembre 2022
34
Chafik ANDALOUSSI mardi 29 novembre 2022
17
29/11/2022
35
Chafik ANDALOUSSI mardi 29 novembre 2022
36
Chafik ANDALOUSSI mardi 29 novembre 2022
18
29/11/2022
19
29/11/2022
39
Chafik ANDALOUSSI mardi 29 novembre 2022
20
29/11/2022
41
Chafik ANDALOUSSI mardi 29 novembre 2022
21
29/11/2022
43
Chafik ANDALOUSSI mardi 29 novembre 2022
22
29/11/2022
45
Chafik ANDALOUSSI mardi 29 novembre 2022
46
Chafik ANDALOUSSI mardi 29 novembre 2022
23
29/11/2022
47
Chafik ANDALOUSSI mardi 29 novembre 2022
24
29/11/2022
50
Chafik ANDALOUSSI mardi 29 novembre 2022
25
29/11/2022
51
Chafik ANDALOUSSI mardi 29 novembre 2022
Le registre de configuration
;************************************************************************
; BITS DE CONFIGURATION
;*************************************************************************
__CONFIG _HS_OSC & _WDT_OFF & _CP_OFF & _CPD_OFF & _LVP_OFF
26
29/11/2022
Le registre de configuration
Bit 10 : non utilisé
WRT : bit 9 : Autorisation d’écriture en flash
1 : Le programme peut écrire dans les zones non protégées par les bits CP1/CP0
(_WRT_ENABLE_ON)
0 : Le programme ne peut pas écrire en mémoire flash (_WRT_ENABLE_OFF)
CPD : bit 8 : Protection en lecture de la mémoire eeprom.
1 : mémoire eeprom non protégée (_CPD_OFF)
0 : mémoire eeprom protégée (_CPD_ON)
LVP : bit 7 : Utilisation de la pin RB3/PGM comme broche de programmation
1 : La pin RB3 permet la programmation du circuit sous tension de 5V
(_LVP_ON)
0 : La pin RB3 est utilisée comme I/O standard (_LVP_OFF)
BODE N : bit 6 : provoque le reset du PIC® en cas de chute de tension (surveillance de
la tension d’alimentation)
1 : En service (_BODEN_ON)
0 : hors service (_BODEN_OFF)
PWRTE : bit 3 : Délai de démarrage à la mise en service. Attention, est
automatiquement mis en service si le bit BODEN est positionné.
1 : délai hors service (sauf si BODEN = 1) (_PWRTE_OFF)
0 : délai en service (_PWRTE_ON) 53
Chafik ANDALOUSSI mardi 29 novembre 2022
Le registre de configuration
WDTE : bit 2 : Watchdog timer
1 : WDT en service (_WDT_ON)
0 : WDT hors service (_WDT_OFF)
__CONFIG_CP_OFF&_DEBUG_OFF&_WRT_ENABLE_OFF&_CPD_OFF &
_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC
54
Chafik ANDALOUSSI mardi 29 novembre 2022
27
29/11/2022
55
Chafik ANDALOUSSI mardi 29 novembre 2022
56
Chafik ANDALOUSSI mardi 29 novembre 2022
28
29/11/2022
L’écriture de variables
57
Chafik ANDALOUSSI mardi 29 novembre 2022
définitions
#DEFINE SORTIE PORTB,0
bsf SORTIE
macro instructions
Macro1 macro
Suite d’instructions…..
edm ; fin de la macro
58
Chafik ANDALOUSSI mardi 29 novembre 2022
29
29/11/2022
Programme complet
;*************************************************************************
; Ce programme génère une horloge en RB0
; de fréquence 24 fois plus faible que celle du quartz. *
; il utilise la carte PicDem2Plus équipée d'un PIC16F877A *
;*************************************************************************
__CONFIG _HS_OSC & _WDT_OFF & _CP_OFF & _CPD_OFF & _LVP_OFF
Programme complet
;****************************************************************
; INITIALISATION *
;****************************************************************
;****************************************************************
; PROGRAMME PRINCIPAL *
;****************************************************************
boucle
bsf PORTB,0 ; mise à 1 de la sortie
nop ; 2 temps morts pour compenser le saut
nop
bcf PORTB,0 ; mise à 0 de la sortie
goto boucle ; rebouclage
30