besion d'aide pour programmer un pic 16F877
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

besion d'aide pour programmer un pic 16F877



  1. #1
    invitea6b47a23

    besion d'aide pour programmer un pic 16F877


    ------

    Entrer des valeurs dans un pic 16F877A à travers un clavier 4X4

    Bonjour!
    j'essaie d'écrire un programme pour entrer des nombres à 4 chiffres dans un pic 16F877A à l'aide d'un clavier 4X4 et d'afficheur ces nombres sur un LCD 4X20 à l'aide du logiciel MikroC pro.
    Voilà mon programme qui ne s'exécute par correctement.

    S'il vous plait, m'indiquer où j'ai fait l'erreur et merci d'avance!

    unsigned short kp, cnt, oldstate = 0,i=0;
    char txt[6];
    float T[6];


    // Keypad module connections
    char keypadPort at PORTD;
    // End Keypad module connections

    // LCD module connections
    sbit LCD_RS at RB2_bit;
    sbit LCD_EN at RB3_bit;
    sbit LCD_D4 at RB4_bit;
    sbit LCD_D5 at RB5_bit;
    sbit LCD_D6 at RB6_bit;
    sbit LCD_D7 at RB7_bit;
    sbit LCD_RS_Direction at TRISB2_bit;
    sbit LCD_EN_Direction at TRISB3_bit;
    sbit LCD_D4_Direction at TRISB4_bit;
    sbit LCD_D5_Direction at TRISB5_bit;
    sbit LCD_D6_Direction at TRISB6_bit;
    sbit LCD_D7_Direction at TRISB7_bit;
    // End LCD module connections


    char txt1[] = " Initialisation ";
    char txt2[] = " ...Machine prete...";
    char txt3[] = "Largeur:";
    char txt4[] = "ON:valider =:effacer";
    char txt5[] = "X:annuler";

    void main() {
    cnt = 0; // Reset counter
    Keypad_Init(); // Initialize Keypad
    ADCON1=6;
    Lcd_Init(); // Initialize LCD
    Lcd_Cmd(_LCD_CLEAR); // Clear display
    Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
    Lcd_Out(2,6,txt1); // Write text in first row
    delay_ms(2000);
    Lcd_Cmd(_LCD_CLEAR);
    Lcd_Out(1,1,txt2); // Write text in second row
    //Lcd_Out(2,1,txt3);
    //Lcd_Out(3,1,txt4);
    //Lcd_Out(4,1,txt5);

    do {
    kp = 0; // Reset key code variable

    // Wait for key to be pressed and released
    do
    kp = Keypad_Key_Click(); // Store key code in kp variable
    while (!kp);
    // Prepare value for output, transform key to it's ASCII value
    switch (kp) {

    case 1: kp = 55; break; // 7 // Uncomment this block for keypad4x4
    case 2: kp = 56; break; // 8
    case 3: kp = 57; break; // 9
    case 4: kp = 27; break; // ESC
    case 5: kp = 52; break; // 4
    case 6: kp = 53; break; // 5
    case 7: kp = 54; break; // 6
    case 8: kp = 127; break; // DEL
    case 9: kp = 49; break; // 1
    case 10: kp = 50; break; // 2
    case 11: kp = 51; break; // 3
    case 12: kp = 95; break; // -
    case 13: kp = 42; break; // *
    case 14: kp = 48; break; // 0
    case 15: kp = 61; break; // =
    case 16: kp = 43; break; // +

    }
    barnabe: i=0;
    do { steve: kp = Keypad_Key_Click();}
    while( (Kp==27)||(Kp==127)||(Kp==95)| |(Kp==42)||(Kp==61)||(Kp==43)) ;
    T[i]= kp;
    i=i+1;
    FloatToStr(T[i], txt);
    // WordToStr(cnt, txt); // Transform counter value to string
    Lcd_Out(2, 9, txt); // Display counter value on LCD
    if(i<1){goto steve;}
    else
    if(i>2){goto barnabe;}
    else
    do{
    Lcd_Out(3, 1, txt4);
    Lcd_Out(4, 1, txt5);
    kp = Keypad_Key_Click(); // Store key code in kp variable
    } while(kp!=42);
    PORTB.B0=1;
    } while (1);
    }

    -----

  2. #2
    JPL
    Responsable des forums

    Re : besion d'aide pour programmer un pic 16F877

    Selon la nature du problème cette demande serait plus à sa place soit ici soit dans le forum Électronique. Je peux la déplacer si cela paraît souhaitable.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

Discussions similaires

  1. EXOS pour programmer un PIC 16F877
    Par invitef77a8bc5 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 01/06/2011, 16h59
  2. Réponses: 9
    Dernier message: 10/04/2009, 08h15
  3. programmer le pic 16f877
    Par invited776d929 dans le forum Électronique
    Réponses: 15
    Dernier message: 09/02/2009, 05h16
  4. Programmer un PIC 16f877 en C ?
    Par invite8e845c4c dans le forum Électronique
    Réponses: 1
    Dernier message: 06/01/2009, 19h10
  5. Réponses: 0
    Dernier message: 18/03/2007, 16h43