انواع داده در 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