Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
On parle des Pics, sans rapport avec le langage ou la programmation

Modérateur : Jérémy

Clignoter led proteus, MPLAB X, langage C et assembleur, fichier Hex
passionneElectr
Débutant
Débutant
Messages : 61
Enregistré en : février 2016

#1 Message par passionneElectr » lun. 22 févr. 2016 16:40

Salut,

Je souhaite faire clignoter une del (LED) via un pickit3 et le pic 10F220.

Pour cela faut écrire le code en assembleur . L’autre soucis est ,comme on me l'a conseille ici même,
de tester mon programme écris en C via proteus (via un fichier hex entre autre). Ainsi voici ce que
j’ai commencé à faire ainsi que mes questions :

1°/

concernant la simulation via proteus (j'ai la téléchargé la version gratuite d'évaluation) :
J’ai commencé à faire cela : (ps, d’après code en C, proposé un peu plus loin, j'aurais peut être à modifier
entrées/sorties du schémas ci dessous)


simu proteus.jpg


le code en C pour mon pic est le suivant: ce code est sensé me faire clignoter ma led via un pic10F220

{doc du pic10F220 : http://ww1.microchip.com/downloads/en/D ... 01270F.pdf ]


************************************************************************************************************
#include <xc.h>
/***** CONFIGURATION *****/
__CONFIG(MCLRE_OFF & CP_OFF & WDTE_OFF & MCPU_OFF & IOSCFS_4MHZ );
#define _XTAL_FREQ 4000000 // oscillator frequency for _delay()
/***** MAIN PROGRAM *****/
void main()
{
// Initialisation
ADCON0 = 0; // GP0 and GP1 configured as digital I/O
OPTION = 0b00000111; //If the T0CS bit is set to ‘1’, it will override the TRIS function on the T0CKI pin
TRIS = 0b111000; // configure GP2 (only) as an output

// Main loop
for (;;)
{
GPIO = 0b000100; // turn on LED on GP2 (bit 1)
__delay_ms(250); // stay on for 250 ms
GPIO = 0b000110; // turn on LED on GP2 (bit 1)
__delay_ms(250); // stay on for 250 ms
GPIO = 0b000111; // turn on LED on GP2 (bit 1)
__delay_ms(250); // stay on for 250 ms
GPIO = 0b000000; // turn on LED on GP2 (bit 1)
__delay_ms(250);
} // repeat forever
}

****************************************************************************************************************

Or pour simuler me faut un fichier hex.

Ainsi question 1 : savez-vous comment générer un fichier hex à partir du code en C ci-avant
( et "spécifique" à mon pic10F220)
??


2°/
Quand j’utilise MAPX, je peux (par défaut) simplement programmer en assembleur.

1 choix zoom.jpg


Je sais que via « other » de ci-dessus je peux inclure d’autres compilateurs
(genre hi tech etc) mais je souhaite rester avec le compilateur par défaut soit mpsam.
J’ai déjà le corps du code grâce au logiciel MplabX :

2 le corps code en assemb.PNG


voici corps ci-dessus que je reproduis ci-dessous :

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
RES_VECT CODE 0x0000 ; processor reset vector
GOTO START ; go to beginning of program
MAIN_PROG CODE ; let linker place main program
START
; TODO Step #5 - Insert Your Program Here
;la partie ci dessus incluse aprés avoir modifié la frequence de 8 à 4 MHz

#include "p10F220.inc"
; CONFIG
; __config 0xFFFE

__CONFIG _IOSCFS_4MHZ & _MCPU_OFF & _WDTE_ON & _CP_OFF & _MCLRE_ON
; la partie ci dessus: aprés avoir modifié frequence de 8 à 4 Mhz
MOVLW 0x55 ; your instructions
GOTO $ ; loop forever
END
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

question 2 : Existe-t-il un logiciel qui traduit un programme en C (au debut proposé) vers un programme en assembleur
(ci dessous où j'ai que le "corps" mais pas le code complet) compréhensible par le pic10F220.?




A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Clignoter led proteus, MPLAB X, langage C et assembleur, fichier Hex
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#2 Message par Jérémy » lun. 22 févr. 2016 17:18

Bonsoir passionneElectr ,

Ne lâche pas le morceau, tu verra comment c'est trop bien quand ça fonctionne ..... Tu me ressemble à mes débuts , c'est à dire que tu confonds tout, et c'est normal j'ai envie de te dire .

Un pic se programme avec un programmateur ( programmateur = PICKIT3).
Un programmateur injecte dans ton pic un programme compilé composé de 0 et de 1 seulement .
Pour obtenir un programme compilé ( suite de 0 et de 1 incompréhensible pour l’humain), il faut un compilateur . ( compilateur = XC8)
Ce compilateur transforme le programme que tu écris dans ton langage en un programme compilé . Ton langage peut être de l'asm, du C , du basic du paskal pour ne cité qu'eux .
Pour ecrire ton programme tu as besoin d'un environnement de développement - la ou tu écris tes lignes) . ( IDE = MPLABx).

Donc pour résumé à l'envers .

Tu ouvre ton IDE ( MPLABx), qui te permet d'ecrire un programme presque en humain :D .
Quand tu appui sur le bouton compile ou build ( je sais plus comment c'est sous MPLABx), ton IDE envoie ton programme au compilateur, qui le transforme en un programme compilé ( fait de 0 et 1) mais aussi il fait un fichier .HEX . Ton programme compilé va ensuite transité par ton programmateur ( PICKIT3) pour allé se mettre dans ton PIC.

Voila très grossièrement comment ça se passe . Tu apprendras tout les rudiments avec l’expérience. J'en suis moi même au balbutiements .

Je te conseille de commenter à fond tes lignes de code.

Tu ne peut pas à partir d'un programme écrit en C obtenir un programme en ASM ( enfin je crois) .
Avec un programme en C tu peut obtenir un fichier en .hex après compilation, cherche bien dans mplab ou dans le répertoire ou tu as créer ton programme. Avec MikroC il met le .hex dans le même répertoire.

j’espère avoir répondu a tes deux questions ?
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Clignoter led proteus, MPLAB X, langage C et assembleur, fichier Hex
passionneElectr
Débutant
Débutant
Messages : 61
Enregistré en : février 2016

#3 Message par passionneElectr » lun. 22 févr. 2016 17:39

je te remercie pour ton comm,

Jérémy a écrit :Un pic se programme avec un programmateur ( programmateur = PICKIT3).
Un programmateur injecte dans ton pic un programme compilé composé de 0 et de 1 seulement .
Pour obtenir un programme compilé ( suite de 0 et de 1 incompréhensible pour l’humain), il faut un compilateur . ( compilateur = XC8)
Ce compilateur transforme le programme que tu écris dans ton langage en un programme compilé . Ton langage peut être de l'asm, du C , du basic du paskal pour ne cité qu'eux .
Pour ecrire ton programme tu as besoin d'un environnement de développement - la ou tu écris tes lignes) . ( IDE = MPLABx).

Donc pour résumé à l'envers .

Tu ouvre ton IDE ( MPLABx), qui te permet d'ecrire un programme presque en humain :D .
Quand tu appui sur le bouton compile ou build ( je sais plus comment c'est sous MPLABx), ton IDE envoie ton programme au compilateur, qui le transforme en un programme compilé ( fait de 0 et 1) mais aussi il fait un fichier .HEX . Ton programme compilé va ensuite transité par ton programmateur ( PICKIT3) pour allé se mettre dans ton PIC.

Voila très grossièrement comment ça se passe . Tu apprendras tout les rudiments avec l’expérience. J'en suis moi même au balbutiements .



Je sais cela mais peut être que ma question est posée de telle manière qui laisse à penser que je n'avais pas assimilé cela

Jérémy a écrit :Bonsoir passionneElectr ,

Tu ne peut pas à partir d'un programme écrit en C obtenir un programme en ASM ( enfin je crois) .



j'ai lu (sur un site) que c'était possible. Mais comment concrètement je ne sais pas (certains parlent d'un certains "gcc" etc...

Jérémy a écrit :Bonsoir passionneElectr ,

Avec un programme en C tu peut obtenir un fichier en .hex après compilation, cherche bien dans mplab
ou dans le répertoire ou tu as créer ton programme.



Sous maplabX: il y a un compilateur par défaut, qui s'appel Mpsam. Ce compilateur pour certains pic va compiler
un langage écrit en C mais pour d'autres Pic il compilera un langage écrit en assembleur. Or pour le pic10F220, il compile par défaut un langage écrit en asembleur (mais pas de possibilité d'ecrire en c puis de compiler). Je pourrais telecharger un autre compilateur que le mpsam
(avec lequel je pourrais compiler mon pic via langage C au lieu de l'assembleur) puis le compiler en hex...mais si je pouvais traduire le langage C (cité) en assembleur c'est plus rapide (sinon cela m'obligerait à rechercher, s'il existe un compilateur qui accepte langage en C, pour le 10F220, sous MplabX etc).

ps: peut être aussi que MPsam compile toujours un langage écrit en assembleur..je ne sais pas...mais d'autres compilateurs vont partir toujours d'un langage écrit en C....(exemple le HI-TECH PICC )
Je suis partis du langage C: car j'ai trouvé via le net ce code qui est sensé marché (mais je n'ai pas encore trouvé de code qui fait clignoter
ma led via le 10F220 écrit en assembleur).
Modifié en dernier par passionneElectr le lun. 22 févr. 2016 18:01, modifié 2 fois.

Clignoter led proteus, MPLAB X, langage C et assembleur, fichier Hex
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#4 Message par Jérémy » lun. 22 févr. 2016 17:46

ok, si tu as compris c'est l'essentiel !.

Je ne comprends pas ou ne sait pas, l’intérêt d'ecrire un programme en C et de le transformé en assembleur ? Ce sont deux langages différents mais qui mène au même résultat ; un programme compilé et/ou un programme en .hex .

Pour faire clignoter en ASM, je crois que tu prends beaucoup al tête pour pas grand chose . Ouvre un post dans la partie ASM pour demander de l'aide pour faire clignoter une led en ASM . ( en fournissant un minimum de travail ) .

Peut être que pour le coup c'est moi , qui n'est pas saisi ou tu voulais en venir avec tout ce mic-mac . Il me semble que tu écrive en ASM ou en C le compilateur te sorte un .hex ;

PS : Fais gaffe au code trouvé sur le NET, il faut s'en inspiré mais tu gagneras toujours à le faire toi même !
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Clignoter led proteus, MPLAB X, langage C et assembleur, fichier Hex
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#5 Message par Gérard » lun. 22 févr. 2016 17:52

Regarde http://www.mikroe.com/mikroc/pic/, tu trouveras le compilateur C de Mikroelektronika. Tu écris ton programme, tu compiles, il fait un asm et un hex (si pas d'erreur). Ce hex, tu le charges avec PK3 et tu l'envoies dans le PIC.

Où se situe ton problème?
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

Clignoter led proteus, MPLAB X, langage C et assembleur, fichier Hex
passionneElectr
Débutant
Débutant
Messages : 61
Enregistré en : février 2016

#6 Message par passionneElectr » lun. 22 févr. 2016 17:56

Jérémy a écrit :Je ne comprends pas ou ne sait pas, l’intérêt d'ecrire un programme en C et de le transformé en assembleur ? Ce sont deux langages différents mais qui mène au même résultat ; un programme compilé et/ou un programme en .hex .

Pour faire clignoter en ASM, je crois que tu prends beaucoup al tête pour pas grand chose . Ouvre un post dans la partie ASM pour demander de l'aide pour faire clignoter une led en ASM .



je ne me suis pas encore penché sur le detail du langage assembleur ni sur le "détail du pic.Je connais les langages
et les pics seulement dans leurs grandes lignes.

C'est juste pour tester mon programmateur (ainsi que les outils dispos tels que compilateurs, logiciels etc) .Pour que
dés que je me ^penche" en détail sur la théorie, je puisse, sans perdre trop de temps, vérifier cette théorie.

D'où le fait que je parte sur un programme qui est sensé marche: le seul programme cohérent que j'ai trouvé est en langage C.
Or pour le compiler via MapLabX faut que ce programme soit écrit en assembleur.

(en même temps je (re)vois d'autre notions et d'autre logiciels tels que proteus et autres)


après effectivement il est interessant aussi d'essayer de l’écrire directement en langage assembleur et d'ouvrir un poste dans la partie assembleur

Gérard a écrit :Regarde http://www.mikroe.com/mikroc/pic/, tu trouveras le compilateur C de Mikroelektronika. Tu écris ton programme, tu compiles, il fait un asm et un hex (si pas d'erreur). Ce hex, tu le charges avec PK3 et tu l'envoies dans le PIC.

Où se situe ton problème?


je sais qu'il existe par exemple Hi-Tech-Picc (peut être que mikroelectronika utilise aussi ce dernier)

Clignoter led proteus, MPLAB X, langage C et assembleur, fichier Hex
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#7 Message par Jérémy » lun. 22 févr. 2016 18:00

Quel idiot je suis .....

Bien sur que MikroC peut sortir un programme en .asm a partir d'un programme écrit en C.
Je viens de regarder , cela se trouve dans les fichiers de sortie .

Merci Gérard, je serais moins bête ce soir encore
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Clignoter led proteus, MPLAB X, langage C et assembleur, fichier Hex
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#8 Message par Gérard » lun. 22 févr. 2016 18:02

C'est quoi qui est relié à GP2 sur ton schéma?
Une bonne habitude à prendre, tout en sortie sauf ce qui est en entrée. On ne laisse pas une entrée en l'air, une sortie peut être laissée en l'air.

Pour faire clignoter la LED :

LED = GPIO.1 (par exemple suivant ton compilateur)
DEBUT:

LED = 1
delayms 500
LED = 0
delayms 500
GOTO DEBUT
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

Clignoter led proteus, MPLAB X, langage C et assembleur, fichier Hex
passionneElectr
Débutant
Débutant
Messages : 61
Enregistré en : février 2016

#9 Message par passionneElectr » lun. 22 févr. 2016 18:03

Gérard a écrit :Regarde http://www.mikroe.com/mikroc/pic/, tu trouveras le compilateur C de Mikroelektronika. Tu écris ton programme, tu compiles, il fait un asm et un hex (si pas d'erreur). Ce hex, tu le charges avec PK3 et tu l'envoies dans le PIC.

Où se situe ton problème?


ok j'ai mal lu je vais voir de suite cela merci

a+

Clignoter led proteus, MPLAB X, langage C et assembleur, fichier Hex
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#10 Message par Gérard » lun. 22 févr. 2016 18:04

Hi Tech est un autre compilateur, rien à voir avec Mikroelektronika.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.


Retourner vers « Généralités sur les PICs »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 32 invités