Salut,
Je suis entrain d'apprendre le PIC
cmpt_UN EQU 0x0C
cette instruction signifie quoi exactement? c'est quoi 0x0c merci beacoup.
A+
-----
Salut,
Je suis entrain d'apprendre le PIC
cmpt_UN EQU 0x0C
cette instruction signifie quoi exactement? c'est quoi 0x0c merci beacoup.
A+
Salut,
0x0c = nombre en héxadécimal ( base 16)
0x indique que c'est de l'héxa, 0c = 12 en décimal.
cmpt_UN est equivalent à ( EQU ) 12.
A+ ....Rémy.
Salut,
0x0C est l'adresse physique en mémoire RAM du µC.
EQU est une directive qui détermine une équivalence avec les deux termes de la ligne de code.
Donc, Chaque fois que l'assembleur rencontrera "cmpt_UN", il le remplacera par 0x0C.
Pourquoi 0x0C? C'est le choix du programmeur, mais cette adresse doit être comprise dans les adresses libres de la RAM. Regarde dans le datasheet du 16F84 afin de connaître les adresses disponibles pour l'utilisateur.
Une équivalence est très utile pour le programmeur car cela permet d'utiliser des termes compréhensibles pour les adresses en RAM, et cela facilite par la même occasion la maintenance du programme. Tout ceci à la condition que le choix des noms des équivalences soient parlantes...
David.
SalutSalut,
0x0C est l'adresse physique en mémoire RAM du µC.
EQU est une directive qui détermine une équivalence avec les deux termes de la ligne de code.
Donc, Chaque fois que l'assembleur rencontrera "cmpt_UN", il le remplacera par 0x0C.
Pourquoi 0x0C? C'est le choix du programmeur, mais cette adresse doit être comprise dans les adresses libres de la RAM. Regarde dans le datasheet du 16F84 afin de connaître les adresses disponibles pour l'utilisateur.
Une équivalence est très utile pour le programmeur car cela permet d'utiliser des termes compréhensibles pour les adresses en RAM, et cela facilite par la même occasion la maintenance du programme. Tout ceci à la condition que le choix des noms des équivalences soient parlantes...
David.
merci beacoup.
donc c'est un emplacement dans la RAM !il existe combien pour le pic16f84? et le stockage de l'information se fait sur quels nombre de bits?
merci beacoup
A+
3ème page de la datasheet tirée de chez Microchip :
http://www.microchip.com/stellent/id...serText=16f84a
High Performance RISC CPU Features:
• Only 35 single word instructions to learn
• All instructions single-cycle except for program
branches which are two-cycle
• Operating speed: DC - 20 MHz clock input
DC - 200 ns instruction cycle
• 1024 words of program memory
• 68 bytes of Data RAM
• 64 bytes of Data EEPROM
• 14-bit wide instruction words
• 8-bit wide data bytes
• 15 Special Function Hardware registers
• Eight-level deep hardware stack
• Direct, indirect and relative addressing modes
• Four interrupt sources:
- External RB0/INT pin
- TMR0 timer overflow
- PORTB<7:4> interrupt-on-change
- Data EEPROM write complete
merci beacoup3ème page de la datasheet tirée de chez Microchip :
http://www.microchip.com/stellent/id...serText=16f84a
High Performance RISC CPU Features:
• Only 35 single word instructions to learn
• All instructions single-cycle except for program
branches which are two-cycle
• Operating speed: DC - 20 MHz clock input
DC - 200 ns instruction cycle
• 1024 words of program memory
• 68 bytes of Data RAM
• 64 bytes of Data EEPROM
• 14-bit wide instruction words
• 8-bit wide data bytes
• 15 Special Function Hardware registers
• Eight-level deep hardware stack
• Direct, indirect and relative addressing modes
• Four interrupt sources:
- External RB0/INT pin
- TMR0 timer overflow
- PORTB<7:4> interrupt-on-change
- Data EEPROM write complete
Et si tu lisais Bigonoff ....
Salut
la modification de 0x0c seulement à la RAM
pic non alimente=> 0x0c=0????
merci
A+
D'accordEQU est une directive qui détermine une équivalence avec les deux termes de la ligne de code.
Donc, Chaque fois que l'assembleur rencontrera "cmpt_UN", il le remplacera par 0x0C.
Mais là, pas forcément. cmpt_UN ne sera pas forcément implanté en ram. Ca peut servir par exemple si on veut comparer le contenu d'un registre à la valeur 0x0C. Je ne connais pas bien la syntaxe des pics, mais sur certains µC on trouverais un truc du genre:0x0C est l'adresse physique en mémoire RAM du µC.
cmp cmpt_UN
A+
Salut Jack,
Oui, tu as parfaitement raison, c'est le même principe sur les PICs, ils ne dérogent pas à la règle.Mais là, pas forcément. cmpt_UN ne sera pas forcément implanté en ram. Ca peut servir par exemple si on veut comparer le contenu d'un registre à la valeur 0x0C. Je ne connais pas bien la syntaxe des pics, mais sur certains µC on trouverais un truc du genre:
cmp cmpt_UN
Pour faire ce que tu décris, sur PICs, je préfère utiliser la directive DEFINE qui me semble plus approprié, mais qui à presque la même fonction (d'ailleurs, bon nombre de programmeurs de PICs ne font pas cette distinction...)
Je crois que la définition exacte de la directive EQU est "Assigner une étiquette" alors que DEFINE signifie "remplacer une chaîne". Mais bon, je ne suis pas un spécialiste dans les explications claires et détaillées et en plus compréhensible par le commun des mortels.
Dans tous les cas, l’utilisation de ce genre de directive reste à l'appréciation du programmeur et à sa rigueur de travail.
Et pour en rajouter une couche, dans mes programmes pour réserver un emplacement en RAM, j'utilise la directive RES qui alloue un ou des emplacement en RAM suivant comment on l'utilise et qui permet sans devoir retoucher aux équivalences d'allouer plus d'espace RAM...
Par contre, ici, vu le contexte du fil, 0x0C est bien une adresse physique en RAM du µC.
David
EQU signifie equal ou equate selon certaines doc. equ fonctionne exactement comme define qui est plus récent et tiré du langage C et effectue effectivement une substitution de chaines de caractères dans le source.Je crois que la définition exacte de la directive EQU est "Assigner une étiquette" alors que DEFINE signifie "remplacer une chaîne"
Bein justement, je ne vois pas ce contexte puisqu'il n'y a pas de code.Par contre, ici, vu le contexte du fil, 0x0C est bien une adresse physique en RAM du µC.
A+
slt essai de lire le cours bigonoff il explique bien le pic
Presque certain à 99.999%, que c'est une adresse en RAM, car le début de la RAM commence à l'adresse 0x0C sur ce µC...Par contre, ici, vu le contexte du fil, 0x0C est bien une adresse physique en RAM du µC.
Bein justement, je ne vois pas ce contexte puisqu'il n'y a pas de code.
Je doute fort que cmpt_UN soit une constante, car le nom de l'étiquette n'est pas très équivoque, mais cela reste possible...
Merci pour ta définition des deux directives. Sur PICs la directive DEFINE semble plus puissante qu'une simple substitution de chaines de caractères, car elle permet aussi le passage de paramètre (mais uniquement lors de l'assemblage du code)...
David.
Comme je connais bien moins les pics que toi, je vais en rester là .
Je tenais juste à apporter des précisions d'ordre général sur la directive d'assemblage EQU.
A+
N'étant pas un spécialiste du C, ton explication sur la provenance de la directive DEFINE, me permettra de me coucher ce soir moins bête).
C'est toujours constructif d'avoir un avis "d'orde général" car l'Assembleur PICs n'est pas une généralité.
David.
Salut,
Ouvre un cours sur les PICs...
Alors, si c'est une constante dans le programme cmpt_UN ne pourra pas être modifié lors du déroulement du programme.
Si cmpt_UN est une variable en RAM, 0x0C est l'adresse physique de cette variable et l'adresse n'a rien avoir avec le contenu de cette variable. Donc, dans cmpt_UN tu y mets ce que tu veux...
David.
SalutSalut,
Ouvre un cours sur les PICs...
Alors, si c'est une constante dans le programme cmpt_UN ne pourra pas être modifié lors du déroulement du programme.
Si cmpt_UN est une variable en RAM, 0x0C est l'adresse physique de cette variable et l'adresse n'a rien avoir avec le contenu de cette variable. Donc, dans cmpt_UN tu y mets ce que tu veux...
David.
mais si on a modifier 0x0c apres on a couper l' alimentation apres un certain temp on l'alimente le pic .0x0c garde le meme contenu? c'est ça la question!
un cours sur les pic rest toujours abstrait meme de bignoff j'ai fais un grand pas pour savoir quelque informations sur les pic surtout j'ai jamais etudie ca face à un prof quoi
merci et A+
Si la valeur est en RAM, il est évident qu'elle va être perdue avec la coupure de l'alimentation.
Si la valeur est en eeprom ou en flash, sa valeur sera conservée, mais modifier une valeur dans ce genre de mémoire ne se fait pas par une simple écriture mémoire.
A toi de voir.
A+
bjr
moi aussi j'ai possté un sujet sur le PIC16F84a mais je crois que j'ai pas pu reussi
behhh je vais continuer avec vous j'ai un petit cour sur ce PIC
j'espere qu'il peut vous aider
je l'ai traduit de la langue anglais en français
Salut,
HA! je cherche ça merci beacoup!
http://www.abcelectronique.com/bigonoff/
TOUT y est !
Salut,http://www.abcelectronique.com/bigonoff/
TOUT y est !
J'ai le livre bignoff merci
mais c'est dificil toujours d'apprendre la technique sur les papiers c'est pour cela je suis là
A+
Il y a beaucoup d'autodidactes pourtant sur ce site.Oui mais il faut toujours une formation dans des centres ou des fac sinon c'est pas la peinne d'ouvrire ts cas!
Il existe des quantités de sites et de documents didactiques aujourd'hui sur le net et quelques bons forum d'aide () pour pouvoir s'autoformer.
A+
Hi
je crois bien qu'il faut déja bien comprendre l'architicture et les fonctions des microcontroleurs PIC pour commencer la programation, si la programmation en assembleur semble lourde il y'a toujours les compilateurs C, Basic ...
Bon courage, essai de lire au moins le début de bigonoff, tous ce qui introduction avant d'aller plus loin