Académique Documents
Professionnel Documents
Culture Documents
Cours PIC S
Cours PIC S
On remarquera que toutes les broches du circuit (sauf Vss, Vdd et RB5) ont plusieurs
fonctions. Le choix de la fonction utilise se fait par programmation.
On distingue en particulier :
Juin07 Ce document cr par C SCHNEIDER est en partie inspir du cours PIC16F84 de Nol DEMISSY.
1/11
COURS PIC16F628A
2 Dveloppement d'une application
2.1 Principe
Le dveloppement d'une application commence toujours par un cahier des charges qui dfini
l'lectronique implanter autour du microcontrleur.
Vient ensuite llaboration de lorganigramme (ou de lalgorithme) puis la rdaction du
programme en Basic dont le fichier objet (fichier hxadcimal traduisant le programme
labor en langage Basic ) sera implant dans le circuit.
+ 5V
C1
22 pF
VDD
OSC1
Q
C2
4 MHz
22 pF
RB7
OSC2
5V
RB6
RB5
MCLR
RB4
16F84
RA4
RA3
RB3
RA2
RB2
RA1
RB1
RA0
RB0
VSS
Juin07 Ce document cr par C SCHNEIDER est en partie inspir du cours PIC16F84 de Nol DEMISSY.
2/11
COURS PIC16F628A
EXEMPLE DECRITURES DUN PROGRAMME
DANS SES DIFFERENTES EXTENSIONS
3/11
COURS PIC16F628A
$000B $2810
$000C $0BA4
$000D $2809
$000E $01A2
$000F $3400
$0010 $1003
$0011 $2815
ect.............
GOTO $+5
DECFSZ MATH_MAIN_GLOBAL_LOOPCOUNT,F
GOTO $-4
CLRF MATH_MAIN_GLOBAL_X_1,F
RETLW 0
BCF STATUS,C
GOTO $+4
ect.............
$0073
$0074
$0075
$0076
$0077
$0078
$0079
$007A
$007A
$007A
$0823
$00A9
$0827
$07A9
$0829
$0086
$2828
$
$
$287A
MOVF Math_main_global_X_2, W
MOVWF
main_global_sortie
MOVF main_global_d, W
ADDWF
main_global_sortie, F
MOVF main_global_sortie, W
MOVWF
PORTB
GOTO PIC_Store_Complet_L_0
PIC_Store_Complet_L_2:
PIC_Store_Complet_L_9:
GOTO PIC_Store_Complet_L_9
On y retrouve le code machine de chaque instruction en assembleur (partie grise) mais crite
octet par octet lenvers
Exemple :
Dans le fichier .asm la ligne
correspond dans le fichier .hex
Ou encore la ligne
correspond dans le fichier .hex
Dans le fichier .asm la ligne
correspond dans le fichier .hex
$0000 $ 281A
1A28
$0006 $3008
0830
$007A $ 287A
7A28
GOTO PIC_store_complet_main
MOVLW 8
GOTO PIC_store_complet_L_9
Juin07 Ce document cr par C SCHNEIDER est en partie inspir du cours PIC16F84 de Nol DEMISSY.
4/11
COURS PIC16F628A
2.2 Un premier exemple
Dans le montage suivant, l'appui sur un bouton poussoir provoque l'allumage dfinitif d'une
led, initialement teinte.
+ 5V
C1
22 pF
OSC1
C2
22 pF
VDD
Q
4 MHz
RB7
OSC2
RB6
RB5
MCLR
+ 5V
RB4
16F84
RA4
RA3
RB3
RA2
RB2
RA1
RB1
RA0
RB0
VSS
program Exemple_1_cours
symbol bp = PortA.2
symbol led = PortB.3
main:
end.
cmcon=07
trisa
= $FF
trisb
= 0
portb
= 0
while bp = 1
wend
led = 1
Explications supplmentaires :
Pour une utilisation et une relecture plus simples du programme, on utilise couramment des
alias dont il faut en tout premier lieu dclarer lexistence et le type: ici led et bp
On commence toujours le programme principal par la configuration des ports A et B
(dfinition pour chaque broche de chaque port de lutilisation en entre ou en sortie). Ce
qui ncessite d'crire dans les registres TRIS A et TRIS B :(1) pour entre ou (0).pour
sortie
On utilise ici les entres du portA comme tant des valeurs numriques, il faut par consquent
crire 07 dans le registre CMCON
Juin07 Ce document cr par C SCHNEIDER est en partie inspir du cours PIC16F84 de Nol DEMISSY.
5/11
COURS PIC16F628A
2.3 Un second exemple
La led doit maintenant clignoter dfinitivement aprs appui sur le bouton poussoir.
program Exemple_2_cours_PIC
symbol bp = PortA.2
symbol led = PortB.3
main:
trisa
= $FF
trisb
= 0
cmcon=07
portb
' Dclarations
'********* Main ********
' Configuration :
' 1111 1111 = PortA.2 en entre
' 0000 0000 = PortB en sortie
'inhibition des entres analogiques du port A
while bp = 1
wend
while true
led = 1
delay_ms(1000)
led = 0
delay_ms(1000)
wend
end.
Juin07 Ce document cr par C SCHNEIDER est en partie inspir du cours PIC16F84 de Nol DEMISSY.
6/11
COURS PIC16F628A
3 Dveloppement avec le logiciel MikroBasic (ver 2.0)
3.1 Les principales instructions
Les oprateurs arithmtiques lmentaires :
+ : addition
- : soustraction
* multiplication
/ : division
div : excute la division et restitue la partie entire
mod : excute la division et restitue le reste de la division
Les oprateurs logiques lmentaires :
& : (AND)
! : (OR)
^ : (XOR)
not : inverseur
>> x : o x indique le nombre de dcalages droite successifs dans un mot binaire
<< x : o x indique le nombre de dcalages gauche successifs dans un mot binaire.
Les principales instructions :
Syntaxe
program
end.
Commentaires
Exemple
program essai
symbol
Dclaration dalias
sub
end sub
if plus = 1 then
i = i+1
else i=i*2
end if
dim
as byte
(integer,)
const
main :
end.
dim i, j, k as byte
dim counter as word
dim tab as longint[100]
main :
Juin07 Ce document cr par C SCHNEIDER est en partie inspir du cours PIC16F84 de Nol DEMISSY.
7/11
COURS PIC16F628A
while ...
wend
while i < 4
i = i+1
wend
Select case
case 0
.........
case 3
.........
case else
.........
end select
for to
next
delay_us (n)
delay_ms (m)
goto
wend
Select case j
case 0
portB=%00001111
case 3
portB=%01111111
case else
portB=0
end select
for i = 0 to 4
portB = i
next i
delay_ms (500)
goto main
Juin07 Ce document cr par C SCHNEIDER est en partie inspir du cours PIC16F84 de Nol DEMISSY.
8/11
COURS PIC16F628A
3.2 Utilisation du logiciel MikroBasic
Le logiciel MikroBasic est un environnement de dveloppement intgr (IDE). Il est constitu
entre autres dun diteur et dun compilateur et de toutes commandes ncessaires la
compilation (cration du fichier assembleur) et lassemblage (cration du fichier objet en
hexadcimal). Toute erreur de syntaxe est signale par le compilateur et stoppe la
compilation. Une aide contextuelle est disponible (voir paragraphe ci aprs). Une fois les
erreurs supprimes, le logiciel assemble et cre le fichier objet qui sera transfr ensuite dans
le PIC.
Barre de menus
Explorateur de
code
Caractristiques
du projet
Aprs excution de ces tapes, nous disposons du fichier .hex implanter dans la
mmoire du microcontrleur PIC.
Avant de programmer le circuit, il est conseill de sassurer du bon fonctionnement du
programme par une simulation pas pas associe une visualisation des tats des
diffrentes variables et registres internes
Remarque :
Ceci est une prsentation succincte de MikroBasic. Lors de la cration du programme, il est
conseill de lire la notice Utilisation de MikroBasic .
Juin07 Ce document cr par C SCHNEIDER est en partie inspir du cours PIC16F84 de Nol DEMISSY.
9/11
COURS PIC16F628A
4 La programmation du composant
Elle ncessite l'emploi d'une carte de programmation relier un PC via un liaison srie
RS232 (COM1 ou 2 du PC). Le PC est quip du logiciel de programmation ICPROG. La
carte dispose d'un emplacement destin recevoir le composant programmer.
4.1 La carte de programmation :
Voici la carte que nous utiliserons :
4.2
Lancer icprog.exe
Juin07 Ce document cr par C SCHNEIDER est en partie inspir du cours PIC16F84 de Nol DEMISSY.
10/11
COURS PIC16F628A
Remarque :
Ceci est une prsentation succincte de la programmation. Avant toute manipulation pour
crire dans le composant, il est conseill de lire la notice Utilisation du
programmateur .
Juin07 Ce document cr par C SCHNEIDER est en partie inspir du cours PIC16F84 de Nol DEMISSY.
11/11