Commande PIC 68HC11E2

salim_samir Messages postés 22 Date d'inscription jeudi 23 février 2006 Statut Membre Dernière intervention 31 mars 2006 - 24 mars 2006 à 21:05
salim_samir Messages postés 22 Date d'inscription jeudi 23 février 2006 Statut Membre Dernière intervention 31 mars 2006 - 25 mars 2006 à 16:39
salut à tous
comment je peut tester un bit de port c de pic 68HC11E2 et commander un clignotement de 4 lampe (si le bit x de port c est vrais fait un clignotement).
si possible m'aider par un exemple de programme qui fait ce travail.

8 réponses

mathusale_ftl Messages postés 36 Date d'inscription vendredi 22 juillet 2005 Statut Membre Dernière intervention 18 août 2006
24 mars 2006 à 21:10
pour tester un bit tu peux simplement faire ça....



int get_bit_at_pos(int iChamp, iPosition )

{

return ( ( iChamp >> iPosition ) & 0x01 );

}
0
salim_samir Messages postés 22 Date d'inscription jeudi 23 février 2006 Statut Membre Dernière intervention 31 mars 2006
24 mars 2006 à 21:24
salut mathusale
je crois que tu ma donnée le test en langage c mais je veut le faire en langage assembleur avec le jeu d'instructions de 68hc11e2.
merci
0
mathusale_ftl Messages postés 36 Date d'inscription vendredi 22 juillet 2005 Statut Membre Dernière intervention 18 août 2006
24 mars 2006 à 21:48
ah en assembleur ca peut donner ça ....



penons la fonction



int get_bit_at_pos(int iChamp, iPosition )

{

return ( ( iChamp >> iPosition ) & 0x01 );

}





en asm ça donne



MOV EAX, [EBP +8]

XOR ECX, ECX

BOUCLE : CMP ECX, [EBP + 4]

JL ALORS

JE FIN_BOUCLE



ALORS: DIV EAX, 2

INC ECX



FIN_BOUCLE: AND EAX, 0x01


ret EAX



Un truc du genre koi
0
mathusale_ftl Messages postés 36 Date d'inscription vendredi 22 juillet 2005 Statut Membre Dernière intervention 18 août 2006
24 mars 2006 à 21:53
Bon il faut savoir qu'il existe des operateurs en asm qui font les décallage mais je ne m'en rappel plus....( honte à moi )
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mathusale_ftl Messages postés 36 Date d'inscription vendredi 22 juillet 2005 Statut Membre Dernière intervention 18 août 2006
24 mars 2006 à 22:28
Rectification !!!!



int get_bit_atpos(int iVal, int iPos)

{

asm

{

mov eax, [ebp + 0x08]

xor ecx, ecx



boucle: cmp ecx, [ebp + 0x0C]

jl alors

jmp fin



alors: shr eax, 1

inc ecx

jmp boucle



fin: and eax, 0x01

}

}

shr permet de décaller des bits vers la droite

shl permet de décaller des bits vers la gauche
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 mars 2006 à 00:08
[ebp + 8]
qui autorise à présumer qu'il compilera avec stackframe ???
Pourquoi forcer le compilo à une sauvegarde d'EBP alors que son emploi est inutile ???

La version C est indéniablement la meilleure et la seule viable, si la fonction n'est pas dépouillée par un __declspec(naked) devant alors hors le dev du projet final il est impossible d'insérer le moindre asm sans d'énormes risques.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
0
mathusale_ftl Messages postés 36 Date d'inscription vendredi 22 juillet 2005 Statut Membre Dernière intervention 18 août 2006
25 mars 2006 à 07:54
Oui pardon, j'ai juste vite fait un copier coller hier soir c'est pour ça !!!!
0
salim_samir Messages postés 22 Date d'inscription jeudi 23 février 2006 Statut Membre Dernière intervention 31 mars 2006
25 mars 2006 à 16:39
merci beaucoup
c'est malgré que ce programme pour la famille intel moi je possède comme j'ai déja indiqué 68HC11E2 de la famille motorola mais je vais essayé de prindre le principe.
merci
0
Rejoignez-nous