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

ثباتهای AVR

Image result for ‫ثباتهای AVR‬‎ میکروکنترلرهای avr معماری میکروکنترلرهای AVR 9k

میکروکنترلرهای 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‬‎ میکروکنترلرهای avr معماری میکروکنترلرهای AVR images q tbn ANd9GcR82h4IGmI0EBYgzRi0Jt8cmM8IJHwDiD8 ejo98cZKDwoqhyG4fw

برای خرید کتاب میکروکنترلرهای AVR اسمبلی و C اینجا کلیک کنید.

نظر دهید

پاسخ دهید

آزمون تاپ
Logo
بازیابی رمز عبور
مقایسه موارد
  • کل (0)
مقایسه
0