
AVRآموزشمیکروکنترلر ها
رجیستر های AVR قسمت 2 (آموزش AVR جلسه پنجم)
رجیستر های AVR (آموزش AVR جلسه پنجم)
سلام
قسمت دوم آموزش رجیستر های AVR و قسمت پنجم آموزش AVR رو براتون آماده کردیم .
در قسمت قبلی به بررسی برخی رجیستر های AVR مثل پرداختیم :
قسمت اول آموزش رجیستر : آموزش رجیستر AVR (جلسه چهارم)
برای مشاهده لیست آموزش های AVR روی اینجا کلیک کنید !
رجیستر های AVR
در این جلسه به ادامه بحث میپردازیم و رجیستر SREG رو بررسی میکنیم .
SREG یعنی رجیستر وضعیت (Status Register)
این رجیستر بسیار مهم هستش ولی زیاد مورد استفاده قرار نمیگیره . این رجیستر مثل بقیه رجیستر ها 8 بیت داره . در صورتی که بخوایم در سطح اسمبلی برنامه نویسی کنیم به این رجیستر ها بیشتر نیاز داریم .
تصویر پایین رو ببینید :

این رجیستر در کنار بعضی از عملیات های CPU فعال میشه و وضعیت فعلی پردازنده رو نشون میده .
وقتی که پردازنده Reset بشه همه بیت های این رجیستر 0 میشوند .
ساده تر بگم ، این رجیستر اطلاعاتی رو نشون میده وقتی میکروکنترلر ما دستورات رو اجرا میکنه و محاسبات رو انجام میده .
هر کدوم از بیت های این رجیستر به پرچم و فلگ و Flag نام برده میشن و و توسط اسم اختصاصیشون نام گذاری میشن .
آموزش فلگ های AVR
1 : فلگ C (یا Carry) : این بیت نشون میده که یک Carry (حمل ، انتقال (بیت نقلی هم میگن بهش)) در عملیات منطقی و محاسبانی وجود داره . در صورت وجود انتقال این فلگ 1 میشه .
یک مثال از Caryy :
فرض کنید تو برنامه قراره دو تا عدد 11111111 و 1 با هم جمع بشند ، اونی که رنگشو قرمز کردیم بیت نهم هستش (بیت اضافه) و بهش Carry میگن .
با این کار میکروکنترلر میفهمه که جواب ما 10000000 هستش و 00000000 نیست .
میکروکنترلر از طریق این فلگ متوجه میشه که علاوه بر 8 بیت اصلی ، یک بیت اضافه هم داره .
2 : فلگ Z (یا Zero) : هر وقت حاصل عملیات ریاضی 0 بشه ، این بیت 1 میشه .
3 : فلگ N (یا Negative) : هر وقت نتیجه عملیات منطقی یا ریاضی ما منفی بشه این فلگ 1 میشه .
یعنی هر وقت حاصل ما منقی بشه بیت شماره هفت عدد باینری 1 میشه .
4 : فلگ V (یا Overflow) : این پرچم اعلام میکنه که در عملیات یک Overflow رخ داده .
هر وقت عملیات و محاسبات Overflow بشن ، این بیت 1 میشه .
به طور کلی وقتی دو تا عدد مثبت با هم جمع بشن و حاصل منفی بشه
یا دو تا عدد منفی با هم جمع بشن و حاصل مثبت بشه
این حالت رخ میده و به میکروکنترلر میگه داداش داری اشتباه میزنی ?
آموزش AVR
5 : فلگ S (یا Sign) : این پرچم علامت واقعی عدد رو نشون میده .
این فلگ با استفاده از عملیات منقی XOR و جمع پرچم های V و N رو XOR میکنه و نتیجه رو میزاره توی پرچم S .
تصویر زیر رو ببینید :

6 : فلگ H (یا HalfCarry) : اگه بین بیت های 3 و 4 یک عدد باینری Carry بشه حاصل این پرچم میشه 1 !
7 : فلگ T (یا Transfer bit) : با این فلگ ، بیت ها بارگذاری و ذخیره میشن و انتقال میده به رجیستر دیگه .
8 : فلگ I (یا Interupt) : کار این پرچم صدور مجوز برای وقته یا همون اینتراپت هستش .
هر وقت که قرار باشه یک وقفه رخ بده اول از همه میکروکنترلر چک میکنه که اجازه داره برای اجرا کردن این وقفه یا نه !.
و اگه این پرچم 1 باشه میکروکنترلر وقفه رو اجرا میکنه و بعد اجرای وقفه این پرچم دوباره 0 میشه .!
این فلگ مهم ترین پرچم هستش !
این قسمت هم تموم شد
منتظر قسمت های بعدی باشید !