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.
-----