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

T.P. Réseaux : Bus CAN TP n°2 : Utilisation du compilateur C18 Semestre 3
I.U.T. de Nîmes Département : G.E.I.I. page 1
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 // Associe Del_Ve à la ligne 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; // 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; // La ligne RA5 est mise à 0 : La Del verte s'allume
T.P. Réseaux : Bus CAN TP n°2 : Utilisation du compilateur C18 Semestre 3
I.U.T. de Nîmes Département : G.E.I.I. page 2
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); // 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) // Fonction main pour démarrer
{
TRISAbits.RA5 = 0; // Configuration de la ligne RA5 du Port A en sortie
TRISBbits.RB1 = 0; // Configuration de la ligne RB1 du Port B en sortie
TRISBbits.RB4 = 0; // Configuration de la ligne RB4 du Port B en sortie
while (1) // Boucle infinie
{
Del_Ro = 1; // La ligne RB1 est mise à 1 : La Del rouge s'éteint
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
Del_Ja = 0;
Delay10KTCYx (250);
Del_Ja = 1;
Del_Ro = 0;
Delay10KTCYx (250);
}
}
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !