معماری میکروکنترلرهای AVR

0
4471
ثباتهای AVR
 
  • میکروکنترلرهای ۸ بیتی AVR 32 ثبات ۸ بیتی همه منظوره دارند یعنی r0 تا r31 .
  • سه ثبات آدرس شانزده بیتی با نام مستعار  X و Y و Z که هر کدام از این سه ثبات دو ثبات از همان ۳۲ ثبات ۸ بیتی هستند یعنی X(r27:r26), Y(r29:r28), Z(r31:r30)  .
  • یک ثبات ۱۶ بیتی به منظور اشاره گر پشته که در آدرسهای ورودی/خروجی:
       0x3e(SPH)  و  0x3d(SPL) قرارگرفته اند.همچنین این آدرسها در حافظه داده با آدرسهای ۰x5e و ۰x5d هستند
  • یک ثبات ۸بیتی به منظور سنجش وضعیت یا همان ثبات پرچم با نام SREG .
 
I
T
H
S
V
N
Z
C
 
  • I : فعال ساز و غیرفعال ساز عمومی وقفه SREG7 یا Global Interrupt Enable/Disable Flag
  •  T: بیت انتقالی مورد استفاده دستورالعملهای BLD وBST با نام SREG6
  •  H: Half Carry Flag, SREG5
  • S : بیت علامت یا Signed tests Instruction Set, SREG4
  • V : سرریزنما برای مکمل دو یا Two’s Complement Overflow Indicator, SREG3
  • N : بیت منفی یا Negative Flag, SREG2
  • Z : بیت صفر یا Zero Flag, SREG1
  • C : Carry Flag, SREG0
 
بر طبق معماری Harvard همراه با حافظه ی کد فلش و حافظه داده استاتیک یا SRAM که حجم حافظه ی کد آنها از ۱k تا ۱۲۸k بایت و حجم حافظه ی داده ی آنها از ۳۲ بایت تا ۴k بایت متغیر است یاد آورم شویم که این مقادیر حافظه همراه با گذشت زمان پیوسته در حال افزایش است .
 
حافظه داده و ثباتهای AVR
 
  • ۳۲ آدرس اول حافظه یعنی (۰x0000  تا ۰x001f ) متعلق به ثباتهای r0 تا r31 هستند.البته در برخی MCU (MicroController Unit) ها برای ثباتها از فضای حافظه ی داده استفاده می شود.
  • آدرسهای ( ۰x0020 تا ۰x005f ) از حافظه ی داده در دسترس آدرسهای ورودی/خروجی (۰x00 تا ۰x3f ) است.
  • از آدرس ۰x0060 حافظه ی داده به بعد فقط شامل حافظه استاتیک است یعنی SRAM .
 
دو ثبات برای واحد ریاضی منطقی ALU
 
تعداد زیادی از دستورالعملهای ALU شامل دو ثبات هستند یکی مقصد یا Destination(Rd) و یکی منبع یا Source(Rr) که نحوه کدگشایی دستورالعمل را در زیر می بینید:
 
i
i
i
i
i
i
r
d
d
d
d
d
r
r
r
r
 
بیتهایی که در آن حرف i  قرار گرفته دستورالعملند و حرف d بیتهای مقصد هستند و حرف r بیتهای منبع هستند ثبات منبع از بهم پیوستن بیتهای (r9 : r3 : r2 : r1 : r0) و ثبات مقصد از بهم پیوستن بیتهای  (d8 : d7 : d6 : d5 : d4)مشخص می شوند همچنین بیتهای باقی مانده
(i15 : i14 : i13 : i12 : i11 : i10) خود دستورالعمل را مشخص می کنند.
به عنوان مثال حاصل جمع r17 و r2 که همان Add  r17 , r2 است به صورت زیر کدگشایی یا Encode می شود:
۰
۰
۰
۰
۱
۱
۰
۱
۰
۰
۰
۱
۰
۰
۱
۰
 
که در این صورت خروجی AVR-OBJDUMP از این قرار استHex :
۰:   12 0d           add     r17, r2
توجه داشته باشید که یک کلمه ی ۱۶ بیتی از هشت بیت کم ارزش آن در حافظه ذخیره می شود.
 
دستورالعملهای Encode شده با قالب دو ثباتی را در جدول زیر مشاهده می کنید:
 
۰۰۰۱۱۱rdddddrrrr
adc Rd, Rr
۰۰۰۱۱۱dddddddddd
rol Rd
۰۰۰۰۱۱rdddddrrrr
add Rd, Rr
۰۰۰۰۱۱dddddddddd
lsl Rd
۰۰۱۰۰۰rdddddrrrr
and Rd, Rr
۰۰۱۰۰۰dddddddddd
tst Rd
۰۰۰۱۰۱rdddddrrrr
cp Rd, Rr
۰۰۰۰۰۱rdddddrrrr
cpc Rd, Rr
۰۰۰۱۰۰rdddddrrrr
cpse Rd, Rr
۰۰۱۰۰۱rdddddrrrr
eor Rd, Rr
۰۰۱۰۰۱dddddddddd
clr Rd
۰۰۱۰۱۱rdddddrrrr
mov Rd, Rr
۱۰۰۱۱۱rdddddrrrr
mul Rd, Rr
۰۰۱۰۱۰rdddddrrrr
or Rd, Rr
۰۰۰۰۱۰rdddddrrrr
sbc Rd, Rr
۰۰۰۱۱۰rdddddrrrr
sub Rd, Rr
توجه: دستور rol Rd همان دستور adc Rd , Rd  است و همچنین دستور lsl Rd همان دستورالعمل
 add Rd , Rd  و همچنین tst Rd معادل با دستور and Rd , Rd  و همینطور دستور clr Rd معادل است با دستور
 eor Rd , Rd .
 
دستورالعملهای منطقی و ریاضی
 
دستورالعمل
عملیات
تاثیر روی ثبات وضعیت
ADD Rd, Rr
Rd = Rd + Rr
Z,C,N,V,H
ADC Rd, Rr
Rd = Rd + Rr + C
Z,C,N,V,H
ADIW Rdl,K
Rdh:Rdl = Rdh:Rdl + K
Z,C,N,V,S
SUB Rd, Rr
Rd = Rd – Rr
Z,C,N,V,H
SUBI Rd, K
Rd = Rd – K
Z,C,N,V,H
SBC Rd, Rr
Rd = Rd – Rr – C
Z,C,N,V,H
SBCI Rd, K
Rd = Rd – K – C
Z,C,N,V,H
SBIW Rdl,K
Rdh:Rdl = Rdh:Rdl – K
Z,C,N,V,S
AND Rd, Rr
Rd = Rd & Rr
Z,N,V
ANDI Rd, K
Rd = Rd & K
Z,N,V
OR Rd, Rr
Rd = Rd | Rr
Z,N,V
ORI Rd, K
Rd = Rd | K
Z,N,V
EOR Rd, Rr
Rd = Rd ^ Rr
Z,N,V
COM Rd
Rd = $FF – Rd
Z,C,N,V
NEG Rd
Rd = $00 – Rd
Z,C,N,V,H
SBR Rd

دیدگاه خود را بیان کنید

لطفا پیام خود را وارد نمایید
لطفا نام خود را در این قسمت وارد نمایید