Léger probleme programmation PIC en C

Résolu/Fermé
Spyro29 Messages postés 21 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 19 mai 2010 - 11 mai 2010 à 14:49
Spyro29 Messages postés 21 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 19 mai 2010 - 12 mai 2010 à 10:08
Bonjour,

Voilà j'ai un petit problème au niveau de l'initialisation de mon pic. Je veux juste alummer 2 LED pour l'instant voir si je n'ai pas de bug de ce coté la et voir si le programmateur PIC fonctionne bien ca je ne l'ai jamais utilisé.

Cependant j'ai un léger problème lorsque je veux que me LEDs soient initialisée a 0 MPLAB me trouve une erreur de syntaxe. Mon compilo est MCC18, Le pic que j'utilise est un 18F2680. Voici mon programme:

#include "p18f2680.h"
#include "stdio.h"

/*Définition des entrées sorties*/
#define LED1 portc.1
#define LED2 portc.2

void init()
{
LED1 = 0;
LED2 = 0;
trisc=0b00000000;
}

void main() {

init();

while (1)
{
LED1=1;
LED2=0;
delay(1);
LED1=0;
LED2=1;
delay(1);

}
}


A voir également:

3 réponses

Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
11 mai 2010 à 14:59
salut !

quelle est l'erreur en question ? Il doit bien te donner un message, non ?





void main()

c'est int main(void) normalement. Et ton main devrait se terminer par qqchose comme "return 0";
0
Spyro29 Messages postés 21 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 19 mai 2010 1
11 mai 2010 à 15:12
Salut,

Merci d'avoir répondu aussi rapidement :D.

Pour ce uqi est du void main() cela ne change rien je pense car peut importe ce que renvoi mon main cependant j'ai tout de meme fait comme tu me l'as conseillé mais ca me change rien. Bon l'erreur est a la ligne

LED1=0;

error: syntax error.

J'ai vérifié pas de point virgule oublié ni rien... Cela me laisse perplexe
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
Modifié par Pacorabanix le 11/05/2010 à 20:11
LED1 est un raccourci pour "portc.1"

tu as donc écrit :

portc.1 = 0;

moi non plus je ne comprends pas, comme ton compilateur, la syntaxe que tu utilises.

Je n'y conais rien en micro controleur, mais je ne comprends pas, du point de vue du langage C, ce que portc.1 est.
en tout cas ce nest pas une variable de structure

(structure.variable) car un nom de variable ne peut pas être un nombre.
0
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
11 mai 2010 à 23:25
Je ne programme les PIC's qu'en assembleur, mais je ne serais pas surpris que la déclaration soit 'PORTC' et comme le 'C' est un langage 'cassé'... il faut s'y plier !
Pour ce qui est du main, cela n'a pas d'importance, car bien souvent on écrit:
void main ()
{
  initialisation();		//initialisation du PIC
  for( ; ; )				//boucle infinie
  {
    //mettre ici le programme principal
  }	
}

Bonne continuation.

A l'attention de Paco:
Le langage 'C' utilisé pour programmer les microcontroleurs est assez spécial, il permet accéder facilement aux ports d'entrées-sorties. Ainsi 'PORTC.3 = 1;' signifie simplement que l'on veut mettre le bit 3 (qui correspond à un pin sur le boîtier) du port C au niveau haut.
Salutations.
0
Spyro29 Messages postés 21 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 19 mai 2010 1
12 mai 2010 à 10:08
C'est Bon j'ai enfin pu résoudre mon problème. Le Programme que j'avais fait était correct cependant la syntax n'était pas bonne étant donnée que j'utilisais un compilateur différent de celui que j'utilise d'habitude. Mon compilo est Boostc de sourceboost, celui que j'utilisais était MCC18 donc rien a voir. Merci de m'avoir aider :)
0