منوی محصولات
منوی محصولات

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

شنبه ۲ اردیبهشت ۱۳۹۶

ثباتهای AVR

 

Image result for ‫ثباتهای AVR‬‎

میکروکنترلرهای 8 بیتی AVR 32 ثبات 8 بیتی همه منظوره دارند یعنی r0 تا r31 .

 

سه ثبات آدرس شانزده بیتی با نام مستعار X و Y و Z که هر کدام از این سه ثبات دو ثبات از همان 32 ثبات 8 بیتی هستند یعنی X(r27:r26), Y(r29:r28), Z(r31:r30) .

 

یک ثبات 16 بیتی به منظور اشاره گر پشته که در آدرسهای ورودی/خروجی:


 

                           0x3e(SPH) و 0x3d(SPL) قرارگرفته اند.همچنین این آدرسها در حافظه داده با آدرسهای 0x5e و 0x5d هستند

 

 

یک ثبات 8بیتی به منظور سنجش وضعیت یا همان ثبات پرچم با نام 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 که حجم حافظۀ کد آنها از 1k تا 128k بایت و حجم حافظۀ دادۀ آنها از 32 بایت تا 4k بایت متغیر است یاد آورم شویم که این مقادیر حافظه همراه با گذشت زمان پیوسته در حال افزایش است . حافظه داده و ثباتهای AVR

32 آدرس اول حافظه یعنی (0x0000 تا 0x001f ) متعلق به ثباتهای r0 تا r31 هستند.البته در برخی MCU (MicroController Unit) ها برای ثباتها از فضای حافظۀ داده استفاده می شود.

آدرسهای ( 0x0020 تا 0x005f ) از حافظۀ داده در دسترس آدرسهای ورودی/خروجی (0x00 تا 0x3f ) است.

از آدرس 0x0060 حافظۀ داده به بعد فقط شامل حافظه استاتیک است یعنی 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 می شود:

 

0

0

0

0

1

1

0

1

0

0

0

1

0

0

1

0

 

که در این صورت خروجی AVR-OBJDUMP از این قرار استHex : 0: 12 0d add r17, r2 توجه داشته باشید که یک کلمۀ 16 بیتی از هشت بیت کم ارزش آن در حافظه ذخیره می شود. دستورالعملهای Encode شده با قالب دو ثباتی را در جدول زیر مشاهده می کنید:

 

000111rdddddrrrr

adc Rd, Rr

000111dddddddddd

rol Rd

000011rdddddrrrr

add Rd, Rr

000011dddddddddd

lsl Rd

001000rdddddrrrr

and Rd, Rr

001000dddddddddd

tst Rd

000101rdddddrrrr

cp Rd, Rr

000001rdddddrrrr

cpc Rd, Rr

000100rdddddrrrr

cpse Rd, Rr

001001rdddddrrrr

eor Rd, Rr

001001dddddddddd

clr Rd

001011rdddddrrrr

mov Rd, Rr

100111rdddddrrrr

mul Rd, Rr

001010rdddddrrrr

or Rd, Rr

000010rdddddrrrr

sbc Rd, Rr

000110rdddddrrrr

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<>

   

Image result for ‫ثباتهای AVR‬‎

نظرات کاربران

شما میتوانید نظر خود را در مورد این مطلب بیان کنید.

ایمیل شما منتشر نخواهد شد.
حروف بزرگ و کوچک یکسان است.