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

aide MikroC



  1. #1
    Nicolelectro

    aide MikroC


    ------

    Bonjour à tous,

    Je dois afficher une valeur sur un LCD avec un PIC18F26K20 que je programme avec mikroC (c'est la première fois que j'utilise ce logiciel). Seulement voilà j'ai écrit mon code mais j'arrive pas à le compiler.

    Voici mon code:

    /*
    ****************************** ****************************** ****
    * Affichage Cisaille *
    * Nom du Programme : Cisaille.c *
    * *
    * Lieu : BOBST SA *
    * Auteur : Chatton Nicolas et Christian N'Zuzi *
    * Date : 21.04.2010 *
    * *
    * Modifications *
    * Auteur : ............ *
    * Date : ............ *
    * Raisons : .............................. ... *
    * .............................. ... *
    * *
    * PIC : PIC18F26K20 *
    * fosc : 16MHz *
    * *
    * Description : *
    * Programme comptant le nombre d'impulsions émisent par le *
    * codeur incrémental d'une cisaille et affichant la distance *
    * correspondante sur un afficheur LCD. *
    ****************************** ****************************** ****
    */

    // Les importations de librairies

    // Les fonctions du programme

    #define NBPULSE 9
    #define TAILLE 10
    #define CENT 100
    #define DIX 10

    // Les déclarations

    int tab_intChiffre [TAILLE] = {0x30, 0x31,0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39};
    int tab_intCaractere [TAILLE] = {0x64, 0x69,0x73, 0x74, 0x61, 0x6E, 0x63, 0x65, 0x3A, 0xFE};
    unsigned int Distance, Distance_Bis;
    unsigned short LCD, Centaine, Dizaine, Unite, Indice, Flanc, Lcd_Commande;

    /* PROGRAMME PRINCIPALE */

    void main ()
    {

    /* initialisation PIC */

    PORTB = 0; // Port B en sortie
    PORTC = 0; // Port C en sortie
    PORTA = 0x07; // Port A.3 A.4 A.5 A.6 A.7 en sortie

    OSCON = 0x77; // Oscillateur interne 16MHz

    /* initialisation LCD */

    Delay_ms (30); // temporisation de 30ms
    PORTC.2 = 0; // RS = 0
    PORTC.0 = 0; // RW = 0
    PORTC.3 = 0; // E = 0

    Lcd_Commande = 0x30; // mode 8 bits
    goto Commande; // Commande (Lcd_Commande ; Aucun)

    Lcd_Commande = 0x14; // pas de curseur
    goto Commande; // Commande (Lcd_Commande ; Aucun)

    Lcd_Commande = 0x0C; // écriture de gauche à droite
    goto Commande; // Commande (Lcd_Commande ; Aucun)

    Lcd_Commande = 0x01; // efface l'écran
    goto Commande; // Commande (Lcd_Commande ; Aucun)
    Delay_ms (10);

    /* initilaisation */

    Start: // DEBUT du programme
    if (PORTA.2 = 0) // SI mise à 0 = 0 ALORS
    Distance = 0; // Distance = 0

    else // SINON
    {
    Ditance = Eeprom_Read (0x00); // Ditance = EEPROM [0]
    Delay_ms (500); // temporisation de 500ms
    } // FIN
    goto Affichage; // Affichage (Distance ; Aucun)
    // FIN Initialisation

    /* cisaille */
    // DEBUT Cisaille
    for (Flanc = 0; Flanc = NBPULSE - 1; Flanc ++) // POUR FLanc = 0 à 8 FAIRE
    {
    while (PORTA.0 = 0) // TANTQUE Impulsion = 0 FAIRE
    { // rien
    /*goto Affichage;*/
    } // FIN
    Flanc ++; // incrémente Flanc
    } // FIN

    if (PORTA.1 = 1) // SI sens rot = 1 ALORS
    Distance ++; // incrémente Distance
    else // SINON
    {
    if (PORTA.2 = 0) // SI mise à 0 = 0 ALORS
    Distance = 0; // Ditstance = 0
    else // SINON
    Distance --; // décrémente Distance
    // FIN
    } // FIN
    Eeprom_Write (0x00, Distance); // sauvegarde la distance dans l'EEPROM
    goto Affichage; // Affichage (Distance ; Aucun)
    goto Start; // FIN Cisaille

    /* SOUS-PROGRAMME */

    Affichage: // DEBUT Affichage

    for (Indice = 0; Indice = DIX - 1; Indice ++) // POUR Indice = 0 à 9 FAIRE
    {
    LCD = tab_intCaractere [Indice]; // prend la valeur dans le tableau Caractere
    goto Affichage_LCD; // Affichage_LCD (LCD ; Aucun)
    } // FIN
    Centaine = Distance / CENT;
    LCD = tab_intChiffre [Centaine]; // prend la valeur dans le tableau Chiffre
    goto Affichage_LCD; // Affichage_LCD (LCD ; Aucun)

    Distance_Bis = Distance - CENT * Centaine;
    Dizaine = Distance_Bis / DIX;
    LCD = tab_intChiffre [Dizaine]; // prend la valeur dans le tableau Chiffre
    goto Affichage_LCD; // Affichage_LCD (LCD ; Aucun)

    Unite = Distance_Bis - DIX * Dizaine
    LCD = tab_intChiffre [Unite]; // prend la valeur dans le tableau Chiffre
    goto Affichage_LCD; // Affichage_LCD (LCD ; Aucun)

    LCD = 0xFE; // afficher ' '
    goto Affichage_LCD; // Affichage_LCD (LCD ; Aucun)

    LCD = 0x6D; // afficher 'm'
    goto Affichage_LCD; // Affichage_LCD (LCD ; Aucun)

    LCD = 0x6D; // afficher 'm'
    goto Affichage_LCD; // Affichage_LCD (LCD ; Aucun)
    // return // FIN Affichage

    Affichage_LCD: // DEBUT Affichage_LCD

    PORTC.2 = 1; // RS = 1
    PORTC.0 = 0; // RW = 0
    PORTB = LCD; // affiche un caractère
    PORTC.3 = 1; // E = 1
    Delay_ms (1); // temporisation de 1ms
    PORTC.3 = 0; // E = 0
    Delay_ms (10);
    return // FIN Affichage LCD

    Commande: // DEBUT Commande

    PORTC.2 = 0; // RS = 0
    PORTC.0 = 0; // RW = 0
    PORTB = Lcd_Commande; // envoie une commande à l'afficheur LCD
    PORTC.3 = 1; // E = 1
    Delay_ms (1); // temporisation de 1ms
    PORTC.3 = 0; // E = 0
    Delay_ms (10); // temporisation de 10ms
    return // Fin Commande
    }


    Lors de la comilation il m'affiche deux messages d'erreur:

    1:0 11 ';' expected but 't open "cpp.err" found
    1:0 12 Internal error

    Merci de m'aider.

    -----

  2. Publicité
  3. #2
    vede

    Cool Re : aide MikroC

    Bonjour,

    le compilo te "dit" qu'il manque un ou des point-virgules ;
    par exemple à la fin de cette ligne :
    Unite = Distance_Bis - DIX * Dizaine

    vede
    ;O]
    ____________________
    Vive les PICS ;O]

  4. #3
    maximilien

    Re : aide MikroC

    Citation Envoyé par vede Voir le message
    Bonjour,

    le compilo te "dit" qu'il manque un ou des point-virgules ;
    par exemple à la fin de cette ligne :
    Unite = Distance_Bis - DIX * Dizaine
    Et même si après il compile bien.... ça ne fonctionnera pas car les TRISX ne sont pas définis.

  5. #4
    Nicolelectro

    Re : aide MikroC

    Ok merci.
    Sinon comment on définit les TRISX ?

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

    Re : aide MikroC

    Citation Envoyé par Nicolelectro Voir le message
    Ok merci.
    Sinon comment on définit les TRISX ?
    Salut,

    TRISA = 0x00;
    TRISA = 0b00000000;
    TRISA.F0 = 0;
    TRISA.F1 = 0;
    .
    .
    .
    .
    .
    TRISA.F7 = 0;

    A+

    Laurent

  8. #6
    Nicolelectro

    Re : aide MikroC

    Merci beaucoup !!!

  9. Publicité
  10. #7
    maximilien

    Re : aide MikroC

    Citation Envoyé par Nicolelectro Voir le message
    Ok merci.
    Sinon comment on définit les TRISX ?
    1) Quand tu utilises un composant : voir la datasheet
    2) Quand tu utilises un logiciel : voir l'aide


    Citation Envoyé par laurentdu38 Voir le message
    TRISA = 0x00;
    TRISA = 0b00000000;
    TRISA.F0 = 0;
    TRISA.F1 = 0;
    Pas spécialement, c'est suivant le montage, ceci n'explique en rien comment ça fonctionne.

    Citation Envoyé par Nicolelectro Voir le message
    (c'est la première fois que j'utilise ce logiciel).
    Voir 1) et 2).

Discussions similaires

  1. help ::TIMER1+MIKROC!!!
    Par hissokaaaa dans le forum Électronique
    Réponses: 4
    Dernier message: 23/02/2010, 13h36
  2. Programmation PIC 16F84A avec MIKROC:AIDE SVP
    Par hissokaaaa dans le forum Électronique
    Réponses: 8
    Dernier message: 09/10/2009, 18h08
  3. aide programme c sur MIKROC
    Par coeur noire dans le forum Électronique
    Réponses: 31
    Dernier message: 02/05/2009, 19h30
  4. mikroC
    Par sloter dans le forum Électronique
    Réponses: 6
    Dernier message: 09/03/2009, 22h13
  5. MikroC plantage
    Par F1TVB dans le forum Électronique
    Réponses: 21
    Dernier message: 20/08/2006, 21h50
Découvrez nos comparatifs produits sur l'informatique et les technologies.