انواع داده در AVR :
میکروکترلر AVR فقط یک نوع داده را پشتیبانی میکند. آن نوع 8 بیتی است و اندازه هر ثبات نیز 8 بیت میباشد. این وظیفه برنامه نویس است که دادههای بزرگتر از 8 بیت را به تکه های کوچک تری قسمت کند تا اوسط CPU پردازش شود.
#میکروکنترلر #AVR
🆔@computeronic
میکروکترلر AVR فقط یک نوع داده را پشتیبانی میکند. آن نوع 8 بیتی است و اندازه هر ثبات نیز 8 بیت میباشد. این وظیفه برنامه نویس است که دادههای بزرگتر از 8 بیت را به تکه های کوچک تری قسمت کند تا اوسط CPU پردازش شود.
#میکروکنترلر #AVR
🆔@computeronic
نمایش فرمت دادهها :
چهار روش برای نمایش یک بایت داده در اسمبلر AVR وجود دارد. اعداد میتوانند در قالب شانزدهی(هگز) ، دودویی ، دهدهی ، یا کد اسکی باشند. در ادامه نحوه کار هر یک بیان شده است.
اعداد مبنای شانزده (هگز) :
دو روش برای نمایش اعداد شانزدهی وجود دارد :
1- قرار دادن 0x یا 0X در جلوی اعداد مانند :
LDI R16 , 0x99
2-قرار دادن علامت $ در جلوی اعداد مانند :
LDI R16 , $99
اعداد دودویی :
فقط یک روش برای نمایش اعداد دودویی در اسمبلر AVR وجود دارد. بصورت زیر :
LDI R16, 0b10011001
;R16 = 10011001 or 99 in hex
اعداد دهدهی :
برای نمایش اعداد دهدهی در اسمبلر AVR ، خود عدد را استفاده میکنیم و چیزی قبل یا بعد از آن قرار نمیدهیم
LDI R17 , 12
کد اسکی :
برای نمایش دادههای اسکی در اسمبلر AVR از علامت ( ' ' ) استفاده میکنیم بصورت زیر :
LDI R16 , '9'
;R20 = 0X39 which is hex number for ASCII '9'
#میکروکنترلر #AVR
🆔@computeronic
چهار روش برای نمایش یک بایت داده در اسمبلر AVR وجود دارد. اعداد میتوانند در قالب شانزدهی(هگز) ، دودویی ، دهدهی ، یا کد اسکی باشند. در ادامه نحوه کار هر یک بیان شده است.
اعداد مبنای شانزده (هگز) :
دو روش برای نمایش اعداد شانزدهی وجود دارد :
1- قرار دادن 0x یا 0X در جلوی اعداد مانند :
LDI R16 , 0x99
2-قرار دادن علامت $ در جلوی اعداد مانند :
LDI R16 , $99
اعداد دودویی :
فقط یک روش برای نمایش اعداد دودویی در اسمبلر AVR وجود دارد. بصورت زیر :
LDI R16, 0b10011001
;R16 = 10011001 or 99 in hex
اعداد دهدهی :
برای نمایش اعداد دهدهی در اسمبلر AVR ، خود عدد را استفاده میکنیم و چیزی قبل یا بعد از آن قرار نمیدهیم
LDI R17 , 12
کد اسکی :
برای نمایش دادههای اسکی در اسمبلر AVR از علامت ( ' ' ) استفاده میکنیم بصورت زیر :
LDI R16 , '9'
;R20 = 0X39 which is hex number for ASCII '9'
#میکروکنترلر #AVR
🆔@computeronic
دستورالعملهای (directives) اسمبلر :
درحالی که دستورات (instructions) به CPU میگویند که چه کاری را انجام دهد ، دستور العملهای (directives) ، که شبه دستورات نیز نامیده میشوند، اسمبلر را هدایت میکنند. برای مثال دستورهای LDI و ADD به CPU فرمان میدهند ولی EQU , .DEVICE. و ORG. دستورالعملهایی برای اسمبلر هستند.
#میکروکنترلر #AVR
🆔@computeronic
درحالی که دستورات (instructions) به CPU میگویند که چه کاری را انجام دهد ، دستور العملهای (directives) ، که شبه دستورات نیز نامیده میشوند، اسمبلر را هدایت میکنند. برای مثال دستورهای LDI و ADD به CPU فرمان میدهند ولی EQU , .DEVICE. و ORG. دستورالعملهایی برای اسمبلر هستند.
#میکروکنترلر #AVR
🆔@computeronic
دستور EQU. (برابر گرفتن - equate) :
این دستورالعمل برای تعریف یک مقدار ثابت یا یک آدرس معین بکار میرود. دستورالعمل EQU. برای هر واحد داده، فضایی را تخصیص نمیدهد ، ولی عدد ثابتی را به یک داده یا آدرس برچسب پیوند میدهد و در جاهایی که از آن برچسب در برنامه استفاده شده این مقدار ثابت جایگزین برچسب خود میشود. در برنامه زیر از دستورالعمل EQU. برای تعریف یک مقدار ثابت شمارنده استفاده شده ، و سپس این مقدار ثابت بر روی R21 کپی میشود
.EQU COUNT = 0x25
LDI R21, COUNT ;R21 = 0x25
وقتی دستور بالا اجرا شود مقدار R21 برابر 25H میشود مزیت استفاده از EQU. در این است که فرض کنید برنامه نویسی میخواهد یک مقدار را در کل برنامه تغییر دهد برای این کار دو راه وجود دارد یکی اینکه تمام مقادیر را با جستجو در برنامه تک تک تغییر دهد یا اینکه با استفاده از EQU. یک بار فقط عوض کند
#میکروکنترلر #AVR
🆔@computeronic
این دستورالعمل برای تعریف یک مقدار ثابت یا یک آدرس معین بکار میرود. دستورالعمل EQU. برای هر واحد داده، فضایی را تخصیص نمیدهد ، ولی عدد ثابتی را به یک داده یا آدرس برچسب پیوند میدهد و در جاهایی که از آن برچسب در برنامه استفاده شده این مقدار ثابت جایگزین برچسب خود میشود. در برنامه زیر از دستورالعمل EQU. برای تعریف یک مقدار ثابت شمارنده استفاده شده ، و سپس این مقدار ثابت بر روی R21 کپی میشود
.EQU COUNT = 0x25
LDI R21, COUNT ;R21 = 0x25
وقتی دستور بالا اجرا شود مقدار R21 برابر 25H میشود مزیت استفاده از EQU. در این است که فرض کنید برنامه نویسی میخواهد یک مقدار را در کل برنامه تغییر دهد برای این کار دو راه وجود دارد یکی اینکه تمام مقادیر را با جستجو در برنامه تک تک تغییر دهد یا اینکه با استفاده از EQU. یک بار فقط عوض کند
#میکروکنترلر #AVR
🆔@computeronic
دستورالعمل SET.
این دستورالعمل برای تعریف یک مقدار ثابت یا یک آدرس معین بکار میرود. در این حالت دستورالعملهای EQU. و SET. یکسان عمل میکنند . تنها تفاوت موجود این است که مقدار نسبت داده شده توسط دستورالعمل SET. امکان دارد بعدها دوباره مقدار دهی شود.
#میکروکنترلر #AVR
🆔@computeronic
این دستورالعمل برای تعریف یک مقدار ثابت یا یک آدرس معین بکار میرود. در این حالت دستورالعملهای EQU. و SET. یکسان عمل میکنند . تنها تفاوت موجود این است که مقدار نسبت داده شده توسط دستورالعمل SET. امکان دارد بعدها دوباره مقدار دهی شود.
#میکروکنترلر #AVR
🆔@computeronic
دستورالعمل ORG. (نقطه آغاز - origin) :
دستورالعمل ORG. برای نمایش ابتدای آدرس بکار میرود. این دستورالعمل میتواند برای کد و داده هر دو استاده گردد.
دستورالعمل INCLUDE. :
دستوالعمل INCLUDE. به اسمبلر AVR میگوید که محتوای یک فایل را به برنامه ما اضافه کند مانند اضافه کردن کتابخانهها برای استفاده از میکروکنترلر ATMega32 باید دستور زیر را در ابتدای برنامه بنویسید
.INCLUDE "M32DEF.INC"
#میکروکنترلر #AVR
🆔@computeronic
دستورالعمل ORG. برای نمایش ابتدای آدرس بکار میرود. این دستورالعمل میتواند برای کد و داده هر دو استاده گردد.
دستورالعمل INCLUDE. :
دستوالعمل INCLUDE. به اسمبلر AVR میگوید که محتوای یک فایل را به برنامه ما اضافه کند مانند اضافه کردن کتابخانهها برای استفاده از میکروکنترلر ATMega32 باید دستور زیر را در ابتدای برنامه بنویسید
.INCLUDE "M32DEF.INC"
#میکروکنترلر #AVR
🆔@computeronic
قواعد برچسب زدن در اسمبلی :
یک برنامه نویس میتواند برنامه خود را با استفاده از اسامی معنیدار برنامه خود را کاربردی تر و خواناتر کرد. توجه کنید که نام هر برچسب باید یکتا باشد. در زبان اسمبلی اسامی که برای برچسبها بکار میرود از حروف الفبا(کوچک و بزرگ) ارقام صفر تا 9 و کاراکترهای مخصوص مانند علامت سوال (؟) ، نقطه (.) ، علامت اَت (@) ، خط زیرین (_) و علامت دلار ($) تشکیل شدهاند. حرف اول هر برچسب باید یکی از حروف الفبا باشد به عبارت دیگر نمیتواند عدد باشد هر اسمبلر تعدادی کلمات از پیش تعریف شده دارد که به اصطلاح رزرو است مانند ADD , LDI و نمیتوان از این کلمات به عنوان برچسب استفاده نمود.
#میکروکنترلر #AVR
🆔@computeronic
یک برنامه نویس میتواند برنامه خود را با استفاده از اسامی معنیدار برنامه خود را کاربردی تر و خواناتر کرد. توجه کنید که نام هر برچسب باید یکتا باشد. در زبان اسمبلی اسامی که برای برچسبها بکار میرود از حروف الفبا(کوچک و بزرگ) ارقام صفر تا 9 و کاراکترهای مخصوص مانند علامت سوال (؟) ، نقطه (.) ، علامت اَت (@) ، خط زیرین (_) و علامت دلار ($) تشکیل شدهاند. حرف اول هر برچسب باید یکی از حروف الفبا باشد به عبارت دیگر نمیتواند عدد باشد هر اسمبلر تعدادی کلمات از پیش تعریف شده دارد که به اصطلاح رزرو است مانند ADD , LDI و نمیتوان از این کلمات به عنوان برچسب استفاده نمود.
#میکروکنترلر #AVR
🆔@computeronic
ساختار زبان اسمبلی :
یک برنامه زبان اسمبلی از یک سری خطوط حاوی دستورات زبان اسمبلی تشکیل شده است. یک دستور زبان اسمبلی عبارت است از یک کلمه اختصاری که میتواند یک یا چند عملوند اختیاری به دنبال داشته باشند. عملوندها واحدهای دادهای هستند که پردازش میشوند و کلمات اختصاری فرمانهایی هستند که به CPU میگویند با دادهها چه کند.
#میکروکنترلر #AVR
🆔@computeronic
یک برنامه زبان اسمبلی از یک سری خطوط حاوی دستورات زبان اسمبلی تشکیل شده است. یک دستور زبان اسمبلی عبارت است از یک کلمه اختصاری که میتواند یک یا چند عملوند اختیاری به دنبال داشته باشند. عملوندها واحدهای دادهای هستند که پردازش میشوند و کلمات اختصاری فرمانهایی هستند که به CPU میگویند با دادهها چه کند.
#میکروکنترلر #AVR
🆔@computeronic
در عکس فوق برنامهای را نوشتهایم از دستوراتی که گفته شد.
1. SRAM loc $300 for SUM
2.START at address 0
3.R16 = 0x25
4.R17 = 0x34
5.R18 = 0x31
6.add R17 to R16
7.add R18 to R16
8.R17 = 0x0B
9.add R17 to R16
10.save the SUM in loc $300
11.stay haere forever
#میکروکنترلر #AVR
🆔 @computeronic
1. SRAM loc $300 for SUM
2.START at address 0
3.R16 = 0x25
4.R17 = 0x34
5.R18 = 0x31
6.add R17 to R16
7.add R18 to R16
8.R17 = 0x0B
9.add R17 to R16
10.save the SUM in loc $300
11.stay haere forever
#میکروکنترلر #AVR
🆔 @computeronic
اسمبل کردن یک برنامه AVR :
حال که شکل پایه ای یک برنامه زبان اسمبلی را دیدیم، به ساختن یک برنامه میپردازیم.
مراحل ساخت یک برنامه امبلی قابل اجرا بطور اجمالی در زیر بیان شده است :
۱. ابتدا از یک ویرایشگر متن برای نوشتن یک برنامه شبیه برنامهای که در پست قبل ساختیم.
میکرو کنترل های AVR از AVR Studio IDE، که دارای ویرایشگر متن، اسمبلر، شبیه ساز و موارد بسیار دیگر در یک بسته نرم افزاری می باشد، استفاده می کنیم. این برنامه یک نرم افزار تولید محصول بسیار عالی است که تمام امکانات تراشه AVR را به صورت رایگان پشتیبانی می کند. ویرایشگرها در پردازش کنندگان متن بسیاری در دسترس هستند که می توان از آنها برای ایجاد یا ویرایش متن اتفاده کرد.
#میکروکنترلر #AVR
🆔@computeronic
حال که شکل پایه ای یک برنامه زبان اسمبلی را دیدیم، به ساختن یک برنامه میپردازیم.
مراحل ساخت یک برنامه امبلی قابل اجرا بطور اجمالی در زیر بیان شده است :
۱. ابتدا از یک ویرایشگر متن برای نوشتن یک برنامه شبیه برنامهای که در پست قبل ساختیم.
میکرو کنترل های AVR از AVR Studio IDE، که دارای ویرایشگر متن، اسمبلر، شبیه ساز و موارد بسیار دیگر در یک بسته نرم افزاری می باشد، استفاده می کنیم. این برنامه یک نرم افزار تولید محصول بسیار عالی است که تمام امکانات تراشه AVR را به صورت رایگان پشتیبانی می کند. ویرایشگرها در پردازش کنندگان متن بسیاری در دسترس هستند که می توان از آنها برای ایجاد یا ویرایش متن اتفاده کرد.
#میکروکنترلر #AVR
🆔@computeronic
مطالبی بیشتر در مورد فایل های asm و obj :
فایل asm فایل منبع ( source file ) نیز نامیده می شود و باید پسوندش " asm " باشد . چنانچه پیش از این نیز ذکر شد ، این فایل توسط یک ویرایشگر متن مانند MS - DOS EDIT یا Notepad در ویندوز ساخته می شود . بسیاری از اسمبلر ها حاوی ویرایشگر متن نیز می باشند . اسمبلر دستورات زبان اسمبلی موجود در فایل asm را به زبان ماشین تبدیل کرده و فایل object ) obj ) می سازد . فایل object به عنوان ورودی یک شبیه ساز نرم افزاری یا شبیه ساز سخت افزاری استفاده می شود . قبل از اسمبل کردن یک برنامه و ایجاد یک برنامه آماده اجرا ، باید مطمئن شویم که کد هیچ خطایی ندارد. AVR studio IDE پیغامهای خطا را در اختیار ما قرار میدهد و تا زمانی که اسمبلر برنامهای را که خطاهای آن رفع نشود اسمبل نمیکند.
#میکروکنترلر #AVR
🆔@computeronic
فایل asm فایل منبع ( source file ) نیز نامیده می شود و باید پسوندش " asm " باشد . چنانچه پیش از این نیز ذکر شد ، این فایل توسط یک ویرایشگر متن مانند MS - DOS EDIT یا Notepad در ویندوز ساخته می شود . بسیاری از اسمبلر ها حاوی ویرایشگر متن نیز می باشند . اسمبلر دستورات زبان اسمبلی موجود در فایل asm را به زبان ماشین تبدیل کرده و فایل object ) obj ) می سازد . فایل object به عنوان ورودی یک شبیه ساز نرم افزاری یا شبیه ساز سخت افزاری استفاده می شود . قبل از اسمبل کردن یک برنامه و ایجاد یک برنامه آماده اجرا ، باید مطمئن شویم که کد هیچ خطایی ندارد. AVR studio IDE پیغامهای خطا را در اختیار ما قرار میدهد و تا زمانی که اسمبلر برنامهای را که خطاهای آن رفع نشود اسمبل نمیکند.
#میکروکنترلر #AVR
🆔@computeronic
یکی از ویرایشگرهای بر استفاده در محیط ویندوز Notepad است که در تمام سیستم عامل های مایکروسافت موجود می باشند . توجه داشته باشید که ویرایشگر باید قابلیت تولید یک فایل اسکی را داشته باشد . در اسمبلرها نام فایل ها از قراردادهای رایج در DOS تبعیت می کنند ، ولی پسوند فایل منبع ( asm " ( source files " می باشد . فایل های منبع با پسوند " asm در مرحله بعدی توسط أسمبلر مورد استفاده قرار میگیرند . فایل منبع " asm " حاوی کد تولید شده در مرحله اول ، به اسمبلر AVR داده می شود . اسمبلر یک فایل object ، یک فایل hex ، یک فایل eeprom ،یک فایل list و یک فایل map تولید می کند . فایل object دارای پسوند obj ، فایل hex دارای پسوند hex، فایل eeprom دارای پسوند eep . فایل list دارای پسوند lst و فایل map دارای پسوند map می باشد . پس از یک لینک شدن موفق ، فایل هگز برای ریخته شدن بر روی ROM برنامه AVR آماده می باشد . به عبارتی فایل هگز بر روی برد آموزشی AVR دانلود می شود . می توان فایل eeprom را نیز بر روی EEPROM داخلی AVR برای مقدار دهی اولیه EEPROM دانلود کرد .
#میکروکنترلر #AVR
🆔@computeronic
#میکروکنترلر #AVR
🆔@computeronic
فایل lst (list) :
فایل list ) list ) ، که اختیاری می باشد ، برای برنامه نویس بسیار سودمند است . فایل list کد منبع و دودویی را نشان می دهد . این فایل دستورات بکار رفته شده در کد منبع و مقدار حافظه ای را که توسط دودویی برنامه استفاده می شود ، گزارش می دهد . بسیاری از اسمبلرها فرض می کنند شما احتیاجی به فایل list ندارید ، مگر اینکه خودتان اشاره کنید که مایل به تولید آن هستید . این فایل ها توسط یک ویرایشگر متن مانند Notepad قابل دسترسی بوده ، و می توان آنها را بر روی صفحه نمایش به تصویر کشید و یا برای چاپ به پرینتر ارسال کرد . برنامه نویسان از فایل های list و map برای اطمینان از طراحی صحیح سیستم استفاده میکنند . اسمبلرهای AVR مختلف بسیاری به صورت رایگان وجود دارند . اگر شما از سیستم عامل ویندوز استفاده میکنید ، AVR Studio می تواند انتخاب مناسبی برایتان باشد ، زیرا که محیط خوب و مطلوبی داشته و اطلاعات کمکی خیلی خوبی را فراهم می کند .
#میکروکنترلر #AVR
🆔@computeronic
فایل list ) list ) ، که اختیاری می باشد ، برای برنامه نویس بسیار سودمند است . فایل list کد منبع و دودویی را نشان می دهد . این فایل دستورات بکار رفته شده در کد منبع و مقدار حافظه ای را که توسط دودویی برنامه استفاده می شود ، گزارش می دهد . بسیاری از اسمبلرها فرض می کنند شما احتیاجی به فایل list ندارید ، مگر اینکه خودتان اشاره کنید که مایل به تولید آن هستید . این فایل ها توسط یک ویرایشگر متن مانند Notepad قابل دسترسی بوده ، و می توان آنها را بر روی صفحه نمایش به تصویر کشید و یا برای چاپ به پرینتر ارسال کرد . برنامه نویسان از فایل های list و map برای اطمینان از طراحی صحیح سیستم استفاده میکنند . اسمبلرهای AVR مختلف بسیاری به صورت رایگان وجود دارند . اگر شما از سیستم عامل ویندوز استفاده میکنید ، AVR Studio می تواند انتخاب مناسبی برایتان باشد ، زیرا که محیط خوب و مطلوبی داشته و اطلاعات کمکی خیلی خوبی را فراهم می کند .
#میکروکنترلر #AVR
🆔@computeronic
شمارنده برنامه در AVR :
مهم ترین ثبات در AVR و سایر میکروکنترلرها ، ثبات شمارنده برنامه ( program counter ) است . شمارنده برنامه توسط CPU برای اشاره به آدرس دستور بعدی که باید اجرا شود ، بکار گرفته می شود . هنگامی که CPU کد ماشین ( opcode ) را از ROM برنامه واکشی می کند ، شمارنده برنامه بطور اتوماتیک اضافه می شود تا به دستور بعدی اشاره کند ، هرچه پهنای شمارنده برنامه بیشتر باشد ، CPU به خانه های حافظه بیشتری دسترسی خواهد داشت . این بدین معناست که با شمارنده برنامه ۱۴ بینی می توان حداکثر به 14^2 = 16K خانه حافظه برنامه دسترسی پیدا کرد .
در خانواده AVR هر خانه حافظه آنی ( flash ) 2 بایت پهنا دارد . برای مثال ، در ATmega32 ، که حافظه فلش آن ۳۲ کیلو بایت می باشد ، این حافظه به صورت 16K × 16 سازماندهی شده است شمارنده برنامه آن 14 بیتی است. ATmega64 شمارنده برنامه 15 بیتی دارد حافظه فلش آن حاوی 32K خانه ( 32K = 2^15 ) می باشد که هر خانه آن 2 بایت پهنا دارد پس حجم کل حافظه برابر است با 32K * 2 = 64 Kbytes )
در مورد شمارنده های برنامه 16 بیتی فضای کد 64K می باشد که محدوده آدرس 0000 تا FFFFH را در بر می گیرد . شمارنده برنامه در خانواده AVR می تواند تا 22 بیت توسعه یابد . پس به عبارتی می تواند به آدرس برنامه 000000 تا 3FFFFFH ، یعنی کل خانه های موجود در 4 مگابایت دسترسی داشته باشد . از آنجایی که هر خانه حافظه فلش 2 بایت پهنا دارد ، AVR می تواند حداکثر تا 8 مگابایت کار را در خود جای دهد . فضای کد 8 مگابایتی فضای بسیاری است ، هرچند کل این 8 مگابایت ROM داخلی بر روی هیچیک از اعضای خانواده AVR نصب نشده است .
#میکروکنترلر #AVR
🆔@computeronic
مهم ترین ثبات در AVR و سایر میکروکنترلرها ، ثبات شمارنده برنامه ( program counter ) است . شمارنده برنامه توسط CPU برای اشاره به آدرس دستور بعدی که باید اجرا شود ، بکار گرفته می شود . هنگامی که CPU کد ماشین ( opcode ) را از ROM برنامه واکشی می کند ، شمارنده برنامه بطور اتوماتیک اضافه می شود تا به دستور بعدی اشاره کند ، هرچه پهنای شمارنده برنامه بیشتر باشد ، CPU به خانه های حافظه بیشتری دسترسی خواهد داشت . این بدین معناست که با شمارنده برنامه ۱۴ بینی می توان حداکثر به 14^2 = 16K خانه حافظه برنامه دسترسی پیدا کرد .
در خانواده AVR هر خانه حافظه آنی ( flash ) 2 بایت پهنا دارد . برای مثال ، در ATmega32 ، که حافظه فلش آن ۳۲ کیلو بایت می باشد ، این حافظه به صورت 16K × 16 سازماندهی شده است شمارنده برنامه آن 14 بیتی است. ATmega64 شمارنده برنامه 15 بیتی دارد حافظه فلش آن حاوی 32K خانه ( 32K = 2^15 ) می باشد که هر خانه آن 2 بایت پهنا دارد پس حجم کل حافظه برابر است با 32K * 2 = 64 Kbytes )
در مورد شمارنده های برنامه 16 بیتی فضای کد 64K می باشد که محدوده آدرس 0000 تا FFFFH را در بر می گیرد . شمارنده برنامه در خانواده AVR می تواند تا 22 بیت توسعه یابد . پس به عبارتی می تواند به آدرس برنامه 000000 تا 3FFFFFH ، یعنی کل خانه های موجود در 4 مگابایت دسترسی داشته باشد . از آنجایی که هر خانه حافظه فلش 2 بایت پهنا دارد ، AVR می تواند حداکثر تا 8 مگابایت کار را در خود جای دهد . فضای کد 8 مگابایتی فضای بسیاری است ، هرچند کل این 8 مگابایت ROM داخلی بر روی هیچیک از اعضای خانواده AVR نصب نشده است .
#میکروکنترلر #AVR
🆔@computeronic