Vous êtes sur la page 1sur 11

COURS PIC16F628A

PREMIERE UTILISATION DU MICROCONTROLEUR


1 Aspect matriel
Le microcontrleur PIC 16F628A est un des modles (le plus courant et un des plus petits) de
la famille des circuits microcontrleurs de Microchip. Prsent en botier DIL (Dual In Line)
18 broches, il possde de nombreuses et performantes caractristiques. Les principales sont :

une programmation facile en langage Basic ou en assembleur


son faible cot,
la possibilit d'tre programm insitu
un oscillateur interne de 4MHz ou externe. Pour un besoin de prcision ou de
frquence diffrente de 4MHz et jusque maximum 20MHz, il faut ajouter un quartz ou
un circuit RC
16 lignes d'Entres / Sorties :
8 lignes sur le portA (avec possibilit sur 4 entres de convertir sa valeur
analogique en un mot numrique)
8 lignes sur le portB
architecture RISC (Reduced Instructions Set Computer : jeu dinstructions rduit qui
convient de petits programmes)
une mmoire programme contenant 2048 instructions (codes sur 14 bits)
une mmoire RAM de donnes de 224 octets
une mmoire EEPROM de 128 octets
des temporisateurs et un chien de garde
une interface de transmission srie
Dnomination des broches dans un botier DIL 18 broches

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 :

VDD et VSS reprsentent respectivement l'alimentation 5V et 0V du circuit.


Les deux broches OSC1 et OSC2 servent recevoir si besoin le quartz destin
l'oscillateur.
MCLR (Master CLeaR) active 0 correspond l'entre dInitialisation (Reset) du
circuit.
RB0 RB7 reprsentent les 8 lignes du port B et RA0 RA7 les 8 lignes du port A,
pouvant toutes tre dfinies par programmation en entres ou en sorties.

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

Dans nos tudes simples le schma de


base sera toujours celui ci-contre.
Il faut placer les composants ralisant
les Entres ou les Sorties,comme par
exemple des interrupteurs en entres et
des leds en sorties.

16F84
RA4
RA3

RB3

RA2

RB2

RA1

RB1

RA0

RB0

Quant l'criture d'un programme, elle


passe invariablement par les tapes
suivantes :

VSS

a) Rdiger un programme en langage volu l'aide dun diteur de texte.


Dans notre exemple : le langage volu sera le Basic et lditeur de texte sera celui du logiciel
MikroBasic, il sera cr un fichier extension .pbas
b) Compiler le programme basic en un programme source l'aide du compilateur basic
qui crera un fichier.asm,
c) Assembler le programme qui crera le fichier objet .hex
d) Transfrer ce fichier hexadcimal dans le microcontrleur l'aide d'un programmateur
(carte lectronique relie au PC sur laquelle est plac le PIC programmer) et dun
logiciel. Le logiciel ICPROG par exemple.
e) Enfin placer le PIC programm sur le montage qui lui est ddi.
Remarque : Les tapes b) et c) se font sur un seul clic.

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

a) Programme extension .pbas

b) Programme extension .asm


;// ASM code generated by mikroVirtualMachine for PIC - V. 3.0.0.0
; Date/Time: 20/09/2005 10:09:28
; Info: http://www.mikroelektronika.co.yu
;// ADDRESS OPCODE
ASM
; ---------------------------------------------$0000 $281A GOTO PIC_Store_Complet_main
$0004 $
math_mul_8x8_u:
$0004 $1303 BCF
STATUS,RP1
$0005 $1283 BCF
STATUS,RP0
$0006 $3008 MOVLW 8
$0007 $00A4 MOVWF MATH_MAIN_GLOBAL_LOOPCOUNT
$0008 $0822 MOVF MATH_MAIN_GLOBAL_X_1,W
$0009 $0CA0 RRF MATH_MAIN_GLOBAL_Y_1,F
$000A $1803 BTFSC STATUS,C
Juin07 Ce document cr par C SCHNEIDER est en partie inspir du cours PIC16F84 de Nol DEMISSY.

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

c) Programme extension .hex


:100000001A28FF3FFF3FFF3F031383120830A4006D
:100010002208A00C03181028A40B0928A201003400
:1000200003101528A00C0318A207A20CA30CA40B04
:10003000122808000730031383129F0080308316B4
:1000400081008601FF30850083128601A501A6018B
:100050000030051A0130F20000307202031D33280F
:10006000FF30F3003428F301FF307302031D5928D9
:10007000003005180130F10025087104A700003098
:1000800085180130F300F3097308A70500308518BF
:100090000130F10026087104A80000300518013075
:1000A000F300F3097308A8052708A5002808A6008F
:1000B0006C28003005190130F1000030851901303D
:1000C000F300F30971087305A7002708F100F1098F
:1000D0007108A800A501A6012808A000A10102300E
:1000E000A200A30104202308A9002708A9072908C2
:1000F000860028287A28FF3FFF3FFF3FFF3FFF3F52
:02400E00013F70
:00000001FF

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.

