آموزش AVRآموزش الکترونیکآموزش میکروکنترلر ها

رجیستر های AVR قسمت 2 (آموزش AVR جلسه پنجم)

رجیستر های AVR (آموزش AVR جلسه پنجم)

سلام

قسمت دوم آموزش رجیستر های AVR و قسمت پنجم آموزش AVR رو براتون آماده کردیم .

در قسمت قبلی به بررسی برخی رجیستر های AVR مثل پرداختیم :

قسمت اول آموزش رجیستر : آموزش رجیستر AVR (جلسه چهارم)

برای مشاهده لیست آموزش های AVR روی اینجا کلیک کنید !

رجیستر های AVR

در این جلسه به ادامه بحث میپردازیم و رجیستر SREG رو بررسی میکنیم .

SREG یعنی رجیستر وضعیت (Status Register)

این رجیستر بسیار مهم هستش ولی زیاد مورد استفاده قرار نمیگیره . این رجیستر مثل بقیه رجیستر ها 8 بیت داره . در صورتی که بخوایم در سطح اسمبلی برنامه نویسی کنیم به این رجیستر ها بیشتر نیاز داریم .

تصویر پایین رو ببینید :

رجیستر های AVR
رجیستر های AVR

 

این رجیستر در کنار بعضی از عملیات های CPU فعال میشه و وضعیت فعلی پردازنده رو نشون میده .

وقتی که پردازنده Reset بشه همه بیت های این رجیستر 0 میشوند .

ساده تر بگم ، این رجیستر اطلاعاتی رو نشون میده وقتی میکروکنترلر ما دستورات رو اجرا میکنه و محاسبات رو انجام میده  .

هر کدوم از بیت های این رجیستر به پرچم و فلگ و Flag نام برده میشن و و توسط اسم اختصاصیشون نام گذاری میشن .

آموزش فلگ های AVR

1 : فلگ C (یا Carry) : این بیت نشون میده که یک Carry (حمل ، انتقال (بیت نقلی هم میگن بهش)) در عملیات منطقی و محاسبانی وجود داره . در صورت وجود انتقال این فلگ 1 میشه .

یک مثال از Caryy :

آموزش AVR

فرض کنید تو برنامه قراره دو تا عدد 11111111 و 1 با هم جمع بشند ، اونی که رنگشو قرمز کردیم بیت نهم هستش (بیت اضافه) و بهش Carry میگن .

حتما ببینید :  آموزش کامل تایمر / کانتر 0 در میکروکنترلر AVR (توضیح Timer/Counter صفر) ( آموزش AVR #9)

با این کار میکروکنترلر میفهمه که جواب ما 10000000 هستش و 00000000 نیست .

میکروکنترلر از طریق این فلگ متوجه میشه که علاوه بر 8 بیت اصلی ، یک بیت اضافه هم داره .


2 : فلگ Z (یا Zero) : هر وقت حاصل عملیات ریاضی بشه ، این بیت 1 میشه .


3 : فلگ N (یا Negative) : هر وقت نتیجه عملیات منطقی یا ریاضی ما منفی بشه این فلگ 1 میشه .

یعنی هر وقت حاصل ما منقی بشه بیت شماره هفت عدد باینری 1 میشه .


4 : فلگ V (یا Overflow) : این پرچم اعلام میکنه که در عملیات یک Overflow رخ داده .

هر وقت عملیات و محاسبات Overflow بشن ، این بیت 1 میشه .

به طور کلی وقتی دو تا عدد مثبت با هم جمع بشن و حاصل منفی بشه

یا دو تا عدد منفی با هم جمع بشن و حاصل مثبت بشه

این حالت رخ میده و به میکروکنترلر میگه داداش داری اشتباه میزنی ?


آموزش AVR


5 : فلگ S (یا Sign) : این پرچم علامت واقعی عدد رو نشون میده .

این فلگ با استفاده از عملیات منقی XOR و جمع پرچم های V و N رو XOR میکنه و نتیجه رو میزاره توی پرچم S .

تصویر زیر رو ببینید :

Sign Flag چیست ؟
Sign Flag چیست ؟

6 : فلگ H (یا HalfCarry) : اگه بین بیت های 3 و 4 یک عدد باینری Carry بشه حاصل این پرچم میشه 1 !


7 : فلگ T (یا Transfer bit) : با این فلگ ، بیت ها بارگذاری و ذخیره میشن و انتقال میده به رجیستر دیگه .


8 : فلگ I (یا Interupt) : کار این پرچم صدور مجوز برای وقته یا همون اینتراپت هستش .

هر وقت که قرار باشه یک وقفه رخ بده اول از همه میکروکنترلر چک میکنه که اجازه داره برای اجرا کردن این وقفه یا نه !.

حتما ببینید :  آموزش کامل کنترل سرعت موتور DC با Arduino ، پتانسیومتر و PWM (آموزش آردوینو #5)

و اگه این پرچم 1 باشه میکروکنترلر وقفه رو اجرا میکنه و بعد اجرای وقفه این پرچم دوباره 0 میشه .!

این فلگ مهم ترین پرچم هستش !


این قسمت هم تموم شد

منتظر قسمت های بعدی باشید !

امیدوارم این مطلب برای شما مفید بوده باشد. نظرات ، مشکلات و پیشنهادات خود را در پایین صفحه اعلام کنید مشاهده لیست پروژه های آردوینو
برچسب ها

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را برای شما قرار دهم تا استفاده کنید. خوشحال میشوم نظرات و پیشنهادات شما را بشنوم و مشکلاتتان را پاسخگو باشم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا
بستن
بستن