adresse sbit passant comme paramètres de la fonction sur 8051

X

x_zoli

Guest
Salut à tous

Quelqu'un peut-il me dire comment passer sbit et / ou adresses SFR en tant que paramètres de la fonction dans fi * Ke, de sorte que plus tard je peux assigner des valeurs à ces sbits ou SFRS (plus précisément broches du port, ou d'un port dans sa totalité).
J'essaie d'écrire un ensemble de fonctions LCD (HD44780) et en faire une bibliothèque.En l'utilisant comme une bibliothèque, je dois le rendre flexible au niveau du port de données et de broches de commande peut être spécifiée par le biais de fonctions de la bibliothèque.C'est là que mon problème commence.

Merci

 
Salut,

Utiliser une variable de type char pour SFR, et de l'utilisation et / ou pour traiter les bits

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sourire" border="0" />Cheers!

 
SFR et les adresses bits ne sont pas possibles que dans params Keil
Voir aussi le manuel de C51

usbman

 
Bonjour

Voici comment accéder à un SFR en utilisant son adresse en langage C

/ / Définit Ptr à l'adresse - si le SFR était à 99H Adresse:

# Define sfr_test 0x099 / 0x099 est l'adresse SFR

void ChangeSfr (unsigned char * SfrData)
(
/ / Définit la valeur de la SFR à 55H
SfrData = 0x55;

)/ / Appel de fonction
ChangeSfr ((unsigned char *) sfr_test);Je ne pense pas que vous pouvez utiliser cette methode pour accéder à un seul bit!
en ce qui concerne

Bobi

 
passer bits comme paramètres de la fonction de définir le bit comme sbit au début du programme et ensuite utiliser la même définition que le paramètre de la fonction
par exemple: -
ACC_0 sbit = 0xE0;
void a_func (ACC_0)
(
)
Cela fonctionne tant que l'appelant la fonction est bien définie
Cela a été essayé et testé dans Keil (uVision 2)
Ayan

 
aucun des Soulutions ci-dessus fonctionnera
params sont passés dans les registres!dans Keil

S'il vous plaît vérifier l'ASM de sortie

usbman

 

Welcome to EDABoard.com

Sponsor

Back
Top