PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : سوال در مورد نوشتن و خواندن در رم با mikroC



sajjad_AD
07-02-2012, 00:24
سلام
می خواستم بدونم چجوری میشه تو یه آدرس از رم مثلا آدرس رجیستر PORTB یه بایت رو بخونم و یا بنویسم,یعنی واسه نوشتن تو این رجیستر اسمشو ننویسم و بجاش آدرسش رو به کار ببرم و اینکه دستوری تابعی هست که باهاش آدرس رجیستر ها رو به دست بیارم؟ :hi:

agape
07-02-2012, 12:25
بله دایی جان ! توی کدویژن که این امکان داره ! و البته gcc
در ضمن برای به دست آوردن آدرس ها هم میتونی به صفحه های آخر خود دیتاشیت مراجعه کنی ! آدرس تمام رجیستر ها رو نوشته!

sajjad_AD
07-02-2012, 16:01
از پاسختون ممنونم آقاي مزارعي،کسي نميدونه تو MikroC چجوري بايد اين کار رو کرد،در ضمن ميدونم تو ديتاشيت ميشه آدرسها رو پيدا کرد ولي من يه دستوري،چيزي مي خوام که به کامپايلر بفهمونه آدرس رجيستر رو مي خوام نه محتوا شو

vishtasp
07-02-2012, 17:05
سلام
توی c اگه بنویسیم

&x
اونوقت ادرس متغیر x رو بهمون میده

sajjad_AD
08-02-2012, 09:27
دمت گرم آقا امین,حالا چجوری تو این آدرس بدست اومده عدد بنویسم :hi:

mrm
08-02-2012, 14:27
volatile unsigned char *pPORTB=&PORTB;
*pPORTB=0x33*

agape
08-02-2012, 16:31
بله این دوستمون به نکته کاملاً صحیحی اشاره کردن ! اشاره گر ! به راحتی میشه با اشاره گر این کار رو کرد!
و البته راه دیگه هم اینه که متغییرت رو توی آدرس دلخواه تعریف کنی به این صورت البته تو کدویژن کار میکنه تو میرو سی نمیدونم

char a @ 0x60
این دستور متغییر a رو توی آدرس 60 هکز از حافظه قرار میده !

sajjad_AD
08-02-2012, 19:26
تشکر تشکر ... :hi:

vishtasp
09-02-2012, 18:42
می تونید اینجوری آدرس مورد نظر رو مقدار دهی کنید:
*p=10
البته * قبل p هستش
توجه کنید که متغیر از نوع اشاره گریه یعنی مثلا شما می خواید آدرس یه متغیر رو داشته باشین اینجوری میشه:

int x;
int *p

p=&x

حالا می خئاین مقدار p را چاپ کنید میشه:
printf("%d",p);

و اگه بخواین مقدار دهی کنید:
*p=100
که در حقیقت مقدار همون x میشه 100

:wink: