با سلام، کسی میتونه بگه این دستور زیر در برنامه دماسنج چی کار می کنه؟
MOV A,#0EHو این دستور چی کارمی کنه؟MOV A,#0DFH
با سلام، کسی میتونه بگه این دستور زیر در برنامه دماسنج چی کار می کنه؟
MOV A,#0EHو این دستور چی کارمی کنه؟MOV A,#0DFH
اینا دستورهای اسمبلی هستن . جفتشون یه مقدار رو تو اکومولیتور(همون رجیستر A) کپی میکنن .
با سلام، میدونم اینا دستورات اسمبلی و مقدارا داخل A قرار می دهد.می خوام ببینم این مقدارا چی هستند؟ برای چی این مقدارا را داخل A قرار می دهد؟
با خوندن 1-2 خط از برنامه اسمبلی نمیشه فهمید برنامه داره چیکار میکنه. هر خط زبانی مثل C معادل چندین خط اسمبلی هست . این دستور کپی کردن یه مقدار تو اکومولیتور متدالولترین دستور اسمبلی هست که تو همه برنامه ها (و حتی هر خط زبان C اون) تکرار میشه ! باید کل برنامه رو دید تا فهمید این برای چی هست.
با سلام، اینم برنامه! اگه میشه بگید MOV P1,#0FFH این دستور هم چی کار می کنه؟ اگه یه توضیح کلی درباره برنامه هم بدید ممنون می شم؟ این سه تا دستورم بگید تو این برنامه نقشش چیه؟
به نظرم شبیه کد میکروهای 8051 است ولی نکته مهم این است که ظاهرا کد را کسی که بهت تحویل داده تغییراتی در آن ایجاد کرده که قابل استفاده نباشد!
همان ابتدا ORG 00H کد اصلی را شروع کرده در حالی که تا آدرس 30H برای وقفه ها رزرو شده و معمولا در ابتدا شروع باید این طوری باشد
ORG 00H
JMP MAIN
ORG 030H
Main:
.......
نکته کمدی دیگر هم جاهایی است که نوشته CALL C1
که با مراجعه به بخش مربوطه
C1: CALL READY
MOV P3,A
CLR P2.0
CLR P2.1
SETB P2.2
CLR P2.2
RET
این کاملا بی معنی است که در ابتدا C1 قسمت Ready را صدا کرده در حالی که ابتدا باید یک کارهایی انجام بدهد و بعد به Ready برود.
به هر حال این کد بدون اینکه از سخت افزارش اطلاعی داشته باشیم مشکل است تفسیر کرد که چه می کند به خصوص اینکه کامنت ندارد و معیوب هم شده!
اما به نظرم یک وسیله خارجی شاید یک ADC را به یک پورت وصل است تا دما را از آنالوگ به دیجیتال تبدیل کند و از یک وقفه سخت افزاری استفاده کرده برای دریافت مقادیر تبدیل شده
دستور MOV A,#0DFH هم که سوال کردی در میکرو 8051 بی معنی است و 8 بیت بیشتر ندارد اکومولاتور در 8051
پیشنهاد می کنم وقتی که می خواهی صرف پیدا کردن کد و فهمیدن آن بکنی را صرف خواندن یک کتاب دراین باره بکن تا زودتر به نتیجه برسی و از کارت لذت ببری.
با سلام، این برنامه راازاینترنت گرفتم،در ضمن سخت افزارشم بستم و جواب گرفتم ولی بعضی کدها را نمی فهمم برای چی استفاده شده است و کاربردش چیه؟
روش سوال پرسیدن شما بیشتر شبیه طرح معما بود و معما به این مبهمی را فقط می شد با حدس و گمان جواب داد!
با این شماتیک که البته همان اول هم می توانستید برای مطرح کردن سوالتان بفرستید , دیده می شود که به جای استفاده از وقفه های استاندار خارجی یعنی P3.2 و P3.3 از پین P2.7 استفاده کرده برای زمانی که داده را مبدل آنالوگ به دیجیتال آماده کرده چون پورت P3 را برای LCD نیاز داشته و به هر حال موضوع مشکلی که ذکر کردم با ORG 00H منتفی است
CALL READY هم در حقیقت یک پیغامی است که به LCD فرستاده می شود و آن هم مشکلی ندارد در اول C1 باشد.
بخشهایی که نوشتی کد را متوجه نمی شوی به این خاطر است که در این بخشها داده هایی را به LCD و همچنین ADC می فرستد که هدف از ارسال این داده ها معمولا آماده سازی و یا ارسال کاراکتر خاص است که تنها با مطالعه داکیومت LCD و ADC می توان توضیح را پیدا کرد که مثلا با ارسال 0E به LCD چه اتفاقی رخ می دهد (شاید مثلا در ابتدای راه اندازی سه بار LCD را خاموش روشن کرده!)
متاسفانه شماره LCD و ADC را در تصویری که فرستادی واضح نیست و برای اینکه این یکی معما هم قابل حل باشد نیاز هست داکیومت چیپ ها موجود باشد.