TP n°2 : Utilisation du compilateur C18 Premier programme : Del

publicité
T.P. Réseaux : Bus CAN
TP n°2 : Utilisation du compilateur C18
Semestre 3
TP n°2 : Utilisation du compilateur C18
Ce deuxième TP doit vous permettre d'apprendre à travailler avec le compilateur C18. Ce compilateur gratuit de
Microchip est un peu déroutant au début, mais les instructions sont plus proches du microcontrôleur que celles
du compilateur CCS, un peu à l'image des instructions en assembleur.
Premier programme : Del clignotante à 1Hz
Pour ce premier programme, on choisit de faire clignoter la Del verte associée à la ligne 5 du port A.
Le programme
#include <p18f4580.h>
// Déclaration du µC
//#pragma config OSC=HS, PWRT=ON, WDT=OFF, LVP=OFF // Configuration des fusible du µC
#include <delays.h>
// Appel de la librairie des temporisations
#define Del_Ve PORTAbits.RA5
// Associe le nom Del_Ve à la ligne RA5
void main (void)
// Fonction main pour démarrer
{
TRISAbits.RA5 = 0;
// Configuration de la ligne A5 du Port A en sortie
while (1)
// Boucle infinie
{
Del_Ve = 0;
// La ligne RA5 est mise à 0 : La Del verte s'allume
Delay10KTCYx (250);
// Temporisation de 500ms
Del_Ve = 1;
// La ligne RA5 est mise à 1 : La Del verte s'éteint
Delay10KTCYx (250);
}
}
Explication et Comparaison avec CCS
#include <p18f4580.h>

// Déclaration du µC
Pas de différence avec le compilateur CCS, il faut appeler le fichier associé au composant
//#pragma config OSC=HS, PWRT=ON, WDT=OFF, LVP=OFF // Configuration des fusibles du µC
 Oscillateur > 4MHz; PWRT Reset à la mise sous tension; WatchDogTimer (Chien de garde) bloqué;
LowVoltageProgrammation bloqué.

Ligne placée en commentaire en présence d'un bootloader.
#include <delays.h>

// Appel de la librairie des temporisations
Une première différence avec CCS, la librairie des fonctions de temporisations doit être spécifiée.
#define Del_Ve PORTAbits.RA5

Autre différence, mais plus intéressante, on peut associer directement une ligne d'un port à un nom. Ce
qui va simplifie la commande de la ligne (voir plus bas). Ce type de déclaration est aussi possible avec le
compilateur CCS, même si elle n'est pas utilisée systématiquement.
TRISAbits.RA5 = 0;

// Associe Del_Ve à la ligne RA5
// Configuration de la ligne A5 du Port A en sortie
Configuration d'une ligne d'un port en entrée ou en sortie
Del_Ve = 0;
I.U.T. de Nîmes
// La ligne RA5 est mise à 0 : La Del verte s'allume
Département : G.E.I.I.
page 1
T.P. Réseaux : Bus CAN

Semestre 3
Pour mettre à 1 ou à 0 la ligne, l'écriture est simplifiée et l'action est plus évidente. La Del est branchée
à l'envers, donc il faut un niveau logique bas pour qu'elle s'allume.
Delay10KTCYx (250);

TP n°2 : Utilisation du compilateur C18
// Temporisation de 500ms avec un quartz de 20MHz
Insère une temporisation de 250 x 10.000 cycles.
Un cycle dure :
→ Donc la tempo durera :
Deuxième programme : Chenillard sur les 3 Dels
Pour ce deuxième programme, on réalise un chenillard sur les 3 Dels rouges, vertes et jaunes reliées au
18F4580.
#include <p18f4580.h>
// Déclaration du µC
//#pragma config OSC=HS, PWRT=ON, WDT=OFF, LVP=OFF
// Configurations des fusibles du µC
#include <delays.h>
// Appel de la librairie des temporisations
#define Del_Ve PORTAbits.RA5
// Associe Del_Ve à la ligne A5
#define Del_Ro PORTBbits.RB1
// Associe Del_Ro à la ligne B1
#define Del_Ja PORTBbits.RB4
// Associe Del_Ja à la ligne B4
void main (void)
{
TRISAbits.RA5 = 0;
TRISBbits.RB1 = 0;
TRISBbits.RB4 = 0;
while (1)
{
// Fonction main pour démarrer
// Configuration de la ligne RA5 du Port A en sortie
// Configuration de la ligne RB1 du Port B en sortie
// Configuration de la ligne RB4 du Port B en sortie
// Boucle infinie
Del_Ro = 1;
Del_Ve = 0;
Delay10KTCYx (250);
Del_Ve = 1;
Del_Ja = 0;
Delay10KTCYx (250);
Del_Ja = 1;
Del_Ro = 0;
Delay10KTCYx (250);
// La ligne RB1 est mise à 1 : La Del rouge s'éteint
// La ligne RA5 est mise à 0 : La Del verte s'allume
// Temporisation de 500ms
// La ligne RA5 est mise à 1 : La Del verte s'éteint
}
}
I.U.T. de Nîmes
Département : G.E.I.I.
page 2
Téléchargement