probleme de programmation pic16f877
Répondre à la discussion
Affichage des résultats 1 à 24 sur 24

probleme de programmation pic16f877



  1. #1
    inviteefc4ae89

    probleme de programmation pic16f877


    ------

    bonjour;
    je suis nouvelle dans ce forum,
    et j'espère que vous m'aidiez.
    comment entrer 4 positions (allant de 0 à 8000)avec clavier, les afficher sur lcd et les comparer une par une avec des données venant d'un codeur absolu?
    a mon avis il faut les enregistrer dans l'EEPROM du 16f877, puis on fait appel a la position pour la comparaison.
    ce travail doit être réaliser afin de commander un moteur cc avec 16f877 dans les deux sens et en entrant des positions exacts à atteindre.
    prière aidez moi

    -----

  2. #2
    inviteefc4ae89

    Re : probleme de programmation pic16f877

    bon je vois que vous ignorez les nouveaux participants.

  3. #3
    Seb.26

    Re : probleme de programmation pic16f877

    c'est quoi la question ? ...

    (c'est surtout les posts où on comprend rien qui sont ignorés ... )
    Dernière modification par Seb.26 ; 28/05/2010 à 17h15.
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  4. #4
    inviteefc4ae89

    Re : probleme de programmation pic16f877

    la question: comment réaliser une comparaison entre une donnée entrée par clavier (et qui reste fixe)et une autre entrée par un codeur absolu (qui est variable car elle change lors de la mise en marche du moteur) ?

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

    Re : probleme de programmation pic16f877

    aussi la donnée du codeur est sur 13bits comment capter cette donnée (je vais utiliser deux ports du pic) et la convertir en decimal pour la comparer avec l autre donnée?

  7. #6
    invite7a49d0d5

    Cool Re : probleme de programmation pic16f877

    Bonjour,
    Citation Envoyé par alexandra_miss Voir le message
    (...)
    comment entrer 4 positions (allant de 0 à 8000)avec clavier, les afficher sur lcd et les comparer une par une avec des données venant d'un codeur absolu?
    a mon avis il faut les enregistrer dans l'EEPROM du 16f877, puis on fait appel a la position pour la comparaison.(...)
    comment... ben en écrivant un programme pour le PIC...
    tu as déjà fait ça? tu utilises quel langage? quel compilateur?
    et oui tu devras mémoriser tes "positions" dans l'EEprom du PIC...

    vede
    ;O]
    __________
    ...

  8. #7
    Seb.26

    Re : probleme de programmation pic16f877

    et surtout : tu en es où ???

    tu as déjà fait quoi ???

    tu bloque sur quoi ???

    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  9. #8
    inviteefc4ae89

    Re : probleme de programmation pic16f877

    j'utilise le picC.car c est plus facile.

  10. #9
    inviteefc4ae89

    Re : probleme de programmation pic16f877

    voici ce que j'ai fai:
    #include <16F877.h>
    #fuses HS,NOWDT,NOPROTECT,NOLVP
    #use delay(clock=20000000)

    #include <string.h>

    #include <lcd1.c>
    #include<clavier16T.c>
    byte value ;

    void main()
    { int8 i=1;

    char value;
    char k;
    char * position1[4];
    char * position2[4];
    char * position3[4];
    char * position4[4];
    unsigned char j;
    setup_adc_ports(NO_ANALOGS);
    setup_adc(ADC_OFF);
    setup_psp(PSP_DISABLED);
    setup_spi(FALSE);
    setup_timer_0(RTCC_INTERNAL|RT CC_DIV_1);
    setup_timer_1(T1_DISABLED);
    setup_timer_2(T2_DISABLED,0,1) ;
    port_b_pullups(true);
    lcd_init();
    kbd_init();
    lcd_gotoxy(1,1);
    lcd_putc("\bonjour\n");
    lcd_putc("enter positions");
    delay_ms(2000);
    start:;
    {



    printf(lcd_putc,"\fposition n:1\n");
    DO
    {
    value=kbd_getc();
    }while(value==0 );
    lcd_putc('\f');
    lcd_gotoxy(1,1);
    if (value=='*' || value=='+' || value=='-'||value=='c'||value=='/'||value=='='||value=='9') goto start;

    else lcd_putc(value);


    write_eeprom(0X70,value);
    }
    do
    {
    value=kbd_getc();
    }while(value==0);
    lcd_gotoxy(2,1);
    if (value=='*' || value=='+' || value=='-'||value=='c'||value=='/'||value=='=') goto start;

    else lcd_putc(value);
    write_eeprom(0X71,value);

    do
    {
    value=kbd_getc();
    }while(value==0);
    lcd_gotoxy(3,1);
    if (value=='*' || value=='+' || value=='-'||value=='c'||value=='/'||value=='=') goto start;

    else lcd_putc(value);
    write_eeprom(0X72,value);

    do
    {
    value=kbd_getc();
    }while(value==0);
    lcd_gotoxy(4,1);
    if (value=='*' || value=='+' || value=='-'||value=='c'||value=='/'||value=='=') goto start;

    else lcd_putc(value);
    write_eeprom(0X73,value);
    * position1=(read_eeprom(0X70),r ead_eeprom(0X71),read_eeprom(0 X72),read_eeprom(0X73));

    // attend de touche de confirmation qui est le *

    lcd_putc('\n');
    lcd_putc("enter or delete");

  11. #10
    inviteefc4ae89

    Re : probleme de programmation pic16f877

    bon la recuperation de la position a partir de l EEPROM c juste ou nn?
    * position1=(read_eeprom(0X70),r ead_eeprom(0X71),read_eeprom(0 X72),read_eeprom(0X73))

  12. #11
    LABTOOL48

    Re : probleme de programmation pic16f877

    bonjour

    non ton programme n'est pas juste il faut incrementer l'adresse de tableau pour chaque octet lu, voici un exemple comment remplir ton tableau

    position1[0] = read_eeprom(0x70);
    position1[1] = read_eeprom(0x71);
    position1[2] = read_eeprom(0x72);
    position1[3] = read_eeprom(0x73);
    ou bien ecrire une fonction comme celle la
    void copie_coller(void){
    adresse = 0x70
    char i;
    for(i = 0; i < 4; i++)
    {
    position1[i] = read_eeprom(adresse);
    adresse ++;
    }
    }
    bonne chanse

  13. #12
    invite7a49d0d5

    Cool Re : probleme de programmation pic16f877

    RE ...

    C'EST TON PREMIER PROGRAMME? (le copié/collé...)...

    TU LE SIMULES?

    QU'EST CE QUE T'A FOUTU CETTE ANNNNEE?

    C'EST DANS QUEL CADRE?

    CA T'INTERESSE L'ELECTRONIQUE?

    et merci de répondre sans me sortir l'excuse "bato"
    que le prof était malade toute l'ANNnée... moi j'apprends
    tous les jours... sans profs... depuis que ça m'intéresse...
    et google c'est pas fait que pour les con(e)s...

  14. #13
    invite7a49d0d5

    Cool Re : probleme de programmation pic16f877

    ps : t'as appris à programmer dans un apéro FaceBook?
    ou sur UTube?

    comme tu peux le remarquer ton :
    Citation Envoyé par alexandra_miss Voir le message
    bon la recuperation de la position a partir de l EEPROM c juste ou nn?
    * position1=(read_eeprom(0X70),r ead_eeprom(0X71),read_eeprom(0 X72),read_eeprom(0X73))
    me reste en travers de la gorge...
    on est pas à ta dispo...
    et si tu sais pas ce que tu codes...
    c'est pas de notre faute...

  15. #14
    LABTOOL48

    Re : probleme de programmation pic16f877

    re
    normalment c'est elle qui a besoins de tes reponse prof mais ,,,,,,
    C'EST TON PREMIER PROGRAMME? (le copié/collé...)...
    c'est juste un nom donné pour un exemple
    TU LE SIMULES?
    c'est elle qui va faire ça pas moi
    QU'EST CE QUE T'A FOUTU CETTE ANNNNEE
    yadek fé zxxi
    CA T'INTERESSE L'ELECTRONIQUE?
    non passe temps c'est tout

    je connais pas le français t'as pas remarquer prof
    Dernière modification par LABTOOL48 ; 29/05/2010 à 05h53.

  16. #15
    invite7a49d0d5

    Cool Re : probleme de programmation pic16f877

    qu'est ce tu me parles de français?
    on parlait C... tait'teu... et je suis pas prof...
    ni là pour aider des étudiants qui ont rien foutu de l'ANNée...

  17. #16
    invite7a49d0d5

    Cool Re : probleme de programmation pic16f877

    ... sinon cette ANNée je m'inscrit pour l'agreg Physique-Chimie**...
    ... je pars 1 an en vacances...
    ... et je reviens au moment des exams pour que FUTURA écrive ma thése...

    ** au maghreb? ça paraît plus simple? ma soeur habite Cairo...

  18. #17
    invite7a49d0d5

    Cool Re : probleme de programmation pic16f877

    re ;O]

    >>TU LE SIMULES?
    c'est elle qui va faire ça pas moi

    ben elle est pas rendue...
    si le "montage" doit un jour fonctionner "en réél"...

  19. #18
    invite7a49d0d5

    Cool Re : probleme de programmation pic16f877

    t'inquiètes, les modos sont là (hi Jack, Genias...)
    pour "modérer" mes propos si ....

  20. #19
    Seb.26

    Re : probleme de programmation pic16f877

    ?! ... t'as pris le soleil trop fort Vede ? ... tu craque là ...

    Bon, pour revenir au sujet d'alexandra_miss :

    Donne au moins le schéma, nous n'avons pas de boule de cristal ... quand à :

    Code:
    bon la recuperation de la position a partir de l EEPROM c juste ou nn?
    * position1=(read_eeprom(0X70),r ead_eeprom(0X71),read_eeprom(0 X72),read_eeprom(0X73))
    ( au passage, utilise la balise CODE ! )

    Ce "truc" ne peut pas fonctionner, ne peut pas compiler, et ne veut rien dire en C ... fais comme indiqué, écris un byte à la fois, ce sera le plus simple pour toi ...

    Pour reprendre à la base ton programme :

    Code:
    char * position1[4];
    Que fais cette ligne pour toi ? ... Tu pense déclarer quoi ?
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  21. #20
    invite7a49d0d5

    Cool Re : probleme de programmation pic16f877

    Citation Envoyé par Seb.26 Voir le message
    ?! ... t'as pris le soleil trop fort Vede ? ... tu craque là ... (...)
    Hi Seb,

    nan, j'ai pris un coup de Lune ;O]

    Bon, pour revenir au sujet d'alexandra_miss : t'es où? ;O]

    vede
    ;O]
    _________________
    ...

  22. #21
    inviteefc4ae89

    Re : probleme de programmation pic16f877

    ben merci pour vos reponses,
    j'ai fais une fonction qui realise la saisie et l affichage de n positions
    mais le probleme c que le programme ne sort pas de la boucle pour revenir en programme principale.#include <16F877.h>
    #device adc=8
    #fuses HS,NOWDT,NOPROTECT,NOLVP
    #use delay(clock=20000000)
    #include <math.h>
    #include <string.h>
    #include <lcd1.c>
    #include<clavier16T.c>
    #define Bouton1 PIN_C3 //declaration de bouton 1
    #define BOUTON2 PIN_C4
    #define use_portd_kbd;#endif
    //declaration de bouton 1
    byte value ;
    byte a ;
    long int r;void affichage(int n)
    {char value1000;
    char value100;
    char value10;
    char value1,v[10];
    char position[10];
    int k;int c;int *g;
    setup_psp(PSP_DISABLED);
    setup_spi(FALSE);
    setup_timer_0(RTCC_INTERNAL|RT CC_DIV_1);
    setup_timer_1(T1_DISABLED);
    setup_timer_2(T2_DISABLED,0,1) ;
    port_b_pullups(true);
    lcd_init();
    kbd_init();
    lcd_gotoxy(1,1);
    lcd_putc("\fbienvenue ...\n");
    lcd_putc("enterez positions");
    delay_ms(2000);
    start:;
    {



    printf(lcd_putc,"\fposition n:%d",n,'\n');
    DO
    {
    value1000=kbd_getc();
    } while(value1000==0 );
    lcd_putc('\f');
    lcd_gotoxy(1,1);
    if (value1000=='*' || value1000=='+' || value1000=='-'||value1000=='c'||value1000== '/'||value1000=='='||value1000== '9'||value1000=='8') goto start;

    else
    lcd_putc(value1000);
    do
    {
    value100=kbd_getc();
    } while(value100==0);
    lcd_gotoxy(2,1);
    if (value100=='*' || value100=='+' || value100=='-'||value100=='c'||value100=='/'||value100=='=') goto start;

    else lcd_putc(value100); do
    {
    value10=kbd_getc();
    } while(value10==0);
    lcd_gotoxy(3,1);
    if (value10=='*' || value10=='+' || value10=='-'||value10=='c'||value10=='/'||value10=='=') goto start;

    else lcd_putc(value10); do
    {
    value1=kbd_getc();
    } while(value1==0);
    lcd_gotoxy(4,1);
    if (value1=='*' || value1=='+' || value1=='-'||value1=='c'||value1=='/'||value1=='=') goto start;

    else lcd_putc(value1);
    lcd_putc("enregistrer ou effacer");
    do
    { k=kbd_getc();
    }while(k==0);
    if(k=='*')
    {n=n+1;goto start;}
    else if(k=='+') {goto start;}}
    if(k=='-') lcd_putc('\f');lcd_putc(n);whi le(true);


    }


    void main()
    {byte s,a,h;
    int k;
    long int r;
    char v[10];
    r=500;a=1; // initialisation de r et a
    output_c(0xF8); // le port RC
    set_tris_c(0xF8); // configuration do PORT C (1111 1000) ==> RC7,RC6,RC5,RC4,RC3:entrées RC2,RC1,RC0: sorties
    setup_adc_ports(NO_ANALOGS); // configuration du convertisseur analogique numérique de PIC : il n ya aucune entrée analogique
    setup_adc(ADC_OFF); // mettre en arret le convertisseur analogique numérique de PIC
    setup_spi(FALSE); // mettre à l'arret l'interface de communication série du PIC
    setup_timer_0(RTCC_INTERNAL|RT CC_DIV_1); // configuration de l'horloge interne du timer0 du PIC sur la fréquence RTCC_DIV_1 , c'est à dire 4MHZ divisé par 1
    setup_timer_2(T2_DIV_BY_16, 127, 1); // configuration de l'horloge interne du timer2 du PIC : regarde la formule dans le help de picc
    port_b_pullups(true);
    //initialisation du lcd
    do {h=1;
    affichage(h);
    k=kbd_getc();}while(k==0);
    if(k=='-')
    lcd_putc("enter speed");

    if (input(bouton1) ==0) { s=1; lcd_gotoxy(7,2);a=0; // si le bouton 1 est appuyé alors aller aux cordonnées (x=7,y=2), c'est à dire deuxiéme ligne, septiéme case de lcd
    printf(lcd_putc,"sens avant");delay_ms(500);} // et afficher "sens avant"
    if (input(bouton2) ==0) { s=0;lcd_gotoxy(7,2);a=0; // si le bouton 2 est appuyé alors aller aux cordonnées (x=7,y=2), c'est à dire deuxiéme ligne, septiéme case de lcd
    printf(lcd_putc,"sens ariere");delay_ms(500);}

  23. #22
    inviteefc4ae89

    Re : probleme de programmation pic16f877

    lorsque j'appuis sur '-' au lieu d afficher ("enter speed") il refait la boucle affichage().
    s il vous plait où est exactement le probleme?

  24. #23
    Seb.26

    Re : probleme de programmation pic16f877

    utilise la balise CODE ... c'est le bouton # ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  25. #24
    inviteefc4ae89

    Re : probleme de programmation pic16f877

    mais pourquoi ca marche pas avec '-'?malgré que je l avais programmer

Discussions similaires

  1. programmation pic16f877
    Par invite052bf8af dans le forum Électronique
    Réponses: 0
    Dernier message: 24/05/2010, 12h46
  2. Programmation PIC16F877 en C
    Par invite3bb61dd1 dans le forum Électronique
    Réponses: 3
    Dernier message: 20/04/2010, 16h28
  3. programmation d'un pic16F877
    Par invite03e46a10 dans le forum Électronique
    Réponses: 17
    Dernier message: 15/07/2008, 09h41
  4. programmation CAN PIC16F877
    Par invite48a7b274 dans le forum Électronique
    Réponses: 3
    Dernier message: 16/03/2008, 11h56
  5. Programmation clavier+PIC16F877+SAA1064
    Par invite64e12149 dans le forum Électronique
    Réponses: 0
    Dernier message: 05/03/2008, 11h09
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...