آیا میدانید اثر انگشت خواهر و برادر 60 درصد شبیه به هم است
مرد بزرگ تنها به خود متکي است و جز از خود از هـيچ کس چيزي طلب نمي کند ولي مردان کوچک از ديگران توقع دارند. از پاتريک هانري
Logo

حل تمرینات و پروژه های درس میکروکنترلر
آموزش ميكرو كنترلر 8051 قسمت پنجم (معرفي دستورات)

دستورات منطقي و مقايسه اي
دستور  AND)  ANL)
اين دستور دو داده 8 بيتي رل با هم AND‌ مي كند. AND به معني "و" مي باشد يعني اينكه مثلا بيت P1.1 و P1.2 هرگاه صفر شدن فلان كار را ميكرو انجام دهد.
قالب دستوري آن به اين صورت مي باشد. ANL  REG,DATA عملوند مبدا يعني REG مي تواند يك ثبات يا يك حافظه باشد و عملوند مقصد DATA هم مي تواند ثبات يا حافظه يا يك داده فوري (عدد) باشد.بعد از انجام اين عمل منطقي نتيجه در انباره قرار مي گيرد.
مثال مي خواهيم عدد 56 و25 را با هم AND كنيم:

MOV    A,#56H
ANL    A,25H     A=4H
طبق جدول صحت گيت AND هرگاه ورودي هاي A وB  يك شد خروجي هم يك مي شود.
 طبق اين جدول براي AND كردن اين  دو داده داريم:



OUT
B
A
0
0
0
0
1
0
0
0
1
1
1
1
0
1
1
0
1
0
1
0
56H
1
0
1
0
0
1
0
0
25H
0
0
1
0
0
0
0
0
OUT=4H

 

 

 

دستور   OR)   ORL)
اين دستور دو داده 8 بيتي رل با هم OR مي كند. OR به معني "يا" مي باشد يعني اينكه مثلا اگر بيت P1.1 يا P1.2 هرگاه صفر شدن فلان كار را ميكرو انجام دهد.
قالب دستوري آن به اين صورت مي باشد. ANL  REG,DATA عملوند مبدا يعني REG مي تواند يك ثبات يا يك حافظه باشد و عملوند مقصد DATA هم مي تواند ثبات يا حافظه يا يك داده فوري (عدد) باشد.بعد از انجام اين عمل منطقي نتيجه در انباره قرار مي گيرد.
مثال مي خواهيم عدد 56 و25 را با هم OR كنيم:


MOV    A,#56H
ORL     A,25H     A=77H


طبق جدول صحت گيت OR هرگاه يكي از ورودي هاي A وB  يك شد خروجي هم يك مي شود.
طبق اين جدول براي OR كردن اين  دو داده داريم

OUT
B
A
0
0
0
1
1
0
1
0
1
1
1
1
 
 
0
1
1
0
1
0
1
0
56H
1
0
1
0
0
1
0
0
25H
1
1
1
0
1
1
1
0
OUT=77H


 

دستور  XOR)   XRO)
اين دستور دو داده 8 بيتي رل با هم XOR مي كند. XOR به معني "يا  انحصاري" مي باشد يعني اينكه مثلا اگر يك از بيتهاي P1.1 يا P1.2 يك شد(اگر يكي از آنها يك بود بايد ديگر صفر باشد) ميكرو فلان كار را انجام دهد و اگر هر دو يك بودنند يا هر دو صفر بودند كاري انجام نمي دهد
قالب دستوري آن به اين صورت مي باشد. ANL  REG,DATA عملوند مبدا يعني REG مي تواند يك ثبات يا يك حافظه باشد و عملوند مقصد DATA هم مي تواند ثبات يا حافظه يا يك داده فوري (عدد) باشد.بعد از انجام اين عمل منطقي نتيجه در انباره قرار مي گيرد.
مثال مي خواهيم عدد 56 و25 را با هم XOR كنيم:


MOV    A,#56H
XRL     A,25H     A=73H


طبق جدول صحت گيت XOR زماني خروجي يك مي شود كه دو ورودي مثل هم نباشند يعني هر وقتي كه ورودي ها متفاوت بودند خروجي يك خواهد شد.
طبق اين جدول براي OR كردن اين  دو داده داريم:

OUT
B
A
0
0
0
1
1
0
1
0
1
0
1
1
 
0
1
1
0
1
0
1
0
56H
1
0
1
0
0
1
0
0
25H
1
1
0
0
1
1
1
0
OUT=73H

 

 

