Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

IRP bit, STATUS??



  1. #1
    Thetimax

    IRP bit, STATUS??


    ------

    Bonjour a tous,

    Dans le cadre de mon projet, j'utilise un PIC 16F887. Je suis en train d'ecrire le programme et lorsque je compile celui ci, le message suivant s'indique:

    " IRP bit must be set manually for indirect access to 'res_qte_eau' variable "

    J'ai cru comprendre a l'aide du data sheet que ce bit se configure dans le registre " STATUS " mais lorsque je modifie ces bits, rien ne change...

    Comment proceder pour corriger ce probleme???

    Merci et bon week end

    ps: Je programme en C avec MikroC

    -----
    Dernière modification par Thetimax ; 31/07/2010 à 13h56.

  2. Publicité
  3. #2
    Thetimax

    Re : IRP bit, STATUS??

    Voici le code si ca peut aider....

    Code:
    sbit LCD_RS at RC4_bit;
    sbit LCD_EN at RC5_bit;
    sbit LCD_D4 at RC0_bit;
    sbit LCD_D5 at RC1_bit;
    sbit LCD_D6 at RC2_bit;
    sbit LCD_D7 at RC3_bit;
    
    sbit LCD_RS_Direction at TRISC4_bit;
    sbit LCD_EN_Direction at TRISC5_bit;
    sbit LCD_D4_Direction at TRISC0_bit;
    sbit LCD_D5_Direction at TRISC1_bit;
    sbit LCD_D6_Direction at TRISC2_bit;
    sbit LCD_D7_Direction at TRISC3_bit;
    
    unsigned short EEPROM_Read(unsigned int address);
    void EEPROM_Write(unsigned short address, unsigned short );
    void IntToStr(signed int input, char output);  // initialisation Str
    signed int ADC_Read(unsigned short channel);   // initialisation ADC
    signed int  peson1, peson2, peson3;            // variables pesons
    signed int res_pesons;                         // variable resolution des 3 pesons
    char str_res_pesons[7];                        // affichage resolution des pesons (str)
    
    signed int programme ;
    
    unsigned short qte_eau_s1, qte_eau_s2, qte_eau_s3;
    unsigned short qte_pdt_s1, qte_pdt_s2, qte_pdt_s3;
    unsigned short qte_tmp_s1;
    char res_qte_eau[3];
    char res_qte_pdt[3];
    char res_qte_tmp[3];
    
    void f_qte_eaus1() {  Lcd_Cmd(_LCD_CLEAR);
    
    
    Lcd_Out(1,1, "Quantite eau:");
    Lcd_Out(2,1, "(Silo 1)");
    Lcd_Out(2,16, "L");
    qte_eau_s1 = EEPROM_Read(0x1F);
    do {
    
    WordToStr(qte_eau_s1, res_qte_eau);
    Lcd_Out(2,11, res_qte_eau);
    
    if (RD0_bit = 1) qte_eau_s1++;
    if (RD1_bit = 1) qte_eau_s1--;
    
    delay_ms(200);
    }while(!RD2_bit);
     EEPROM_Write(0x1F, qte_eau_s1);
    
    Lcd_Out(1,1, "Quantite Pdt:");
    Lcd_Out(2,1, "(Silo 1)");
    Lcd_Out(2,15, "Kg");
    qte_pdt_s1 = EEPROM_Read(0x4F);
     do {
     WordToStr(qte_pdt_s1, res_qte_pdt);
    Lcd_Out(2,10, res_qte_pdt);
    
    if (RD0_bit = 1) qte_pdt_s1++;
    if (RD1_bit = 1) qte_pdt_s1--;
    
    delay_ms(200);
    }while(!RD2_bit);
    EEPROM_Write(0x4F, qte_pdt_s1);
    Lcd_Out(1,1, "Temps malaxage:");
    Lcd_Out(2,1, "(Silo 1)");
    Lcd_Out(2,14, "Snd");
    qte_tmp_s1 = EEPROM_Read(0x7F);
    do {
    
    WordToStr(qte_tmp_s1, res_qte_tmp);
    Lcd_Out(2,10, res_qte_tmp);
    
    if (RD0_bit = 1) qte_tmp_s1++;
    if (RD1_bit = 1) qte_tmp_s1--;
    
    delay_ms(200);
    }while(!RD3_bit);
    EEPROM_Write(0x7F, qte_tmp_s1);
    
    }
    void f_qte_eaus2() {  Lcd_Cmd(_LCD_CLEAR);
    
    Lcd_Out(1,1, "Quantite eau:");
    Lcd_Out(2,1, "(Silo 2)");
    Lcd_Out(2,16, "L");
    qte_eau_s2 = EEPROM_Read(0x2F);
    do {
    
    WordToStr(qte_eau_s2, res_qte_eau);
    Lcd_Out(2,11, res_qte_eau);
    
    if (RD0_bit = 1) qte_eau_s2++;
    if (RD1_bit = 1) qte_eau_s2--;
    
    delay_ms(200);
    }while(!RD3_bit);
    EEPROM_Write(0x2F, qte_eau_s2);
    }
    void f_qte_eaus3() {  Lcd_Cmd(_LCD_CLEAR);
    
    Lcd_Out(1,1, "Quantite eau:");
    Lcd_Out(2,1, "(Silo 1+2)");
    Lcd_Out(2,16, "L");
    qte_eau_s3 = EEPROM_Read(0x3F);
    do {
    
    WordToStr(qte_eau_s3, res_qte_eau);
    Lcd_Out(2,11, res_qte_eau);
    
    if (RD0_bit = 1) qte_eau_s3++;
    if (RD1_bit = 1) qte_eau_s3--;
    
    delay_ms(200);
    }while(!RD3_bit);
    EEPROM_Write(0x3F, qte_eau_s3);
    }
    
    void main()
    {
    PORTA = 0b00000000;
    TRISA = 0b11111111;
    ANSEL = 0x00;
    PORTB = 0b00000000;
    TRISB = 0b00000001;
    ANSELH = 0;
    PORTC = 0b00000000;
    TRISC = 0b11111111;
    PORTD = 0b00000000;
    TRISD = 0b11111111;
    ADCON0 = 0b01001001;
    ADCON1 = 0b10000000;
    INTCON = 0b0;
    
    Lcd_Init();
    res_pesons = 0;
    RD0_bit = 0;
    RD1_bit = 0;
    RD2_bit = 0;
    Lcd_Cmd(_LCD_CLEAR);
    Lcd_Cmd(_LCD_CURSOR_OFF);
    programme = 1;
    
    
    do {
    
    {
    if (programme == 1)Lcd_Cmd(_LCD_CLEAR), Lcd_Out(2,10, "Silo 1");
    
    if (programme == 2)Lcd_Cmd(_LCD_CLEAR), Lcd_Out(2,10, "Silo 2");
    
    if (programme == 3)Lcd_Cmd(_LCD_CLEAR), Lcd_Out(2,8, "Silo 1+2");
    }
    
    if (RD0_bit = 1) programme ++;
    
    if (RD1_bit = 1) programme --;
    
    if (programme == 4){ programme = 1;
    }
    if (programme == 0){ programme = 3;
    }
    {
    if (RD2_bit >0 && programme ==1) f_qte_eaus1();
    }
    {
    if (RD2_bit >0 && programme ==2) f_qte_eaus2();
    }
    {
    if (RD2_bit >0 && programme ==3) f_qte_eaus3();
    }
    Lcd_Out(1,1, "Choix produit:");
    
    delay_ms(300);
    
    
    }while(!RD3_bit);
    Lcd_Cmd(_LCD_CLEAR);
    
    
    do {                                         //Convertion ADC (pesons)
    peson1 = ADC_Read(0);                        //
    peson2 = ADC_Read(1);                        //
    peson3 = ADC_Read(2);                        //
    res_pesons = (peson1 + peson2 + peson3) /3;  //
    IntToStr(res_pesons, str_res_pesons);        //
    Lcd_Out(1,1, str_res_pesons);                //
    delay_ms(280);                               //
                                                 //
    }while(1);                                   //
    }
    Merci par avance...

  4. #3
    DavidDB

    Re : IRP bit, STATUS??

    Salut,

    C'est un Warning ou une erreur?

    Si c'est un Warning, vu le nombre de variables, IPR ne devrait pas être modifié.

    David.

  5. #4
    Thetimax

    Re : IRP bit, STATUS??

    Salut!

    Ce ne doit etre qu'un warning car la compil se termine quand meme. Cependant mon programme ne fonctionne pas une fois dans le PIC.

    Il y a deja pas mal de variables mais il m'en reste encore quelques unes a creer... cela va t il etre un probleme?


    Merci

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

    Re : IRP bit, STATUS??

    Pour le Warning, il faut regarder où se trouve tes variables "res_qte_eau"

    Si "res_qte_eau" n'est pas stocké en banque0-1, il faut ajouter manuellement dans ton code la bonne banque avec IPR dans les routines qui utilisent ces variables sans oublier de repositionner IPR correctement à la sortie de la routine...

    C'est quand même étonnant que le compilo ne gère pas lui même ce bit...

    David.

  8. #6
    Thetimax

    Re : IRP bit, STATUS??

    Comment puis je savoir ou "res_qte_eau" se trouve?? et comment puis je modifier la banque dans la routine??

    Sinon que pense tu de l'architecture du programme?

    Merci pour les conseils

  9. Publicité
  10. #7
    DavidDB

    Re : IRP bit, STATUS??

    Je ne connais pas MikroC...

    Donc, je ne sais pas t'aider pour modifer le code.

    Par contre, sur le forum d'Abcelectr... tu pourrais avoir plus de réponses, vu qu'il y a plusieurs utilisateurs de MikroC et notamment brunoG qui développe beaucoup d'applications avec ce compilo....

    David.

  11. #8
    Thetimax

    Re : IRP bit, STATUS??

    Ok, merci, je vais me renseigner par la bas et vous tiens au courant...

  12. #9
    vede

    Cool Re : IRP bit, STATUS??

    Salut,

    j'ai "chargé" ton code dans MikroC PRO 3.8...

    j'hallucine, n'ayant jamais eu ce genre de "problème" (IRP),
    même avec des programmes bien plus "conséquents" (>8Ko + limite RAM)...
    bon après, comme tout bon compilo, ben il est buggé...
    et tu utilises ses librairies "à fond" (LCD, ADC, EEprom, Conversions...) ...

    dans ta version, on voit que le "main" compilé commence après l'adresse 1023...
    cf menu "view" puis assembly, listing, stats (stats surtout)...

    chez moi ton code génère un "Warning" sur toutes les variables "eaux" (1,2 et 3...
    et même d'autres (cachées dans le .asm...)...)...
    j'ai "remodelé" ton code (et s'eût tété plus simple si indenté et commenté),
    en mettant les "fonctions" dans le "main"...

    delà plus de Warning, mais j'ai dû laisser quelques lignes "LCD_()" en commentaires... sans ça...

    mais après je vois pas...
    peut-être structure "mieux" ton code...

    et comment tu "sais" qu'il ne fonctionne pas???
    parce que moi j'ai rien compris... indente....

    disons au début du main, juste après LCD_INIT();
    si tu fais:
    LCD(1,1,"Bonjour Vede");
    Delay_ms(1000);
    et en laissant le reste...
    qu'est ce qui se passe sur ton LCD
    quand tu alimentes le tout???

    code sans Warnings :
    Code:
    sbit LCD_RS at RC4_bit;
    sbit LCD_EN at RC5_bit;
    sbit LCD_D4 at RC0_bit;
    sbit LCD_D5 at RC1_bit;
    sbit LCD_D6 at RC2_bit;
    sbit LCD_D7 at RC3_bit;
    
    sbit LCD_RS_Direction at TRISC4_bit;
    sbit LCD_EN_Direction at TRISC5_bit;
    sbit LCD_D4_Direction at TRISC0_bit;
    sbit LCD_D5_Direction at TRISC1_bit;
    sbit LCD_D6_Direction at TRISC2_bit;
    sbit LCD_D7_Direction at TRISC3_bit;
    
    signed int  peson1, peson2, peson3;            // variables pesons
    signed int res_pesons;                         // variable resolution des 3 pesons
    char str_res_pesons[7];                        // affichage resolution des pesons (str)
    
    signed int programme ;
    
    unsigned short qte_eau_s1, qte_eau_s2, qte_eau_s3;
    unsigned short qte_pdt_s1, qte_pdt_s2, qte_pdt_s3;
    unsigned short qte_tmp_s1;
    char res_qte_eau[3];
    char res_qte_pdt[3];
    char res_qte_tmp[3];
    
    void main()
    {
    PORTA = 0b00000000;
    TRISA = 0b11111111;
    ANSEL = 0x00;
    PORTB = 0b00000000;
    TRISB = 0b00000001;
    ANSELH = 0;
    PORTC = 0b00000000;
    TRISC = 0b11111111;
    PORTD = 0b00000000;
    TRISD = 0b11111111;
    ADCON0 = 0b01001001;
    ADCON1 = 0b10000000;
    INTCON = 0b0;
    
    Lcd_Init();
    res_pesons = 0;
    RD0_bit = 0;
    RD1_bit = 0;
    RD2_bit = 0;
    Lcd_Cmd(_LCD_CLEAR);
    Lcd_Cmd(_LCD_CURSOR_OFF);
    programme = 1;
    
    
    do {
    if (programme == 1)Lcd_Cmd(_LCD_CLEAR), Lcd_Out(2,10, "Silo 1");
    
    if (programme == 2)Lcd_Cmd(_LCD_CLEAR), Lcd_Out(2,10, "Silo 2");
    
    if (programme == 3)Lcd_Cmd(_LCD_CLEAR), Lcd_Out(2,8, "Silo 1+2");
    
    if (RD0_bit = 1) programme ++;
    
    if (RD1_bit = 1) programme --;
    
    if (programme == 4) programme = 1;
    
    if (programme == 0)  programme = 3;
    
    
    if (RD2_bit >0 && programme ==1)
    {
    
    
    Lcd_Out(1,1, "Quantite eau:");
    Lcd_Out(2,1, "(Silo 1)");
    Lcd_Out(2,16, "L");
    do {
    
    WordToStr(qte_eau_s1, res_qte_eau);
    Lcd_Out(2,11, res_qte_eau);
    
    if (RD0_bit = 1) qte_eau_s1++;
    if (RD1_bit = 1) qte_eau_s1--;
    
    delay_ms(200);
    }
    
    while(!RD2_bit);
    
    EEPROM_Write(0x1F, qte_eau_s1);
    
    Lcd_Out(1,1, "Quantite Pdt:");
    Lcd_Out(2,1, "(Silo 1)");
    Lcd_Out(2,15, "Kg");
    qte_pdt_s1 = EEPROM_Read(0x4F);
    
     do {
     WordToStr(qte_pdt_s1, res_qte_pdt);
    Lcd_Out(2,10, res_qte_pdt);
    
    if (RD0_bit = 1) qte_pdt_s1++;
    if (RD1_bit = 1) qte_pdt_s1--;
    
    delay_ms(200);
    }
    
    while(!RD2_bit);
    EEPROM_Write(0x4F, qte_pdt_s1);
    Lcd_Out(1,1, "Temps malaxage:");
    Lcd_Out(2,1, "(Silo 1)");
    Lcd_Out(2,14, "Snd");
    qte_tmp_s1 = EEPROM_Read(0x7F);
    
    do {
    
    WordToStr(qte_tmp_s1, res_qte_tmp);
    Lcd_Out(2,10, res_qte_tmp);
    
    if (RD0_bit = 1) qte_tmp_s1++;
    if (RD1_bit = 1) qte_tmp_s1--;
    
    delay_ms(200);
    }
    
    while(!RD3_bit);
    EEPROM_Write(0x7F, qte_tmp_s1);
    
    
    }
    
    
    if (RD2_bit >0 && programme ==2)
    {
    
    
    Lcd_Cmd(_LCD_CLEAR);
    
    Lcd_Out(1,1, "Quantite eau:");
    Lcd_Out(2,1, "(Silo 2)");
    Lcd_Out(2,16, "L");
    qte_eau_s2 = EEPROM_Read(0x2F);
    
    do {
    
    WordToStr(qte_eau_s2, res_qte_eau);
    Lcd_Out(2,11, res_qte_eau);
    
    if (RD0_bit = 1) qte_eau_s2++;
    if (RD1_bit = 1) qte_eau_s2--;
    
    delay_ms(200);
    }
    
    while(!RD3_bit);
    EEPROM_Write(0x2F, qte_eau_s2);
    
    
    }
    
    
    if (RD2_bit >0 && programme ==3)
    {
    
    
    Lcd_Cmd(_LCD_CLEAR);
    
    //Lcd_Out(1,1, "Quantite eau:");
    //Lcd_Out(2,1, "(Silo 1+2)");
    //Lcd_Out(2,16, "L");
    qte_eau_s3 = EEPROM_Read(0x3F);
    do {
    
    WordToStr(qte_eau_s3, res_qte_eau);
    Lcd_Out(2,11, res_qte_eau);
    
    if (RD0_bit = 1) qte_eau_s3++;
    if (RD1_bit = 1) qte_eau_s3--;
    
    delay_ms(200);
    }
    while(!RD3_bit);
    EEPROM_Write(0x3F, qte_eau_s3);
    
    }
    
    //Lcd_Out(1,1, "Choix produit:");
    
    delay_ms(300);
    
    
    }
    
    while(!RD3_bit);
    Lcd_Cmd(_LCD_CLEAR);
    
    
    do {                                         //Convertion ADC (pesons)
    peson1 = ADC_Read(0);                        //
    peson2 = ADC_Read(1);                        //
    peson3 = ADC_Read(2);                        //
    res_pesons = (peson1 + peson2 + peson3) /3;  //
    IntToStr(res_pesons, str_res_pesons);        //
    Lcd_Out(1,1, str_res_pesons);                //
    delay_ms(280);                               //
                                                 //
    }while(1);                                   //
    
    }
    tiens nous au jus,
    vede
    ;O]
    ______________
    ...

  13. #10
    Thetimax

    Re : IRP bit, STATUS??

    Bonjour!!

    J'ai donc compilé ton - mon code puis effectivement plus de Wanings. Un fois programmé dans le PIC, il reagit de la meme façon qu'avant (avant ces erreurs d'IRP) sauf qu'il manque certaines lignes sur le LCD (celles qui sont en commentaire forcement!).

    et comment tu "sais" qu'il ne fonctionne pas???
    parce que moi j'ai rien compris... indente....
    Car je le programme dans le PIC puis j'essaye toutes les fonctions programmées....

    disons au début du main, juste après LCD_INIT();
    si tu fais:
    LCD(1,1,"Bonjour Vede");
    Delay_ms(1000);
    et en laissant le reste...
    qu'est ce qui se passe sur ton LCD
    quand tu alimentes le tout???
    Cela me fait ré-apparaitre 2 erreurs d'IRPa la compil'... Puis une fois dans le PIC, je vois bien "bonjour Vede" au demarrage mais le reste du programme ne fonctionne pas (tout reste figé).


    Merci beaucoup

  14. #11
    vede

    Cool Re : IRP bit, STATUS??

    Salut,

    tu vas être content, j'ai réussi à "contourner" le bug (IRP on MikroC for 16F) ;O]
    en mettant tous les textes à afficher (sur le LCD) dans des variables
    (msg1 à msg9 au début du code)...

    donc le code qui ne fait plus aucun Warning :
    Code:
    sbit LCD_RS at RC4_bit;
    sbit LCD_EN at RC5_bit;
    sbit LCD_D4 at RC0_bit;
    sbit LCD_D5 at RC1_bit;
    sbit LCD_D6 at RC2_bit;
    sbit LCD_D7 at RC3_bit;
    
    sbit LCD_RS_Direction at TRISC4_bit;
    sbit LCD_EN_Direction at TRISC5_bit;
    sbit LCD_D4_Direction at TRISC0_bit;
    sbit LCD_D5_Direction at TRISC1_bit;
    sbit LCD_D6_Direction at TRISC2_bit;
    sbit LCD_D7_Direction at TRISC3_bit;
    
    unsigned short EEPROM_Read(unsigned int address);
    void EEPROM_Write(unsigned short address, unsigned short );
    void IntToStr(signed int input, char output);  // initialisation Str
    signed int ADC_Read(unsigned short channel);   // initialisation ADC
    signed int  peson1, peson2, peson3;            // variables pesons
    signed int res_pesons;                         // variable resolution des 3 pesons
    char str_res_pesons[7];                        // affichage resolution des pesons (str)
    
    signed int programme ;
    
    unsigned char msg1[] = "Quantite eau:";
    unsigned char msg2[] = "(Silo 1)";
    unsigned char msg3[]=  "'L'";
    unsigned char msg4[] = "Quantite Pdt:";
    unsigned char msg5[] = "Kg";
    unsigned char msg6[] = "Temps malaxage:";
    unsigned char msg7[] = "Snd";
    unsigned char msg8[] = "(Silo 2)";
    unsigned char msg9[] = "(Silo 1+2)";
    
    unsigned short qte_eau_s1, qte_eau_s2, qte_eau_s3;
    unsigned short qte_pdt_s1, qte_pdt_s2, qte_pdt_s3;
    unsigned short qte_tmp_s1;
    char res_qte_eau[3];
    char res_qte_pdt[3];
    char res_qte_tmp[3];
    
    void f_qte_eaus1() {  Lcd_Cmd(_LCD_CLEAR);
    
    Lcd_Out(1,1, msg1);
    Lcd_Out(2,1, msg2);
    Lcd_Out(2,16,msg3);
    qte_eau_s1 = EEPROM_Read(0x1F);
    do {
    
    WordToStr(qte_eau_s1, res_qte_eau);
    Lcd_Out(2,11, res_qte_eau);
    
    if (RD0_bit = 1) qte_eau_s1++;
    if (RD1_bit = 1) qte_eau_s1--;
    
    delay_ms(200);
    }while(!RD2_bit);
     EEPROM_Write(0x1F, qte_eau_s1);
    
    Lcd_Out(1,1, msg4);
    Lcd_Out(2,1, msg2);
    Lcd_Out(2,15,msg5);
    qte_pdt_s1 = EEPROM_Read(0x4F);
     do {
     WordToStr(qte_pdt_s1, res_qte_pdt);
    Lcd_Out(2,10, res_qte_pdt);
    
    if (RD0_bit = 1) qte_pdt_s1++;
    if (RD1_bit = 1) qte_pdt_s1--;
    
    delay_ms(200);
    }while(!RD2_bit);
    EEPROM_Write(0x4F, qte_pdt_s1);
    Lcd_Out(1,1, msg6);
    Lcd_Out(2,1, msg2);
    Lcd_Out(2,14, msg7);
    qte_tmp_s1 = EEPROM_Read(0x7F);
    do {
    
    WordToStr(qte_tmp_s1, res_qte_tmp);
    Lcd_Out(2,10, res_qte_tmp);
    
    if (RD0_bit = 1) qte_tmp_s1++;
    if (RD1_bit = 1) qte_tmp_s1--;
    
    delay_ms(200);
    }while(!RD3_bit);
    EEPROM_Write(0x7F, qte_tmp_s1);
    
    }
    void f_qte_eaus2() {  Lcd_Cmd(_LCD_CLEAR);
    
    Lcd_Out(1,1, msg1);
    Lcd_Out(2,1, msg8);
    Lcd_Out(2,16, msg3);
    qte_eau_s2 = EEPROM_Read(0x2F);
    do {
    
    WordToStr(qte_eau_s2, res_qte_eau);
    Lcd_Out(2,11, res_qte_eau);
    
    if (RD0_bit = 1) qte_eau_s2++;
    if (RD1_bit = 1) qte_eau_s2--;
    
    delay_ms(200);
    }while(!RD3_bit);
    EEPROM_Write(0x2F, qte_eau_s2);
    }
    void f_qte_eaus3() {  Lcd_Cmd(_LCD_CLEAR);
    
    Lcd_Out(1,1, msg1);
    Lcd_Out(2,1, msg9);
    Lcd_Out(2,16, msg3);
    qte_eau_s3 = EEPROM_Read(0x3F);
    do {
    
    WordToStr(qte_eau_s3, res_qte_eau);
    Lcd_Out(2,11, res_qte_eau);
    
    if (RD0_bit = 1) qte_eau_s3++;
    if (RD1_bit = 1) qte_eau_s3--;
    
    delay_ms(200);
    }while(!RD3_bit);
    EEPROM_Write(0x3F, qte_eau_s3);
    }
    
    void main()
    {
    PORTA = 0b00000000;
    TRISA = 0b11111111;
    ANSEL = 0x00;
    PORTB = 0b00000000;
    TRISB = 0b00000001;
    ANSELH = 0;
    PORTC = 0b00000000;
    TRISC = 0b11111111;
    PORTD = 0b00000000;
    TRISD = 0b11111111;
    ADCON0 = 0b01001001;
    ADCON1 = 0b10000000;
    INTCON = 0b0;
    
    Lcd_Init();
    res_pesons = 0;
    RD0_bit = 0;
    RD1_bit = 0;
    RD2_bit = 0;
    Lcd_Cmd(_LCD_CLEAR);
    Lcd_Cmd(_LCD_CURSOR_OFF);
    programme = 1;
    
    
    do {
    
    {
    if (programme == 1)Lcd_Cmd(_LCD_CLEAR), Lcd_Out(2,10, "Silo 1");
    
    if (programme == 2)Lcd_Cmd(_LCD_CLEAR), Lcd_Out(2,10, "Silo 2");
    
    if (programme == 3)Lcd_Cmd(_LCD_CLEAR), Lcd_Out(2,8, "Silo 1+2");
    }
    
    if (RD0_bit = 1) programme ++;
    
    if (RD1_bit = 1) programme --;
    
    if (programme == 4){ programme = 1;
    }
    if (programme == 0){ programme = 3;
    }
    {
    if (RD2_bit >0 && programme ==1) f_qte_eaus1();
    }
    {
    if (RD2_bit >0 && programme ==2) f_qte_eaus2();
    }
    {
    if (RD2_bit >0 && programme ==3) f_qte_eaus3();
    }
    Lcd_Out(1,1, "Choix produit:");
    
    delay_ms(300);
    
    
    }while(!RD3_bit);
    Lcd_Cmd(_LCD_CLEAR);
    
    
    do {                                         //Convertion ADC (pesons)
    peson1 = ADC_Read(0);                        //
    peson2 = ADC_Read(1);                        //
    peson3 = ADC_Read(2);                        //
    res_pesons = (peson1 + peson2 + peson3) /3;  //
    IntToStr(res_pesons, str_res_pesons);        //
    Lcd_Out(1,1, str_res_pesons);                //
    delay_ms(280);                               //
                                                 //
    }while(1);                                   //
    }
    bon après si ça fonctionne toujours pas,
    ben c'est dans le programme ;O]
    tiens nous au jus,
    vede
    ;O]
    _______________
    ...

  15. #12
    Thetimax

    Re : IRP bit, STATUS??

    Re!

    Merci a Vede pour cette solution. Elle fonctionne pour le moment, reste a voir avec la suite du programme... Je pense que le probleme viens des "[B]char[B]" qui servent a la conversion et a l'affichage sur LCD, non ?

    Merci encore

  16. Publicité

Discussions similaires

  1. Barre de status vidéo
    Par jojo66 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 07/12/2009, 11h42
  2. passer de 16 bit de la sortie du FIFO a 8 bit a l'entrée de l'UART
    Par cradleofwalid dans le forum Électronique
    Réponses: 1
    Dernier message: 21/07/2008, 20h41
  3. codeur 4 bit vers 7 bit sur VHDL
    Par Chaouki22 dans le forum Électronique
    Réponses: 4
    Dernier message: 06/05/2008, 20h56
  4. Compilateur CCS C - initialiser struct bit à bit ?
    Par branqueira dans le forum Électronique
    Réponses: 4
    Dernier message: 26/11/2007, 14h37
  5. problem Status Monitor
    Par Cornemuse dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 17/01/2004, 07h33
Découvrez nos comparatifs produits sur l'informatique et les technologies.