Oui mais il faut toujours une formation dans des centres ou des fac sinon c'est pas la peinne d'ouvrire ts cas!
A+
Si c'est ce que tu penses, laisse tomber les µC.
-----
05/08/2007, 02h36
#32
invitef86a6203
Date d'inscription
janvier 1970
Messages
5 247
Re : PIC16f84a
cmpt_UN EQU 0x0C
Il s'agit d une commande prépocesseur.
Il peut sagir d'une constante ou d'une adresse RAM selon l'instruction utilisée
Movlw cmpt_UN ' constante
movwf cmpt_UN ' adresse RAM
Une constante peut aussi indiquée une adresse RAM en adressage indirect
Movlw cmpt_UN ; constante qui est un pointeur RAM
movwf FSR ; adressage indirect
movf INDF,W ; charge dans W le contenu de l'adresse 0x0C.
l'instruction cmp n'existe pas en pic on pourrait créer une macro.
La comparaison se fait avec la soustraction;
Movf cmpt_UN,W ; charge dans W le contenu de l'adresse 0x0C.
SUBLW 10 ; compare à 10
pour tester l'égalité
BTFSC STATUS,Z ; si flag Zero alors egale
goto Egale ; faire la fonction égale !
05/08/2007, 10h55
#33
invitef86a6203
Date d'inscription
janvier 1970
Messages
5 247
Re : PIC16f84a
exemple de macros.
Noter que l'assembleur ne sait pas s'il s'agit d'adresse RAM ou de constante.
Contrairement à un compilateur qui ferait la différence (enfin pas toujours...).
Il reste le soin au programmeur de savoir ce qu'il fait ,
si l'on compare le contenu de 2 adresses
ou si l'on compare le contenu d'une adresse avec une valeur constante.
Les macros seront alors différentes , ici CMP et CMPI (I pour immédiat (Motorola)=constante)
;compare le contenu de deux adresses RAM
CMP macro ADR1,ADR2
movwf ADR1,W
subwf ADR2
exitm
;compare le contenu d'un adresse RAM à une constante
CMPI macro ADR1,MyConst
movwf ADR1,W
sublw MyConst
exitm
; Branch if not equal (Motorola Asm)
BNE macro etiquette
btfss STATUS,z
goto etiquette
exitm
; Branch if Greater l (Motorola Asm)
BG macro etiquette
btfsc STATUS,C
goto etiquette
exitm
Exemples:
cmpt_UN EQU 0x0C
cmpt_DEUX EQU 0x0D
; compare le contenu de cmpt_UN et cmpt_DEUX
CMP cmpt_UN cmpt_DEUX
BEQ Egale
; Test le contenu de cmpt_UN s' il est différent de 10
CMPI cmpt_UN 10
BNE NotEqual
; Test le contenu de cmpt_UN s' il est supérieur à 10
CMPI cmpt_UN 10
BG Superior
NB)
Nos amis Anglophones comme d'hab. raisonnent à l'envers de nous.
On retire W du literal et non pas le literal du W comme on pourrait naturellement le penser en bonne pensée Latine...
Donc on test bien si cmpt_UN est supérieur à 10.
06/08/2007, 03h31
#34
invitea821b3a8
Date d'inscription
janvier 1970
Messages
777
Re : PIC16f84a
Salut,
merci merci beaucoup pour les consiels et pour tous ca les amis vraiment c'est trés gentil!