از اين دستور مي توان براي پاك كردن يك ثبات استفاده كرد يعني اينكه محواي يك ثبات را با خودش XOR كنيم  و يا مي توانيم به كمك اين دستور بفهميم كه دو ثبات آيا مقدار يكساني دارند يا همانطور كه گفتيم اگر دو داده مثل هم را با هم XOR كنيم مقدار آن صفر خواهد شد و ما از اين صفر مي فهميم كه اين دو ثبات با هم مساوي هستند.

دستور متمم سازي CPL A  
متم سازي يعني تبديل يك ها به صفر و تبديل صفرها به يك. اين دستور بايتي بوده تنها مي تواند محتواي ثبات انباره را متمم كند پس اگر ما بخواهيم ديتاي يك ثبات را متمم كنيم بايد حتما ابتدا آن ديتا را به انباره انتقال داده و سپس از اين دستور استفاده كنيم. كاربرد اين دستور بيشتر در مكمل سازي است يعني براي تفريق اعداد علامت دار كه در قسمت جهارم برسي شد.
مثال عدد 50 كه در ثبات R1 قرار دارد را متمم كنيد و بعد از متمم كردن آن را در R2 قرار دهيد؟


MOV  A,R1   A=01010000=50H
CPL  A         A=10101111=AFH
MOV  R2,A   R2=10101111=AFH


در خط اول محتواي R1 يعني عدد 50 در انباره قرار مي گيرد و در خط دوم محتواي انباره متمم مي شود و در خط سوم محتواي انباره كه همان متمم شده عدد 50 مي باشد در R2 كپي مي شود.


دستور مقايسه  CJNE  REG,DATA,LABEL
قالب دستور به اين صورت مي باشد كه ابتدا در REG بايد يكي از ثبات ها را قرار داد كه اين ثبات براي مقايسه مي باشد و در DATA بايد عددي را قرار تا اين عدد با محتواي REG مقايسه شود.و LABEL هم آدرس است كه اگر مقايسه نابرابر بود به آن آدرس پرش خواهد كرد. به مثال زير توجه كنيد!


START:  MOV  A,P1
            CJNE  A,#01H,START
           ACALL  OPEN


اين برنامه را مي توانيم يك قفل رمز فرض كنيم كار كرد برنامه به اين صورت مي باشد كه به صورت مداوم پورن 1 را مي خواند و در انباره قرار مي دهد. مثلا به پورت 1 چند تا كليد وصل شده(8تا) هر گاه ما يكي از اين كليد ها را فشار دهيم روي پورت 1 عددي توليد مي شود كه ميكرو آن را مي خواند و در انباره خود ذخيره مي كند. حال رمز ما چيست؟ ما بايد رمز خود را در قسمت DATA بنويسم. خوب الان رمز ما عدد 01 مي باشد يعني اگر ما كليدي كه به بيتP0.0  وصل شده را فشار دهيم عددي كه در انباره قرار مي گير با با عدد 01 مقايسه مي شود مي بينيم كه براير است پس ميكرو پرش نمي كند و خط بعدي يعني ACALL  OPEN را مي خواند و حال ما در اين زير برنامه برنامه باز كردن در را نوشته ايم. حال اگر ما كليد ديگري را فشار دهيم در نتيجه عدد ديگري توليد مي شود و ميكرئ اين عدد را با 01 مقايسه مي كند مي بيند كه برابر نيست پس به START پرش مي كند و دوباره عدد جديدي مي خواند. و اين كار را همين طور ادامه مي دهد تا زماني كه عدد 01 روي پورت 1 ايجاد شود.
البته اين برنامه جهت آموزش اين دستور مي باشد كه اگر ما بخواهيم برنامه اي به اين شكل بنويسم بايد از تاخير و چيزهاي ديگر از جمله مسايل امنيتي كه كاربر تا چند مرتبه رمز اشتباه بدهد مجاز هست كه دوباره ادامه دهد. تاخير به خاطر اينكه سرعت ميكرو چون خيلي بالا است زماني كه كليد را فشار مي دهيم ميكرو شايد 100 ها بار اين عدد را از زير دست ما بخواند و مقايسه كند. همچنين هنگام برداشتن دست؟؟!!
از كاربر هاي ديگر اين دستور مي توان به موارد زير اشاره كرد:
تشخيص و مقايسه خروجي يك سنسور مثل سنسور دما كه مثلا دما به فلان درجه كه رسيد هيتر را خاموش كند يا كولر را روشن نماييد. و كاربر هاي فراوان ديگر كه برنامه نويس بايد خلاق باشد و آنها را با هم تركيب كند.


