IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Programmer un 16F877A


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2011
    Messages : 2
    Par défaut Programmer un 16F877A
    bonjour a tous, je recherche un peu d'aide sur un programme que j'ai acqui a l'aide d'un amis, donc je suis pas informaticien mais j'ai vraiment besoin de ce programme pour faire fonctionner un pic 16f877A afin de faire marcher une maquette ECG. le programme consiste a convertir le signal analogique en numérique. quand je le simule avec mikroC, il ya des erreurs :::

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    #include <16F877.h>
    #fuses hs, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
    #use delay(clock=20000000)
    //============================
    float f1,f2,v;
    setup_adc_ports(RA0_ANALOG);     // pin A0 est une entrée analogique
    setup_adc(ADC_CLOCK_INTERNAL);   // configure le CAN
    void Serial_Init(void); // Initialisation Port série 9600 baud 8 data bit ,1 bit stop, pas de parité
    void Serial_Putchar(unsigned char cD);  // Cette fonction envoie des données sur le port série
    bit bSerie;
     
    delay_ms(300);
     
     
    void main() //****************** debut Main ******************************
      {
      GIE=1; PEIE=1;    // Autorise les intérruptions
      TRISC=0b10000000;   // RC7 RX en entré, RC6 TX en sortie 
    Serial_Init();   // Initialisation port série 
    }// ************************ fin de main******************************
     
    void Serial_Init(void)    // Initialisation Port série 9600 baud 8 data bit, 1 bit stop, pas de parité
       {
       RCIE=1;      // valide l'interruption de réception
       RCSTA=0b10010000;   // SPEN=1 valide le port série, CREN=1 valide la réception de donnée
       TXSTA=0b00100110;   // high speed mode brgh1 , TXEN 1 autorise émission de donnée
       SPBRG=25;      // 9600 baud
       bSerie=0;      // si 1 traité caractère serie reçu.
       }
     
     void Serial_Putchar(unsigned char cD)   // Emission de donnée sur le port série
       {
       while(!TXIF);   // si 1 registre d'émission vide, donc on sort de la boucle                    
       TXREG=cD;   // On place le caractère cD à envoyer dans le registre TXREG
       while(!TRMT);   // Lorsque TRMT passe à 1 TXREG recoit la donnée cD                         
       }

    merci d'avance ..

  2. #2
    Membre Expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Par défaut
    1) Utilises la balise CODE (le bouton # en haut du cadre de texte) pour encadrer ton code

    2) Peux-tu nous donner un peu plus de détails sur l'erreur ?
    Ecrire l'erreur détaillée, par exemple, serait superbe !
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2011
    Messages : 2
    Par défaut
    le script , c'est fait normalement pour laisser passer toujours l'information, mais dans le miKroC, il n'arrive pas a lire ce script,,
    ';' expected but bSerie found,

  4. #4
    Membre Expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Par défaut
    Le message d'erreur est donc :
    ';' expected but bSerie found
    Et la ligne bit bSerie; servirait à déclarer de laisser passer une information continuellement ?...
    Ca me parait très très très douteux....
    Cette ligne sert juste à déclarer une variable globale "bSerie" de type "bit".

    Je vois plus bas qu'elle est mise à 0... mais je ne comprends rien (trop mal exprimé)
    Quand bSerie vaut 1, alors on traite le caractère reçu ?
    Et à 0, on ne traite pas le caractère reçu ?...

    Je ne connais pas vraiment les PICs, mais syntaxiquement il n'y a aucune faute dans le code.
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  5. #5
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Salut,

    Vu que je suis de passage j'en profite pour répondre à la question :
    bit n'existe pas en pic16f877 (enfin ca dépens de ton compilateur).

    On utilise à la place uint8_t pour dire "unsigned char".

    Si uint8_t n'est pas reconnu, tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef uint8_t unsigned char;
    PS : On évite les float en PIC... très gourmand en mémoire
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

Discussions similaires

  1. programmer un pic 16f877a
    Par bishoo dans le forum Embarqué
    Réponses: 1
    Dernier message: 27/04/2013, 11h28
  2. Programme de boot qui passe la main à Windows
    Par Bob dans le forum Assembleur
    Réponses: 7
    Dernier message: 25/11/2002, 03h08
  3. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  4. communication entre programmes
    Par jérôme dans le forum C
    Réponses: 12
    Dernier message: 16/04/2002, 08h05
  5. [Kylix] icone associée à un programme
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo