با سلام در صورت سوال در تاپیک پاسگویی به مسائل میکرو مطرح کنید
خانواده avr بزرگ و گسترده می باشد که هر کدام دارای اماکانات خاصی می باشند
هر میکرو دارای چند پورت می باشد کار پورت ارتباط با دنیا خارج است به این معنی که تبادل اطلاعات از بیرون میکرو به داخل میکرو و به عکس از راه همین پورتها انجام می گیرد همانطور در تاپیک پیش کفتیم هر پورت دارای سه رجیستر
است که پورت مورد نظر را کنترل می کند
که در تاپیک قبل دو رجیستر را توضیح دادیم
سومی که یک رجستر نیست دقت کنید به سومی بایت ادرس ورودی می گویند به این نکته توجه کنید هر گاه شما از پورت می خوانید میکرو دیتای لچ شده از روی پورت را می خواند
به این مثال دقت کنید
a=porta
هر گاه از این دستور شما استفاده کنید مقدار لچ خوانده می شود
و حال اگر شما از بایت ادرس بخوانید میکرو مقدار منطقی هر پایه را به شما می دهد ه از این دستور باید استفاده کرد
a=pina
aکه یک متغیر است که مقدار پورت ش در ان قرار می گیر د به فرض اگربخواهید مقدار فیزیکی پورت b را بخوانید به جای کارکتر a کارکتر b قرار می گیرد
از این خط به بعد هم با دستورات بیسیک اشنا می شوید هم با سیستم داخلی میکرو
بریا یادگیری مباحث باید هم برنامه بسکام avr و برنامه پرتیوس را در کامپیوتر خود نصب کنید و هر مبحثی که گفته می شود را تمرین کنید
دقت کنید در بعضی از پورتهای میکرو برای هر پایه چند کار تعیین شده است که بصورت مولتی پلکس کار می کند ممکن است مثلا پین شماره 1 از پورت a هم ورودر و خروجی باشد و هم پایه تحریک کننده تایمر که به وسیله دستورا ت برنامه نویسی و دستگاری رجستر ها هر کدام را که خواستیم فعال کنیم لازم به ذکر زمانی که پورت مورد نظر را به عنوان ورودی و خروجی تعریف می کنیم دیگر نمی توانیم از قایلیت دیگر ان استفاده کنیم
اگر بخواهیم پورتی را به صورت ورودی و خروجی تعریف کنیم از این دستورات استفاده می کنیم که باید در اول برنامه این دستورا را نوشت
config portx=input
با استفاده از دستور با لا ما پورت را به صورت ورودی تعریف کردیم که جای x باید نام پورت مورد نظر را نوشت
و حالا اگر به جای واژه input از از واژه output استفاده کنیم پورت به صورت خروجی تعریف می شود
اگر پورت را به صورت ورودی تعریف کنیم تما م پایه های پورت صفر می شود
اگر به صورت خروجی تعریف کنیم کا پایه ها یک می شود
مثال
config porta=input
پورت a به صورت ورودی تعریف شده است
config portc =output
پورت c خروجی شده
حالا زمانی پیش می اید که ما بخواهیم هر پایه از پورت را خواستیم ورودی و کدام را که خواستیم خروجی تعریف کنیم
که از این دستور استفاده م یکنیم
config pinx.y=s
به جای x نا پورت را می نویسیم و به جای y نام پین دلخواه پورت را و به جای s از واژهinput و output استفاده می کنیم به طور مثال
config pinb.5=input
پین شماره 5 از پورت b به صورت ورودی تعریف شده است
در طول یک برنامه ما احتیاج به متغیرهایی داریم که بتوانیم مقداری را در ان بریزیم و یا از ان برداشت کنیم
به طور کلی مغییر خانه هایی از ram هستند که بطور موقت اطلاعاتی در انها قرار می گیرد که بعد قطع برق تمام اطلاعات پاک می شود
برای تعریف متغییر از دستور زیر استفاده می کنیم
dim var as [xram/sram/eram] data type
var همان نام متغیر است شما می توانید تعیین کنید که حافظه استفاده شده از ram خارجی باشد یا ram داخلی و یا eeprom و اگر چیزی نوشته نشود پیش فرض از ram داخلی استفاده می شود data type همان نوع داده است که به صورت زیر است
bit-byte-integer-word-long-singel-single
لازم به ذکر است همیشه نوع داده را طوری انتخاب کنیدکه مورد احتیاج شماست به این معنی اگر متغییر شما از نوع byteاست شما مجاز هستید از مقدار 0تا 255را در متغیر قرار دهید اگر بخواهید مقداری بالا تر از 255 به متغیر اختصاص دهید کامپایلر برای شما خطا می گیردو دیگر اینکه اگر نوع داده byte کار شما راه می اندازد هیچگاه نوع متغیر را از نوع بالاتر انتخاب نکنید
چونئ هر گاه شما از بایت استفاده می کنید 8 بیت از حافظه ram اشغال می شود ولی هر وقت از نوع integer ,word ر 16 بیت و از نوع long,singleر32بیت از حافظه ream اشغال می شود پس به اندازهای که لازم دارید نوع داده را انتخاب کنید فضاو مقداری که هر نوع داده به خود اختصاص می دهد به شرح زیر است
bit a bit 0 or 1
byte 8bit 0 to 255
integer 16bit -32767 to 32767
word 16 bit 0 to 65535
long 32bit -2147483648 to 214783647
single 32bit 1.5*10^-45 to 3.4*10^38
string 0-256 byte