دستورات چرخشي ROTATE
دستورات چرخشي دو نوع هستند يكي چرخش فقط محتواي انباره و ديگر چرخش محتواي انباره همراه با رقم نقلي. نكته تماي دستورات چرخشي فقط روي انباره عمل مي كنند.!!!
دستور RR  A   ‌ 
اين دستور محتواي انباره را به سمت راست شيفت مي دهد.
مثال محتواي انباره را به سمت راست بچرخانيد؟


MOV   A,#36H   ;A=00110110
RR   A              ;A=00011011 
RR   A              ;A=10001101 
RR   A              ;A=11000110 


با هر بار اجراي دستور چرخش محتواي انباره به سمت راست شيفت داده مي شود.
دستور RL  A   ‌ 
عملكرد اين دستور شبيه به دستور بالايي است با اين تفاوت كه محتواي انباره را به سمت چپ شيفت مي دهد.


MOV   A,#36H   ;A=00110110
RL   A               ;A=01101100  
RL   A               ;A=11011000  
RL   A               ;A=10110001  


دستور RRC  A   ‌ 
اين دستور چرخش همرا با رقم نقلي مي باشد يعني رقم نقلي هر مقدار كه داشته باشد يا صفر يا يك اين عدد را بعد از بيت هاي انباره قرار مي دهد و آن را به سمت راست مي چرخاند در اصل اين دستور ثبات انباره را به يك ثبات 9 بيتي تبديل كرده. به مثال زير توجه كنيد!!


مقدار كري را مثلا در اينجا صفر مي كنيم    CLR   C
MOV   A,#36H   ;A=00110110
RRC   A              ;A=00011011   CY=0
RRC   A              ;A=00001101   CY=0
RRC   A              ;A=11000110   CY=1
RRC   A              ;A=10000110   CY=1
RRC   A              ;A=11000011   CY=0
RRC   A              ;A=01100001   CY=1
RRC   A              ;A=10110000   CY=1


دوستان عزيز اين دستور يكم پيچيده مي باشد ولي اگر خوب توجه كنيد مي بينيد كه خيلي هم راحت هستش. فقط بايد به اين نكته توجه كنيد كه RRC A يه جورايي ثبات 8 بيتي انباره را به ثبات 9 بيتي تبديل مي كند نكته اين دستور در همين 9 بيتي بودن ان است. به جودل زير توجه كنيد روند شيفت دادن عدد 36 همراه با پرچم كري كه صفر است را نشان مي دهد به رنگ ها توجه كنيد رنگ قرمز نشانه بيت كري مي باشد. و رنگ سبز بيت هاي مي باشد كه با چرخش وارد كري مي شوند.

توضيح
CY
D0
D1
D2
D3
D4
D5
D6
D7
A=36H , CY=0
0-->
0-->
1
1
0
1
1
0
0
 
0-->
1-->
1
0
1
1
0
0
0
با چرخش، بيت D0 انباره وارد كري مي شود يعني CY=1
1-->
1-->
0
1
1
0
0
0
0
در مرحله قبل CY=1 بود و با چرش وارد بيتD7  انباره مي شود
1-->
0-->
1
1
0
0
0
0
1
 
0-->
1-->
1
0
0
0
0
1
1
 
1-->
1-->
0
0
0
0
1
1
0
 
1-->
0-->
0
0
0
1
1
0
1

دستور RLC  A   ‌ 
اين دستور هم همانند دستور RRC  A مي باشد فقط با اين تفاوت كه كري بعد از بيت 7 قرار مي گيرد و به سمت چپ شيفت داده مي شود.

 
D0-->
D1
D2
D3
D4
D5
D6
D7
<--CY

 

  منبع: www.picpars.com

  لطفا مقالات، آموزش‌ها و پروژه های خود را به آدرس ایمیل نمائید تا آن را با نام خودتان در سایت منتشر کنیم.


لینک ثابت این صفحه:   


© کپی برداری از مطالب این سایت تنها با ذکر منبع مجاز می باشد

در صورت داشتن هر گونه سوال، نظر و پیشنهاد راجب این مطلب می‌توانید در قسمت نظرات همین صفحه مطرح نمائید. همچنین با شرکت در نظر سنجی های سایت، ما را در بهبود بخشیدن به مطالب یاری کنید.


