programmation du 16F877
Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

programmation du 16F877



  1. #1
    invite05ab47b1

    programmation du 16F877


    ------

    Bonjour.
    Je débute en C et en programmation en général.
    J'ai fait quelques programmes sur 16F84A qui fonctionnait comme je le voulais. J'ai voulu passer au 16F877 mais je n'arrive à faire fonctionner aucun programme, même des très simple.
    y a-t-il des fichiers à inclure ou quelque chose d'autre pour utiliser le 16F877 ?
    J'utilise MPLAB 8.4 et CC5X.




    Voilà le programme principal :

    // Oscillator : XT
    // Watchdog timer : off
    // power up timer : off
    // Code Protect : off
    // Brown Out detect : off
    // Low Voltage Program : Disabled
    // Data EE read Protect : off
    // Flash Program write : Enabled


    #include"delay.c"

    void main (void) // clignotement 1sec
    {
    PORTB=0;
    TRISB=0;

    while (1)
    {
    PORTB.0=1;
    delay_ms(100);
    PORTB.0=1;
    delay_ms(100);
    }
    }






    et le delay :

    void delay_ms(char millisec)
    {
    OPTION_REG=2;
    do
    {
    TMR0=0;
    nop();
    while(TMRO<125);
    }
    while (millisec>0);
    }




    merci d'avance, bonne soirée.

    -----

  2. #2
    Jack
    Modérateur

    Re : programmation du 16F877

    Je ne peux malheureusement pas t'aider, mais je te recommande d'utiliser les balises codes (#) afin de respecter l'indentation de ton programme et ainsi en faciliter la lecture.

    PS: petite remarque qui me vient là, comme çà: ne faut-il pas spécifier le type de processeur dans ton source? A moins que ce soit dans ton environnement de développement? En tout cas, il faut bien le déclarer quelque part.

    A+

  3. #3
    remy01

    Re : programmation du 16F877

    Salut,
    je ne connais pas le CC5X, mais avec d'autres compilateurs on a toujours
    #include <16F877.H>
    en début de programme.
    A+ ....Rémy.

  4. #4
    Laboum

    Re : programmation du 16F877

    Bonjour à tous,
    Citation Envoyé par Jack Voir le message
    je te recommande d'utiliser les balises codes
    Code:
    // Oscillator : XT
    // Watchdog timer : off
    // power up timer : off
    // Code Protect : off
    // Brown Out detect : off
    // Low Voltage Program : Disabled
    // Data EE read Protect : off
    // Flash Program write : Enabled
    
    
    #include"delay.c"
    
    void main (void) // clignotement 1sec
    {
    PORTB=0;
    TRISB=0;
    
    while (1)
    {
    PORTB.0=1;
    delay_ms(100);
    PORTB.0=1;
    delay_ms(100);
    }
    }
    
    et le delay :
    
    void delay_ms(char millisec)
    {
    OPTION_REG=2;
    do
    {
    TMR0=0;
    nop();
    while(TMRO<125);
    }
    while (millisec>0);
    }
    Voilà ma modeste contribution, pour faire avancer le Smilblick
    Bon courage

  5. A voir en vidéo sur Futura
  6. #5
    invite6ba45cf9

    Re : programmation du 16F877

    Salut !
    Personellement, j'utilise MikroC, c'est plus facile à utiliser
    Ces quelques modifications peuvent fonctionner sur MicroC


    void main (void) // clignotement 1sec
    {
    PORTB=0x00;
    TRISB=0x00;

    while (1)
    {
    PORTB.B0=1;
    delay_ms(500);
    PORTB.B0=0;
    delay_ms(500);
    }
    }

  7. #6
    Laboum

    Re : programmation du 16F877

    Bonsoir Hatimoooo,
    Citation Envoyé par Hatimoooo Voir le message
    c'est plus facile à utiliser
    C'est plus facile a voir
    Code:
     void main (void) // clignotement 1sec
    {
    PORTB=0x00;
    TRISB=0x00;
    
    while (1)
    {
    PORTB.B0=1;
    delay_ms(500);
    PORTB.B0=0;
    delay_ms(500);
    }
    }
    Bon courage

  8. #7
    Jack
    Modérateur

    Re : programmation du 16F877

    Citation Envoyé par Laboum Voir le message
    Bonsoir Hatimoooo,

    C'est plus facile a voir
    Code:
     void main (void) // clignotement 1sec
    {
        PORTB=0x00;
        TRISB=0x00;
     
        while (1)
        {
           PORTB.B0=1;
           delay_ms(500);
           PORTB.B0=0;
           delay_ms(500);
        }
    }
    Bon courage
    Et avec l'indentation du code c'est encore mieux

    A+

  9. #8
    invite6ba45cf9

    Re : programmation du 16F877

    Je comprends pas
    Ai je fait une erreur messieurs ?

  10. #9
    Jack
    Modérateur

    Re : programmation du 16F877

    Citation Envoyé par Hatimoooo Voir le message
    Je comprends pas
    Ai je fait une erreur messieurs ?
    Je ne sais pas, j'interviens juste sur la forme. Un code bien présenté est lu plus facilement.

    Bonne chance pour la suite.

  11. #10
    mortaurat

    Re : programmation du 16F877

    Bonjour,
    alors tout dabord tu dois avoir un #include <16f877> pour que ton compilo puisse savoir ce que tu programme.
    secondement, si tu tape #include "delay.c", ta librairie delay.c doit se trouver dans le même dossier que le main.
    ensuite,
    Code:
    void main (void) // clignotement 1sec
    {
    PORTB=0;
    TRISB=0;
    j'aurais tendance à ecrire:
    Code:
    void main (void) // clignotement 1sec
    {
    TRISB=0;
    PORTB=0;
    TRISB sert à configurer ton port B en sortie. Tu ne peut pas en theorie affecter une valeur de sortie à ton port, sans avoir definit le registre TRISB de maniére à ce que ton portB soit en sortie.

    enfin,
    tu as une petite erreur dans ta fonction delay.
    Tu dois utiliser un unsigned char, ou mieux, un unsigned int16.
    Le char est codé sur 8 bit, si il est signé tu ne peut aller que jusqu'a 128, ce qui limite sacrement ta fonction delay.

    cordialement
    Dernière modification par mortaurat ; 13/02/2010 à 23h16.

  12. #11
    invite6ba45cf9

    Re : programmation du 16F877

    Je sais pas !
    J'ai fais des programmes sans include, ni char , .... puis simulé sur PC et ensuite en réalité !
    Cependant, avant de commencer la programmation il faut préciser le modèle du Pic ainsi que le type d'oscillateur, fréquence ... Je crois que ceci remplace le #include

  13. #12
    mortaurat

    Re : programmation du 16F877

    Citation Envoyé par Hatimoooo Voir le message
    Je sais pas !
    J'ai fais des programmes sans include, ni char , .... puis simulé sur PC et ensuite en réalité !
    Cependant, avant de commencer la programmation il faut préciser le modèle du Pic ainsi que le type d'oscillateur, fréquence ... Je crois que ceci remplace le #include
    oui il devrait avoir un #include "main.h" avec la configuration du µc

Discussions similaires

  1. Pic 16f877 problème de programmation
    Par invite4bffdc16 dans le forum Électronique
    Réponses: 11
    Dernier message: 06/08/2009, 09h21
  2. Problème de programmation PIC 16F877, SAA 1064 et afficheurs 7 segments
    Par invite64e12149 dans le forum Électronique
    Réponses: 6
    Dernier message: 18/05/2009, 10h33
  3. Pic 16f877
    Par invite8dac0c00 dans le forum Électronique
    Réponses: 12
    Dernier message: 04/02/2009, 17h03
  4. Pb programmation PIC 16F877 et CNA
    Par invite31759d82 dans le forum Électronique
    Réponses: 6
    Dernier message: 26/02/2008, 20h00
  5. programmation en C pic 16F877
    Par inviteb5e29967 dans le forum Électronique
    Réponses: 2
    Dernier message: 08/03/2007, 20h51
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...