goa_jr
Messages postés2Date d'inscriptiondimanche 11 avril 2004StatutMembreDernière intervention13 avril 2006
-
15 avril 2004 à 13:39
pont
Messages postés198Date d'inscriptionsamedi 2 mai 2009StatutMembreDernière intervention16 novembre 2010
-
24 mai 2009 à 18:33
Bonjour,
Je suis en train de faire un assembleur pour PIC 16F84 et j'ai repéré une chose qui me semble bizarre dans MPLAB : l'instruction qui suit un org 0x004 n'est pas à l'adresse 0x004, mais en 0x008 dans le fichier .hex généré. Je me demande donc si je n'ai pas mal compris comment était généré le fichier .hex pour les PICs.
Je voulais donc savoir si quelqu'un pouvait m'expliquer cette histoire de org ou m'indiquer une doc concernant la création de fichiers .hex pour PICs.
phenojeff
Messages postés87Date d'inscriptionjeudi 10 octobre 2002StatutMembreDernière intervention 4 avril 2008 17 avril 2004 à 07:17
parceque chaque instrution est codé sur 14bits pour un 16F84
entre org 0x000 et org 0x04 tu as 3 instruction possible max
en asm mais en hex
org 0x00 = address en hex 0x00 & 0x01 pour 16 bits
instruction 1 = 0x02 & 0x03
instruction 2 = 0x04 & 0x05
instruction 3 = 0x06 & 0x07
org 0x04 = 0x08 & 0x09
sly_online
Messages postés1Date d'inscriptionvendredi 12 août 2005StatutMembreDernière intervention12 août 2005 12 août 2005 à 19:36
SLY
moi je demarre carrement apres 20 ans de break
c pas du chinois l'assembleur mais me fo une mise a jour
comment pui je lire une carte TPS ??? sans activer la detection auto ki risk de la bousiller
Fuckly94
Messages postés32Date d'inscriptionjeudi 12 juin 2003StatutMembreDernière intervention12 avril 2006 12 avril 2006 à 21:00
Moi j'ai un peu le même problème.je souhaiterais connétre la structure
des fichiers *.hex générés par MPLAB afin de créer un programateur pour
PIC.sauf je n'est rien compris sur ce fichier,et je n'est pas trouvé la
doc de ce fichier chez microship.
goa_jr
Messages postés2Date d'inscriptiondimanche 11 avril 2004StatutMembreDernière intervention13 avril 2006 13 avril 2006 à 18:01
en fait MPLAB ne fait que remplacer les instructions et leurs opérandes (paramètres) par des nombres hexadécimaux. Dans la datasheet des microcontroleurs Microchip, tu trouveras le code hexa associé à chaque instruction.
Chaque ligne de code assembleur (instruction + opérande(s)) est codée sur 4 digits hexa (16 bits, donc 2 adresses).
Je crois que chaque ligne commence par l'adresse de la première instruction de la ligne. Sur une même ligne, les instructions sont situées à des adresses consécutives : si l'adresse au début de la ligne est 0x56, la première instruction de la ligne sera à l'adresse 0x56, la seconde instruction sera à l'adresse 0x58 (instruction sur 16 bits, donc 2 adresses), etc. Si tu as une instruction à l'adresse 0x58 et que la suivante est à l'adresse 0x96, tu dois commencer une nouvelle ligne.
Chaque ligne du fichier .hex est terminée par le checksum de tous les octets de la ligne (même l'adresse je crois).
La première ligne est une ligne d'en-tête et la dernière ligne est aussi spéciale. Je ne sais plus ce qu'elles contiennent.
Vous n’avez pas trouvé la réponse que vous recherchez ?
L'assembleur fait beaucoup d'autres travaux, comme gérer les étiquettes, les macros, calculer les déplacements, vérifier la syntaxe et générer les messages de correction, il y a beaucoup de difficulté à faire un assembleur moderne qui soit tolérant à la casse, à l'indentation, etc... afficher l'opcode et autres renseignements. ce n'est pas un simple transcodage.
Je ne vois pas l'intérêt de faire ça alors que l'assembleur de Microchip va très bien, et qu'il y a beaucoup à faire à l'utiliser, pour tout un tas d'appareils de sécurité et de surveillance chez soi, ou d'économie de gaz, d'électricité, refaire la programmation de son moteur de voiture avec un PIC pourrait donner naissance à de sérieuses économies de garagiste par exemple, mais faire un assembleur qui ne sera pas à la hauteur, c'est gaspiller son temps. En plus pour un PIC84 largement remplacé par le PIC16F88, qui est débugable, contrairement au PIC16F84...
pont