سلام.
نکته اول اینکه رجیستر DPTR برای دستیابی به فاصله هایی بیشتر از یک بایت هست، این آدرسی هم که شما نوشتید در واقع دارید RAM داخلی رو آدرس دهی میکنید پس نیازی به استفاده از DPTRآ نیست.
ولی اگه میخواهید یک RAM یا ROM خارجی که بیشتر از 256 بایت هست رو آدرس دهی کنید ناچارید از DPTR استفاده کنید.
برای این منظور باید خط دوم رو اینطوری تغییر بدید:
MOVX @DPTR,A
برای خوندم هم اینطوری میشه انجام داد:
MOVX A,@DPTR
برای دسترسی به آدرس های مختلف ROM هم باید دستور زیر رو استفاده کنید (توجه کنید که از ROM میشه خوند ولی نمیشه توش نوشت):
MOVC A,@A+DPTR
در هر صورت این دستوری که نوشتید اشتباه هست باید به جای DPTR از R0آ یا R1 برای آدرس دهی غیر مستقیم استفاده کنید نه DPTR آبرای این کاربرد شما باید اینطوری نوشته بشه که :
MOV R1,#1F0H
MOV @R1,A
موفق باشید.
شأن انسان در ایمان و هجرت و جهاد است و هجرت، مقدمهآی جهاد فیآسبیلآالله.
هجرت، هجرت از سنگینیآهاست و جاذبهآهایی که تو را به خاک میآچسباند.
چکمهآهایت را بپوش، رهآتوشهآات را بردار و هجرت کن.
سلام
RAM خارجی هم می تواند از آدرس 00 شروع شود. هیچ گناهی نداره که محتوای DPTR هم 1F0 بشه.
تنها مشکل در دستور است. برای استفاده از حافظه خارجی : MOVX @DPTR,A یا MOVX A,@DPTR
دیدگاه