مثال اسمبلی آموزش اسمبلی برنامه های اسمبلی پروژه های اسمبلی مثال assembly آموزش assembly برنامه های assembly پروژه های assembly برنامه نویسی اسمبلی آموزش برنامه نویسی اسمبلی آموزش 8051 آموزش 8051 به زبان اسمبلی دستورات منطقي و مقايسه اي دستور AND ANL دستور OR (ORL) دستور XOR دستور متمم سازي CPL A دستور مقايسه CJNE REG,DATA,LABEL دستورات چرخشي ROTATE

ارسال شده در مورخه : يكشنبه، 4 بهمن ماه، 1388 توسط مدیریت بازدید [2527]   پرینت

مرتبط باموضوع :

 آموزش ميكرو كنترلر 8051 قسمت سوم (معرفي دستورات)  [ پنجشنبه، 1 بهمن ماه، 1388 ] 4324 مشاهده
 شمارنده سه رقمی همراه با بوق  [ پنجشنبه، 6 خرداد ماه، 1389 ] 2214 مشاهده
 تولید اعداد طبیعی با چهار بیت و نمایش روی 4 تا 7 سگمنت  [ پنجشنبه، 6 خرداد ماه، 1389 ] 2909 مشاهده
 آموزش ميكرو كنترلر 8051 قسمت چهارم (معرفي دستورات)  [ يكشنبه، 4 بهمن ماه، 1388 ] 2865 مشاهده
 
نام شما: [ کاربر جدید ]

نام شما (ضروری): 
ایمیل شما : 
نظر:
کد امنیتی
کد امنیتی

  [ بازگشت ]
  • امتیاز بدهید
  • انتخاب ها
  • اشترک گذاری
آیا این مطالب مورد رضایت شما واقع گردید؟ لطفا با رای دادن به این مطلب ما را در بهبود بخشیدن به مطالب کمک کنید. با اینکار به سایر دوستان‌تان نیز کمک خواهید کرد.


 فایل پی دی اف فایل پی دی اف

 گرفتن پرينت از اين مطلب گرفتن پرينت از اين مطلب

 ارسال به دوستان ارسال به دوستان

 گزارش این پست به مدیر سایت گزارش این پست به مدیر سایت

پروژه های آماده
پروژه تایپ حروف و اعداد با کیبورد 3×4 به زبان سی

با استفاده از میکروکنترلر ATMEGA8 و کیبورد 3×4 می توان حروف و اعداد را تایپ کرد و درون یک متغییر ذخیره نمود و محتوای این متغییر بر روی نمایشگر LCD نمایش داده می شود. در صورتی که فضای LCD پر شود کاراکترها به سمت چپ شیفت داده می شوند. تمامی حروف و اعداد کوچک و بزرگ انگلیسی قابل تایپ می باشند. جزئیات...


عناوین مطالب
عناوین مطالب را در موضوعات مربوطه جستجو کنید!
یک موضوع انتخاب کنید:



لینک باکس مهم‌ترین‌ ها
  • پروژه‌ها
  • برترین‌ها
  • پر بازدید
  • بیشترین نظرات
cash10-H9

سالنامه فارسی
ش ی د س چ پ ج
  12345
6789101112
13141516171819
20212223242526
2728293031

دوشنبه

1

1 خرداد ماه، 1391
21/05/2012


رویداد ها:
روز بزرگداشت ملاصدرا - روز بهره وری و بهینه سازی مصرف

جستجو در تقویم ...
cash40-D1

آمار کاربران

نظرسنجی
نظر شما در مورد کیفیت سایت چیست؟

خیلی عالیه
میتونه بهتر باشه
جای کار داره
خوب نیست
نظری ندارم!



شما میتوانید در این مورد نظر مکتوب خود را بنویسید: مشاهد نتایج و ثبت نظر

نظرسنجی ها

تعداد آراء: 679    نظرات: 42

تبادل لینک
PicPars با تمامی وب سایتها و وبلاگها تبادل لینک میکند. ابتدا لینک ما در وب خود ثبت کنید و سپس لینک خود را از اینجا برای ما ارسال کنید. در اولین فرصت لینک شما در سایت ثبت می شود.

پیشنهاد ما

سفارش طراحی پروژه
مرورگر پیشنهادی ما
نرم افزار دانلود فایلها
برنامه فشرده سازی







امتیاز به سایت
امتیاز به این صفحه
با یک امتیاز مثبت از طریق Gmail تان از سایت حمایت کنید