' Dclarations de variables

cmcon=07
trisa
= $FF
trisb
= 0
portb
= 0

'******** Dbut du programme principal ********


'inhibition des entres analogiques du port A
' 1111 1111 = PortA.2 en entre
' 0000 0000 = PortB en sortie
' mettre 0 sur toutes les sorties

while bp = 1
wend
led = 1

' des que bp = 0 (appui),


on sort de la boucle
la sortie RB3 passe 1, la led sallume
'indique au logiciel la fin du programme compiler et assembler

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

' aucune sortie active


' des que bp = 0 (appui),
on sort de la boucle
' on tombe dans une boucle sans fin
' qui fait clignoter la led

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 prcise la premire ligne le


nom du fichier en basic.
La fin du programme est repre par end
avec un point
Permet de dclarer les variables utilises
dans le programme en prcisant leur type :
byte : octet (8 bits)
integer : 16 bits
word : nom alphanumrique
Dclare une donne constante de type
numrique ou caractre

program essai

symbol

Dclaration dalias

symbol t1s = delay_ms(1000)


symbol led = PortB.3

sub

end sub

Dclaration des sous programmes


(procdures ou fonctions) pour une
meilleure structure du programme.
Scrivent avant le programme principal
Etiquette de dbut de programme
principal, toujours suivi de deux points

sub procedure calcul


n = a * (b +3)
end sub

Structure de contrle pour raliser un test


laide dune expression boolenne.
Excute un traitement si condition vraie
(ou ventuellement un autre si faux)

if plus = 1 then
i = i+1
else i=i*2
end if

dim
as byte
(integer,)
const

main :

if ... then ...


(else) ...
end if

end.
dim i, j, k as byte
dim counter as word
dim tab as longint[100]

const MIN = 1000


const SWITCH = "n
const vals as byte[12] =
(31,12,17)

main :

Juin07 Ce document cr par C SCHNEIDER est en partie inspir du cours PIC16F84 de Nol DEMISSY.

7/11

COURS PIC16F628A
while ...

wend

Pour rpter un traitement tant quune


condition est vraie.

while i < 4
i = i+1
wend

Rem : sutilise aussi pour crer une boucle while true


sans fin

Select case
case 0
.........
case 3
.........
case else
.........
end select
for to
next
delay_us (n)
delay_ms (m)

goto

Suivant que la variable vaut 0 ou 3 ou


autre faire

Permet de raliser une itration laide


dune variable
Fonctions prtes lemploi pour raliser
une temporisation de n microsecondes ou
m millisecondes
Renvoi inconditionnel une ligne de
programme dfinie par une tiquette.
Ltiquette est indique par son nom suivi
de deux points ( :)
A viter autant que possible.

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

Fentre d'criture du fichier source


en Basic
Voici les tapes de dveloppement de l'application :

Cration dun projet (fichier.pbp). Il faut absolument un projet pour un programme.


Rdaction du programme source en Basic dans la fentre principale.
Enregistrement du programme source (fichier.pbas)
Compilation (puis assemblage)
Correction des ventuelles erreurs signales par le compilateur et recompilation

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

Programmation dun PIC :

Il est impratif de faire dans lordre les manipulations suivantes :


a) Placer le circuit intgr PIC sur la carte de programmation
b) Brancher la carte sur la liaison srie dun PC via le cble connecteurs DB9
c) Programmer avec le logiciel ICPROG :

Lancer icprog.exe

Ouvrir le fichier hexadcimal correspondant au programme implanter dans le


composant. Celui-ci apparat dans la fentre. Il est possible de voir le programme en
assembleur en cliquant sur A, ou en hexadcimal en cliquant sur H.

Choisir le modle du composant programmer, 16F628A dans notre cas.

Positionner les paramtres concernant la programmation (oscillateur, fusibles)

Juin07 Ce document cr par C SCHNEIDER est en partie inspir du cours PIC16F84 de Nol DEMISSY.

10/11

COURS PIC16F628A

Lancer la programmation par le menu Commande Tout Programmer ou par


la touche de fonction F5 ou par licne.

d) Aprs la programmation, il faut dbrancher la carte programmateur du PC


e) Enlever le circuit intgr PIC.
f) Placer le PIC sur son montage et tester le fonctionnement attendu

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

Vous aimerez peut-être aussi