Dernière mise à jour le 25/09/16

Présentation


Ce présent article permet de programmer les entrées ainsi que les sorties d’un PIC24FJ64GA004. le programme qui va suivre permet lorsque nous appuyons sur un bouton poussoir, d’allumer une à une des leds par l’intermédiaire d’un bargraph. Chaque fois qu’une pression sur le bouton poussoir sera effectuée, les leds vont s’allumées les unes après les autres.


ATTENTION!!! Quartz non représenté sur le schéma électronique bien entendu celui-ci n’est pas optionnel 8Mhz ou 10Mhz fera largement l’affaire

Schéma


entrees_sorties
Le PIC24FJ64GA004 comporte deux PORTs (PORTA et PORTB). Le PORTA comporte uniquement 5 broches (RA0/RA1/../RA4), ces broches peuvent être utilisées pour différentes façon (analogique/numériques/tension de références/…) mais utilisons uniquement la broches RA0 pour l’exemple. En ce qui concerne le PORTB celui-ci comporte aux total 16 broches (RB0/RB1/.. /RB15). ont remarque très vite que la capacité d’un tel microcontrôleur sont plus importantes, et il en est de même pour le nombre d’entrées et sorties.





Config broches TRISA
La datasheet du PIC24FJ64GA004 nous informe que il y’a bien 16 bits (RA0/RA1/.. /RA15) à configurer mais attention la datasheet précise que les bits RA7/../R10 ne sont pas valides et que pour les autres bits formés par un “-” doivent être mis à l’état “0” logique. Il en résulte que tous les bits seront à l’état logique “0” sauf le bit RA0 qui sera à l’état logique “1” pour préciser qu’il s’agit d’une entrée. Le programme qui va suivre permet d’initialiser uniquement les entrées et les sorties du PIC24FJ64GA004


procedure init;
begin
TRISA:=$0001; // les broches RA0 et RA4 est à l’état 1
TRISB:=$0000; // les broches sont configurées en sorties
LATA:=$0000;
LATB:=$0000;// à l’état logique “0”
AD1PCFG := $FFFF; // permet d’activer toutes les entrées en numérique
end;

Le code complet le voici…


program Entrees_Sorties;
var
bStateBp1 : boolean;
i : byte;
procedure init;
begin
TRISA:=$0001; // les broches RA0 et RA4 est à l’état 1
TRISB:=$0000; // les broches sont configurées en sorties
LATA:=$0000;
LATB:=$0000;// à l’état logique “0”
AD1PCFG := $FFFF; // permet d’activer toutes les entrées en numérique
end;

procedure Bp1(i:byte);
begin
case i of
1 : LATB.0:=1;
2 : LATB.1:=1;
3 : LATB.2:=1;
4 : LATB.3:=1;
5 : LATB.4:=1;
6 : LATB.5:=1;
7 : LATB.6:=1;
8 : LATB.7:=1;
9 : LATB.8:=1;
10 : LATB.9:=1;
end;
end;

procedure ReadButton;
begin
begin
if ((PORTA.0=1) and (bStateBp1=false)) then
begin
bStateBp1:=true;
inc(i);
Bp1(i);
end;

begin
if (PORTA.0=0) and (bStateBp1=true) then bStateBp1:=false;
end;

// remise à zéro de la variable “i”…
begin
if i=11 then
begin
LATB:=$0000;
i:=0;
end;
end;
end;
end;

begin
init;
while true do
begin
ReadButton; // lecture en boucle du bouton
end;
end.