et bien ton fichier asm, n'est pas un fichier asm, mais un fichier .c (les instructions dans le fichier sont du C et pas de l'assembleur PIC)
Donc aucune chance que mpasm (si présent) puisse le compiler => donc obliger de passer par xc8 pour le compiler
ok, merci pour ta réponse. Je regarde ça et je vais essayer de le mettre Bonne soirée à tous.
Nul n'est à l'abris de dire une ânerie !
Voici en fichier joint, le programme codé en C directement utilisable avec le compilateur XC8, mais je n'arrive pas à le compiler. Pouvez-vous m'aider, svp.
Nul n'est à l'abris de dire une ânerie !
un peu plus de précision sur le "je n'arrive pas à le compiler" parce que c'est vague. il y a une (ou plusieurs) erreur de compilation? si oui laquelle (ligne de l'erreur et message)
PS je me demande si il ne manque pas l'include du PIC16F877
Dernière modification par umfred ; 20/12/2024 à 09h50.
Ok, lorsque je regarde le code du PIC16F877 d'une simple led commandée par un bouton poussoir, l'include semble identique.
/*
Code:* File: projet01.c * Author: bidj * * Created on 16 juin 2019, 18:45 */ #include "xc.h" // CONFIG #pragma config FOSC = HS // Oscillator Selection bits (HS oscillator) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled) #pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT enabled) #pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled) #pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming) #pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off) #pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control) #pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off) // Define LED and button pin #define LED RB0 #define Bouton_p RB1 #define _XTAL_FREQ 20000000 void main(void) { TRISB0 = 0; //output TRISB1 = 1; //input LED = 0; while(1){ if(Bouton_p) LED = 1; else LED = 0; } return; }
Dernière modification par JPL ; 20/12/2024 à 15h34. Motif: ajout de la balise Code pour garder l’indentation
Nul n'est à l'abris de dire une ânerie !
ça n'aide pas à connaitre ton problème de compilation (mon hypothèse de l'include manquant est peut-être "compensé" par un paramètre dans la commande de compilation. Sans plus d'info sur le problème que tu rencontres, pas trop possible de t'aider efficacement.
Je repars du début.
1°) MPLAB peut-il lire des fichiers en C, en asm ou les deux ?
Nul n'est à l'abris de dire une ânerie !
MPLAB sans X peut.
Mais X ou pas, ils gèrent les fichiers de leur environnement.
Ka me semble basique, ou alors je n'ai pas compris la question.
L'électronique c'est comme le violon. Soit on joue juste, soit on joue tzigane . . .
bah oui, tous (je m'avance un peu, il y a sans doute des vieilles versions sans compilateur C), du moment qu'il ai un compilateur C.
Les fichiers C, asm sont basiquement des fichiers textes, mais un fichier C contient des instructions en langage C et un fichier asm contient des instructions en assembleur.
Je pense que si ton fichier porte l'extension .asm alors qu'il contient du C, le compilateur va penser que c'est un fichier assembleur et donc lancer uniquement la phase assemblage (compilation asm) et donc va indiquer qu'il ne reconnait pas les instructions (puisque c'est du C et pas de l'assembleur).
Pour résumé, vu que ton fichier contient des instructions en langage C, il doit avoir l'extension .c pour être compiler correctement.
J'ai passé le fichier dans MPLAB IDE XPRESS (la version online) et la compilation me remonte l'absence de définition de _XTAL_FREQ, puis de la présence des ; au début de commentaires (ça aurait du me sauter au yeux, mais bon)
Donc ci-joint le fichier avec les corrections (penser à changer l'extension en .c):
- ajout de la défintiion de _XTAL_FREQ en début => #define _XTAL_FREQ 8000000 (pour 8MHz)
- remplacement des ; par // pour que ce soit des commentaires en C (le ; c'est pour les commentaires en asm de mémoire)
CodeC.txt
J'ai réussi (peut être) à convertir mon programme en .C J'aurai aimé que tu jettes un oeil dessus pour voir si le code est bon, mais apparemment on ne peux pas envoyer de fichier avec l'extension C ; je voudrai sortir ensuite le fichier HEX de ce programme.
Nul n'est à l'abris de dire une ânerie !
Tu rajoutes l’extension .TXT (par exemple Code.C.TXT)
Rien ne sert de penser, il faut réfléchir avant - Pierre Dac
Après modification du fichier, voici le code à vérifier si tu le veux bien.
Merci.
Nul n'est à l'abris de dire une ânerie !
En tout cas, le code compile sans erreur.