Alors voila je me jette dans l’arène.
Il existe des dizaines d’exemples de code pour faire clignoter une led. Mais celui-la me permettra de me faire la main !
Ce tuto est à base de commentaires très détaillés,pour bien se rendre compte, à quoi sert et ce que fait exactement chaque lignes.
Bien évidemment, il vous sera aussi nécessaire d'aller glané quelques infos sur la toile, pour compléter mes propos.
Configuration :
- PIC18F45K22
- IDE : MikroC Pro for PIC Version 6.6.2
- Compilateur : Mikro prog suite fo PIC V 2.32
- Plaque Easy PIC V7
Allez ! on passe au sujet :
Faire clignoter une led branchée sur la broche RB0 du PIC .
On va la faire clignoté toute les secondes , sans une énorme précision, car ici ce n'est pas utile. ( enfin pour le moment).
Voila le code que je vous propose.
Code : Tout sélectionner
void main() { // ceci contiendra notre programme, c'est la fonction principale(main) et elle est obligatoire.
// D'autres Fonctions arriveront au fil des Tutos.
//################################# CONFIGURATION #########################################
ANSELB = 0; // Configure les broches du PORTB en digital (contrairement à analogique) état haut=1 , état bas=0
// En numérique la valeur 1, c'est à dire un état haut correspond a Vcc et 0 : état bas à la masse
PORTB = 0; // Afin d'éviter les surprises il est préférable de définir la valeur du PORT B à 0 avant de le mettre en sortie.
// En effet en passant le PORT B en sortie , la valeur de ses broches vont être initialisé et leurs états aléatoire.
TRISB = 0; // TRIS pour tri-state= 3 États . Entrée / sortie/ en l'air .
// Configure tout le PORTB comme sortie en affectant la valeur 0 (contrairement à entrée = 1)
//################################# Boucle infinie #########################################
while(1){ // Ici c'est une boucle sans fin , c'est à dire que le programme tourne en boucle à l'infini car la condition est toujours vraie
// on nomme la broche ou est branchée la led ici la broche RB0.
PORTB.B0 = 1 ; // En écrivant PORTC.B1 par exemple on allumerait la broche 1 du PORT C si une led était branchée dessus.
// perso je m'en souvient en me disant : Je veux la Broche 1 (B pour broche) donc B1, au final ça donne PORTC.B1
// Comme je suis débutant,j'ai activé toute les bibliothèques à la création du projet . C'est fortement conseillé pour les novices .cela ne prends pas de mémoire supplémentaire mais , met plus de temps à compiler.
delay_ms (1000); // La fonction delay_ms , fait une pause de X millisecondes , ici en l’occurrence de 1000ms donc 1 seconde à la fréquence de 4Mhz pour l'horloge.
// Cependant attention avec les pauses, car pendant la pause le µC ne peut rien faire d'autre que d'attendre ( sauf interruption on y viendra )
PORTB.B0 = 0 ; // Ici après avoir fait une pause quand la led était allumé, et ben, on l’éteint , on passe la broche à zéro
delay_ms (1000); // puis on refais une pause de 1 seconde
} // Nous arrivons à la parenthèse de la boucle infini, donc on repart au début et ainsi de suite .
}
Voila pour un premier exemple.
Quelques astuces soit dit en passant :
- les // signifient des commentaires et ne sont pas compilés , donc ne tiennent pas de place mémoire , un conseil abusez-en dans vos programmes.
- On peut faire des paragraphes entier en commentaires avec les balises /* votre texte ici */ , même en sautant des lignes si vous voulez.
- Ici je nomme la broche ou est branchée la led RB0, il y a d'autres façon appelée cette broche que nous verrons ultérieurement.
http://www.dailymotion.com/video/x30zdcp