تبلیغات
برق. قدرت. کنترل. الکترونیک. مخابرات. تاسیسات. - آموزش میکروavrبه زبان ساده(قسمت3)

برق. قدرت. کنترل. الکترونیک. مخابرات. تاسیسات.

دایره المعارف تاسیسات برق (اطلاعات عمومی برق)

آموزش میکرو avr به زبان ساده قسمت سوم
1-سلام خوبی
2-سلام من خوبم تو چطوری چكار می كنی
1-خوبم ولی یكم ناراحتم
2-چرا
1- بابا تمام این مثال هایی رو كه گفته بودی توی نرم افزار BASCOM تست كردم همشون هم درست بود ولی چه فایده وقتی كه نمی تونم توی محیط BASCOM شبیه سازیشون كنم
2-خوب من كه بهت گفته بودم كه برو توی نرم افزار پروتوس تستش كن
1-اره گفته بودی ولی من كه یاد ندارم باهاش كار كنم
2-خوب بهت یك لینك داده بودم كه بری اونجا دربارش مطلب زیاده
1-خوب درست ولی اگه توضیح بدی اونایی رو هم كه از توی لینك گرفتم باهاش اطلاعاتم كامل می شه
2-خیلی خوب چاره چیه ما كه این همه گفتیم اموزش پروتوس هم می گیم دیگه چی ؟؟
1-دمت گرم بابا خیلی حال دادی
2-فقط یك چیزی رو از همین الان بگم من این نرم افزار پروتوس رو بهت می گم و از اونجایی كه این نرم افزار بعضی وقتا EROR های بدی میده باید مشكلتو خودت حل كنی یا توی توی انجمن مشكلت رو بگی چون من فقط در حد كاركردن با این نرم افزار سرم میشه .
1-باشه هر چی كه تو بگی
2-خوب پس این جلسه نحوه نصب و كاركردن با نرم افزار پروتوس ورژن 6 رو برات توضیح می دم
قبل از اینكه نحوه نصب رو برات توضیح بدم بزار یك مقدار درباره كاربرد نرم افزار برات بگم . این نرم افزار پروتوس یك نوع شبیه ساز هستش كه علاوه بر شبیه سازی قادره یك مدار رو انالیز كنه و همچنین امكان كشیدن پشت فیبر مدار چاپی رو هم میشه از امكاناتش شمرد . ما در اینجا فقط می خوایم از امكان شبیه سازیش استفاده كنیم پروتوس یك شبیه ساز بسیار قدرت مند هستش كه شما می تونی هر مداری رو كه می خای توش شبیه سازی كنی و نتیجه كارت رو ببینی . خود من هر وقت كه می خام یك مداری رو درست كنم اول با پروتوس شبیه سازیش می كنم بعد از اینكه نتیجه گرفتم می روم و اونو روی برد پیاده می كنم . یكی از امكاناتی كه نرم افزار پروتوس در اختیار ما قرار داده شبیه سازی مدارات میكروكنترل هستش و شما قبل از این كه خاسته باشی مدارتو روی برد سوار كنی می تونی توی پروتوس شبیه سازیش كنی و بعد از اینكه نتیجه دلخواهت رو گرفتی اونو روی برد پیاده كنی . شما داخل این پروتوس هر قطعه ای رو كه حتی تا حالا ندیدیش پیدا می كنی و باهاش كار كنی .
خوب حالا بریم سر نصب نرم افزار پروتوس ورژن6 :
برای نصب نرم افزار PROTEUS ابتدا با اجرا كردن SETUP یا INSTALL ان انرا نصب می كنیم بعد از اینكه نصب شد می ریم داخل پوشه CRACK كه در داخل CD نرم افزارش هست . سه تا CRACK داخلش هست كه هر سه تاشون شبیه ادمك هستند و هر سه تا رو باید كپی كنی و در داخل پوشه BIN بریزی یعنی PASTE كنی حالا این فایل BIN رو حتما از خود می پرسی كه كجاست پوشه BIN همون جایی هستش كه نرم افزار رو ریختی بعد از اینكه این كارا رو كردی نوبت می رسه به اجرا كردن خود CRACK هایی كه ریختی كه باید یكی یكی اونا رو اجرا كنی بعد از اینكه هر كدوم رو اجرا كردی یك كادر كوچیك باز می شه كه سه گزینه داره اولی NEXT دومی RESTORE و سومی PATCH می باشد كه بعد از باز شدن پنجره باید روی گزینه RESTORE یا PATCH كه دقیقا یادم نیست كدومشون هست كلیك كنی كه یك پنجره باز می شه داخل این پنجره جدید یك فایل هستش كه باید اونو انتخاب كنی و هی NEXT رو بزنی تا وقتی كه پغام بده CRACK SUCCESSFUL بعد از این كه هرسه تا رو اجرا كردی نرم افزار اماده اجرا هستش .
1-خوب تا اینجاش كه راحت بود حالا برو سر توضیح خود نرم افزار
2-باشه . خوب قصد من از اموزش این نرم افزار PROTUES فقط شبیه سازی خود میكروكنترلرAVR هستش .برای این كه بتونی این كار رو بكنی پس از اینكه پروتوس رو باز كردی باید روی یك شكل كه در بالای نرم افزار است كلیك كنی كه این شكل شبیه یك OPAMP است و از سمت چپ اولین شكل هستش كه اگر روی این شكل موس رو نگه داری نوشته COMPONENT . پس از این كه روی این شكل كلیك كردی یكم پایین تر از این شكل دو تا گزینه پیدا میشه كه اولیش هست P و دومیش هست L كه تو باید روی P كلیك كنی تا كتابخانه قطعت ضاهر بشه كه بالای پنجره این كتابخانه نوشته PICK DEVICES . خوب تو باید از داخل این پنجره قطعاتی رو كه می خای انتخاب كنی مثلا اگر یك میكرو كنترلر AT90S8535 می خای باید ابتدا روی گزینه MICRO كلیك كنی تا لیست كل میكروكنترلر ها اعم از 8051-AVR-PIC رو برات نمایش بده كه ما برای انتخاب میكروكنترلر AT90S8535 باید روی ان دوبار كلیك كنیم تا در كادر كناری سمت چپ نرم افزار ذخیره شود . اگر میكروسوییچ می خاستی در كادر بالایی همین پنجره گزینه ACTIVE رو انتخاب كنی كه توش قصعاتی هستش كه كاربرد زیادی دارند مثل باطری – موتورDC-LED- و همچنین میكروسوییچ . خوب برای این كه میكروسوییچ خاستی بیاری باید روی BUTTON دو بار كلیك كنی تا اون هم در كادر سمت چپ نرم افزار ذخیره بشه منظورم از كادر سمت چپ نرم افزار كادی هستش كه بالاش نوشته DEVICES و دقیقا زیر همون LوP كه بهت گفتم قرار داره. در ضمن برای بزرگ نمایی صفحه نرم افزار باید از F6 و F7 استفاده كنی . یك نكته دیگه اون هم اینكه برای این كه از VCC و GND نرم افزار استفاده كنی باید بری روی یك شكل دیگه كه علامت دوتا پیكان هستش كه مخالف جهت یكدیگردن و این شكل 7 تا شكل بعد از اون شكلی رو كه گفتم شكل OPAMP هستش به سمت راست قرار داره كه اگه روی این شكل با موس وایستی نوشته INTER-SHEET TERMINAL كه بعد از كلیك روی این گزینه یك كادر در سمت چپ نرم افزار باز میشه كه هم GND داره و هم VCC برای اینكه بتونی این دوتارو روی صفحه بیاری كافیه روش یك بار كلیك چپ كنی بعد بیای روی صفحه نرم افزار دو باره كلیك چپ كنی تا روی صفحه نرم افزار ضاهر یشه. برای دیگر قطعات هم باید همین كار رو بكنی یعنی قطعاتی رو كه ذخیره كردی رو یك بار روش كلیك چپ كنی تا انتخاب بشه بعد بیای روی صفحه نرم افزار دوباره كلیك چپ كنی تا ضاهر بشه . برای پاك كردن قطعه از روی صفحه برنامه باید روی اون دوبار كلیك راست كنی . برای تنضیمات یك قطعه مثلا عوض كردن مقدار یك مقاومت یا یك باطری باید ابتدا یك بار روی اون كلیك راست كنی تا قطعه قرمز بشه بعد دوباره روش كلیك چپ كنی تا یك پنجره باز بشه و بتونی مقدار یا هر چیز دیگه شو عوض كنی ولی مواظب باش كه یك وقت دوبار روی اون كلیك راست نكی چون قطعه پاك بشه و اگر یك مومقع این اشتباه رو كردی می تونی ctrl + z رو از روی صفحه كلید بزنی تا قطعه برگرده . برای این كه جای یك قطعه رو روی صفحه عوض كنی باید ابتدا روی قطعه یك بار كلیك راست كنی تا انتخاب بشه بعد با كلیك چپ هر طرف كه خاستی ببریش .
بزار یك كار عملی انجام بدیم تا طرز راه اندازی یا شبیه سازی میكروكنترلر رو توی محیط برنامه یاد بگیری
فرض كن كه می خایم یك مدار ساده مثلا یك چشمك زن رو با AVR درست كنی كه از این ساده تر دیگه وجود نداره این چشمك زن رو می خایم با هشت LED درست كنی كه همه هم زمان با هم روشن خاموش می شن. برای این كار اول می یایم توی محیط پروتوس تا قطعات رو به هم وصل كنیم . خوب طبق همون روشی كه گفته بودم قطعات رو می یاری میكروكنترلر رو از نوع AT90S8535 انتخاب می كنیم و همچنین اول میكرو كنترلر رو میاریم در ضمن اند این هشتا LED رو به ترتیب به پایه های A.0 تا A.7 وصل می كنیم و سر دیگر این LED ها رو به GND وصل كن GND رو هم همون طور كه بهت یاد دادم بیار بعد برو روی توی منوی FILE و روی گزینه SAVE DESING AS كلیك كن و مسیری رو كه برای SAVE كردن مدار ازت می خاد رو بده همون جایی كه نرم افزار رو نصب كردی یعنی توی پوشه SAMPLE البته بهتره توی این پوشه قبلش یك پوشه جدید ایجاد كنی و مدارتو توی این پوشه جید SAVE كنی .
1-من یك چیز رو نفهمیدم برنامه ای نمی خای براش بنویسی و برنامه رو چطوری می خای توش بریزی
2-اگه یكم صبر كنی به اونجاشم می رسیم . خوب تا اینجا كه قسمت سخت افزاری مدار رو انجام دادیم حالا باید برای این مدار یك برنامه هم بنویسیم كه اونم خیلی راحته خوب BASCOM رو باز كن و یك صفحه جدید ایجاد كن و برنامه زیر رو بنویس :
CONFIG PORTA = OUTPUT
DO
TOGGLE PORTA
WAITMS 100
LOOP
برای انتخاب نوع میكروكنترلر همونطور كه بهت یاد دادم برو از داخل خود BASCOM انتخابش كن و حتما AT90S8535 رو انتخاب كن و برای انتخاب فركانس كاری هم بازم همونطوری كه بهت یاد دادم از داخل خود نرم افزار انتخابش كن و بزارش روی 8000000 هرتز بعد كه این تنظیمات رو انجام دادی و OK كردی بیا اول دكمه F7 رو بزن تا برنامه چك بشه تا خطا نداشته باشه وقتی كه این دكمه F7 رو میزنی قبل از اینكه برنامه رو چك كنه ازت یك مسیر میخاد كه برنامه رو كجا ذخیره كنه كه شما باید دقیقا ادرس رو همون جایی بدی كه مدارتو اونجا SAVE كردی خوب كار ما با BASCOM تمام شد و اگه حال كردی می تونی ببندیش و بری سر نرم افزار پروتوس . اول پروتوس رو باز كن بعد برو توی منوی FILE و گزینه
LOAD DESING رو انتخاب كن تا یك پنجره باز بشه بعد از طریق این پنجره برو اون جایی كه مدارتو SAVE كردی و مدارتو انتخاب كن تا روی صفحه بیاد . خوب گفتی كه چطوری برنامه ای رو كه نوشتیم می ریزیم توی میكروكنترلر خوب الان بهت می گم برای این كار باید روی میكروكنترلر یك بار كلیك راست كنی تا انتخاب بشه و به رنگ قرمز در بیاد بعد یك بار كلیك چپ می كنی تا یك پنجره باز بشه داخل این پنجره یك جایی نوشته PROGRAM FILE كه جلوش یك كادر هستش و جلوی این كادر یك شكل زرد رنگ هستش كه باید روی این شكل كلیك كنی تا دوباره یك كادر دیگه باز بشه . به وسیله این كادری كه الان باز شد باید بری برنامه ای كه نوشتی رو از اونجایی كه SAVE قبلا كردی انتخاب كنی منظور فایلی هستش كه با پسوند HEX هستش بعد كه انتخاب كردی و OK رو زدی برنامه خودكار توی میكرو قرار می گیره بعد باید برای انتخاب فركانس كاری میكرو باید در كادری كه نوشته CLOCK FREQUENCY مقدار فركانس میكرو رو بنویسی البته به مگا هرتز 8MHZ . خوب كار دیگه تموم شد OK رو می زنی تا پنجره بسته بشه بعد برای اجرای این مدار باید بری پایین صفحه و روی علامتی كه شبیه PLAY ضبط هستش كلیك كنی كه شبیه مثلث هستش و می بینی كه هر هشتا LED دارن باهم دیگه هم زمان چشمك می زنن.
امروز می خام طرز اتصال صفحه كلید ماتریسی به میكروكنترلر همراه با برنامه اون بهت بگم
1-
صفحه كلید ماتریسی دیگه چیه
2-
همون صفحه كلیدی كه ماشین حسابا و تلفن ها دارن
1-
اها ادامه بده
2-
این صفحه كلید ها از نظر سخت افزاری 8 تا پایه دارن كه مستقیم وصل میشن به میكروكنترلر ویك پوت كامل رو اشغال می كنن
1-
منظورت از اینكه یك پورت كامل رو اشغال می كنن چیه ؟
2-
منظورم اینه كه باید وصل بشن به هشتا از پایه های میكرو مثلا وصل بشن به پورت A یا پورت B یا هر پورتی فرقی نداره كدوم پورت ولی باید اگه می خای به پورت A وصل كنی باید فقط به پایه های پورت A وصل بشن نباید مثلا چندتا رو به پایه های A و چندتای دیگشو وصل كنی مثلا به پایه های پورت B .
خوب بزار بهتر بهت بگم كه باید چطوری وصلش كنی
1-
یك لحظه وایستا اصلا چرا ما باید كیبرد رو وصل كنیم به میكرو خوب كاربردشم بگو دیگه مارو گیج كردی
2-
باشه معزرت می خام . فرض كن كه می خای یك ماشین حساب با میكروكنترلر درست كنی یا اینكه می خای اعداد 0 تا 15 رو روی LCD نمایش بدی . یا یكم پیشرفته تر می تونی یك قفل رمز الكترونیكی درست كنی
1-
حالا فهمیدم ادامه بده
2-
خوب می خاستم بهت بگم كه چطوری كیبرد رو به میكرو وصل كنی . خوب این خیلی ساده است ابتدا یك پورتی كه حال كردی كیبرد رو بهش وصل كنی رو در نظر می گیری خوب گفتم كه كیبرد 8 تا پایه داره خوب میكرو هم هر پورتش 8 تا پایه داره مثلا می خای به پورت A وصل كنی . خوب برای این كار پایه اول كیبرد رو وصل می كنی به پایه A.0 پایه دوم رو وصل می كنی به پایه A.1 و الی اخر كه باید پایه اخر یعنی پایه هشتم كیبرد رو وصل كنی به پایه A.7
1-
خوب این طرز اتصال شو فهمیدم برنام چطوری به میكرو بدیم
2-
عجله می كنی یا . خوب حالا می ریم سر برنامه . قبلش بگم كه وصل كردن صفحه كلید به میكرو رو در اصطلاح بهش
میگن اسكن صفحه كلید . اینو گفتم كه یك موقع جایی شنیدی نگی این دیگه چه اصطلاحیه . خوب برنامه اتصال صفحه كلید ماتریسی به میكرو ساده هستش. طرز كار به این صورت هستش كه ما اول یك متغییر رو از نوع بایت تعریف می كنیم بعد مقدار خونده شده از كیبرد رو می ریزیم توی این متغییر بعد با فرمان CLS و LCD اونو روی LCD نمایش می دیم به همین سادگی . خوب اول باید ما برای میكرو تعریف كنیم كه اقا ما میخایم یك كیبرد ماتریسی به جنابعالی وصل كنیم تا طفلی بفهمه كه این جسمی كه بهش وصل شده چیه . یادت می یاد گفتم كه برای استفاده از امكانات میكرو باید اونها رو پیكره بندی كنی یا به اصطلاح CONFIG كنی
1-
اره
2-
یادت میاد كه برای استفاده از امكان ورودی خروجی میكرو از دستور CONFIG PORTA = OUTPUT برای خروجی و CONFIG PINA.0 = INPUT برای ورودی استفاده می كردیم
1-
بازم اره
2-
خوب یكی از امكانات میكروكنترلر AVR اینكه كه می تونه كلید هایی رو كه روی كیبرد فشرده میشه رو بخونه كه چه عددی بوده و برای استفاده از این امكان هم مثل سایر امكانات دیگه باید از دستور CONFIG استفاده كنیم
CONFIG KBD = PORTB
با دستور بالا ما به میكرو فهماندیم كه اقا ما می خایم یك كیبرد به شما متصل كنیم اون هم به پورت B . توجه كن كه پورتی رو كه جلوی علامتی مساوی می نویسی می تونه یكی از چهار پورت A یا B یا C ویا D باشه ولی هر پورتی رو كه می نویسی كیبرد رو هم باید به همون وصل كنی .
DIM A AS BYTE
خوب ما یك متغییر تعریف كردیم كه مقدار خونده شده از كیبرد رو بریزیم توی این متغییر
1-
منظورت از این كه مقدار خونده شده از كیبرد رو می ریزیم توی متغییر چیه
2-
خوب ببین ما وقتی كه كار برنامه نویسیمون تموم شد و مدار رو راه اندازی كردیم مثلا یك كلید رو از روی صفحه كلید فشار دادیم میكرو قادره مقدار عددی این كلید فشرده شده رو بخونه مثلا كلید شما ره یك رو فشار دادیم میكرو می فهمه كه كلید شماره یك فشرده شده خوب این مقدار عددی باید در یك جا قرار بگیره و ما جایی بهتر از اینكه این مقدار عددی رو انتقال بدیم به یك متغییر گیر نیاوردیم . البته وقتی كه مطلب كیبرد رو تموم كردم كامل می فهمی چی به چیه. بزار یك مثال بزنم . فرض كن كه ما یك كیبرد داریم بایك میكروكنترلر و یك LCD می خایم این سه تا رو به هم وصل كنیم وهنگامی كه یك كلید از روی صفحه كلید فشرده شد میكرو اونو بخونه و مقدار اون عدد رو روی LCD نمایش بده كه برنامه به صورت زیر هستش :

کد:

CONFIG KBD = PORTA
DIM A AS BYTE
MAIN:
DO
A = GETKBD( )
IF A < 16 THEN GOTO MASHHAD
LOOP
END
MASHHAD :
CLS
LCD A
DO
A = GETKBD ( )
LOOP UNTIL A = 16
GOTO MAIN

كل برنامه همین هستش البته به غیر از معرفی میكرو و انتخاب فركانس كاری كه باید در اول برنامه نوشته بشن. خوب حالا بریم سر تحلیل برنامه.
خط اول كه ما پیكره بندی كیبرد رو مشخص كردیم كه می خاهد به پورت A متصل بشه
خط دوم ما یك متغییر تعریف كردیم كه مقدار خوانده شده از كیبرد ریخته بشه یا به عبارتی انتقال داده بشه به داخل این متغییر
خط سوم كه یك زیر برنامه تعریف كردیم
خط بعدی نوشتیم DO یعنی ابتدای حلقه
خط بعد نوشتیم A = GETKBD ( ) با این دستور مقداری كه میكروكنترلر از كیبرد می خونه میریزه توی متغییر A
خط بعد نوشتیم IF A < 16 THEN GOSUB MASHHAD خوب با این دستور این شرط را گذاشتیم كه اگر اعدادی كوچكتر از 16 رو خوندی بروی دستور شرط رو كه پرش به زیر برنامه MASHHAD هستش رو اجرا كن خوب حالا ممكنه كه از خودت بپرسی كه چرا كوچكتر از 16 خوب الان بهت می گم چرا . ببین ما گفتیم كه كیبرد ما 15 دكمه داره كه اعدادی كه داره یعنی 0 تا 15 كه كلا می شه 16 كلید پس ما می تونیم اعداد 0 تا 15 رو روی باهاش نشون بدیم پس باید یك دستوری رو بنویسیم كه اگر عددی كوچكتر از 16 رو خوند بره دستور شرط رو اجرا كنه.
خط بعدی نشتیم LOOP كه پایان حلقه هستش
خط بعدی نوشتیم END كه برنامه هیچ وقت به این END نمی رسه
خط بعدی نوشتیم MASSHAD: كه همان زیر برنامه MASSHAD هستش كه هر اسم دیگه ای می تونیم براش بزاریم
خط بعدی نوشتیم CLS كه باید بدونی كارش چیه
خط بعدی نوشتیم LCD A كه با این دستور مقدار عددی كه میكرو از كیبرد خونده و ریخته توی متغییر A رو می تونیم بخونیم امیدوارم كه فهمیده باشه كه چرا مقداری رو كه میكرو می خونه باید بریزیم توی یك متغییر .فرض كن كه ما كلیدی از كیبرد رو كه روش نوشته 4 رو فشار می دیم میكرو میاد این مقدار رو میخونه و انتقالش می ده توی متغییر A بعد ما برای اینكه ببینیم كلیدی رو كه فشردیم چه عددی بوده باید با دستور LCD A مقدار متغییر A رو روی LCD نمایش بدیم
در خط های بعدی نوشتیم

کد:

DO
A = GETKBD ( )
LOOP UNTIL A = 16
GOTO MAIN

كه این دستورات هیچ توضیحی نداره و همیشه باید بنویسیش . این دستورات برای اینه كه وقتی شما یك دكمه رو فشار می دی میكرو نیاد هی اون عدد رو روی LCD تند تند نمایش بده . این سه خط دستور طور كلی میاد یك حالتی رو در برنامه ایجاد می كنه كه تا وقتی كه ما دستمون رو از روی دكمه فشرده شده برنداشتیم عدد فیكس بمونه بعد وقتی كه دستمون رو از روی كلید برداشتیم میاد خط بعدی رو می خونه
خط اخر هم نوشتیم GOTO MAIN كه با این دستور دوباره برمی گردیم توی حلقه اول و انقدر توی این حلقه می مومنه تا یك دكمه دیگه فشرده بشه و بره اونو بخونه به عبارتی روز از نو روزی از نو.
1-
كل برنامش همین بود
2-
اره اگه شك داری می تونی بری توی پروتوس امتحانش كنی
1-
این كیبرد كجای پروتوس هستش
2-
وقتی كه كتابخانه نرم افزار رو باز كردی اول می ری تو قسمت ACTIVE بعد از اونجا میتونی یك كیبرد انتخاب كنی
1-
ممنون
2-
قربانت . بزار یك مثال كاربدی تر بزنم همین برنامه رو یكم پیشرفته ترش می كنیم مثلا می خایم هر وقت كه دكمه شماره 3 رو فشار دادیم یك LED روشن بشه و هر وقت كه دكمه شماره 12 رو فشار دادیم LED خاموش بشه . پس ما به طور دلخواه باید یك پورت رو مثلا پورت A رو برای اتصال كیبرد به میكرو در نظر بگیریم و یك پورت دیگه هم مثلا پورت B رو برای LED در نظر بگیریم البته ما از پورت B فقط یك پایه لازم داریم كه مثلا می تونه B.0 باشه . LCD هم كه حال می كنیم وصل بشه به پورت C . خوب برنامه ای كه ما باید بنویسیم به شرح زیر است :

کد:

CONFIG PORTB = OUTPUT
CONFIG PORTA = KBD
DIM A AS BYTE
MAIN:
DO
A = GETKBD ( )
IF A < 16 THEN GOTO SHOW1
IF A = 3 THEN GOTO SHOW2
IF A = 12 THEN GOTO SHOW3
LOOP
END
SHOW1:
CLS
LCD A
DO
A = GETKBD ( )
LOOP UNTIL A = 16
GOTO MAIN
SHOW2:
SET PORTB.0
CLS
LCD A
DO
A = GETKBD ( )
LOOP UNTIL A = 16
GOTO MAIN
SHOW3:
RESET PORTB.0
CLS
LCD A
DO
A = GETKBD ( )
LOOP UNTIL A = 16
GOTO MAIN


خوب این هم یك برنامه كامل برای این مثالی كه زدم فقط باید نوع میكرو و فركانس كاری میكرو رو خودت بنویسی یا اینكه از داخل نرم افزار تنظیمشون كنی . خوب حالا بریم سر تحلیل برنامه:
میكرو میاد از خط اول برنامه شروع می كنه به خوندن یعنی عبارت CONFIG PORTB = OUTPUT و می فهمه كه ما یك خروجی رو پیكره بندی كردیم . بعد میاد خط دوم رو می خونه كه نوشته CONFIG PORTA = KBD و می فهمه كه قراره یك كیبرد بهش وصل بشه. بعد خط بعدی رو می خونه DIM A AS BYTE این یعنی اینكه ما یك متغییر تعریف كردیم برای همون كه قبلا بهت گفتم كه می خایم عددی رو كه میكرو از كیبرد می خونه بریزه توی یك متغییر برای همون یك متغییر تعریف كردیم . خط بعدی یك زیر برنامه به اسم MAIN تعریف كردیم كه می تونست هر اسم دخواه دیگه ای با شه كاربردش هم در ادامه بهت می گم كه چرا گذاشتیمش. خط بعدی نوشتیم DO كه با این كار ابتدای یك حلقه رو تعریف كردیم. خط بعد نوشتیم كه A = GETKBD ( ) كه این جمله كوچیك رو می تونم اینطوری ترجمه كنم كه اقای میكرو هر دكمه ای رو كه فشرده شد عدد او دكمه فشرده شده رو بریز توی این متغییر A . در خط های بعدی سه شرط گذاشتیم كه شرط های ما همیشه باید در داخل حلقه DO –LOOP قرار بگیره
1-
چرا باید داخل حلقه قرار بگیره
2-
چون كه یكسره میكرو بیاد این شرط ها رو چك كنه و اگر كه شرطی اجرا شد بره دستور شرط رو اجرا كنه
1-
اها ادامه بده
خوب گفتیم كه ما داخل این حلقه سه تا شرط گذاشتیم . اولی شرط نوشتیم كه IF A < 16 THEN GOTO SHOW1
به این معنی كه اگر A كوچكتر از 16 بود برو دستور شرط رو كه بعد از THEN نوشتیم رو برو اجرا كن خوب حالا دستور شرط چیه اینه : GOTO SHOW1 یعنی اگر شرط مورد نظر اجرا شد بپر برو توی زیر برنامه SHOW1 حال توی زیر برنامه SHOW1 چیكار باید انجام بده رو بهش می رسیم كه از این شرط برای خواندن عددی كه دكمه متناظر با اون فشرده شده استفاده میشه.
شرط دوم نوشتیم كه IF A = 3 THEN GOTO SHOW2 كه با این جمله این مطلب رو به میكرو فهموندیم كه اگر خدای ناكرده دكمه شماره 3 فشرده شد برو دستور شرط رو كه پرش به زیر برنامه SHOW2 هستش رو اجرا كن.
شرط سومی كه گذاشتیم اینه IF A = 12 THEN GOTO SHOW3 یعنی اگر دكمه شماره 12 فشرده شد برو دستور شرط رو كه پرش به زیربرنامه SHOW3 هستش رو اجرا كن. بعد از این كه شروط رو نوشتیم LOOP رو كه پایان حلقه هستش رو گذاشتیم . در خط بعد نوشتیم END كه برنامه ما هیچ وقت به این END نمیرسه و نباید هم برسه . در خط های بعدی سه تا زیر برنامه به نام های SHOW1 و SHOW2 و SHOW3 تعریف كردیم البته كه در داخل این زیر برنامه ها چند تا دستور نوشتیم كه توضیجات این زیر برنامه ها رو حین تحلیل دوم برنامه بهت می گم .
تحلیل دوم برنامه : خوب فرض كن كه برنامه رو نوشتیم و ریختیم توی میكروكنترلر حالا بهت می گم كه می كرو با خوندن این دستورات چیكار می كنه یا به عبارتی دیگر چكار باید بكنه . در دو خط اول كه ما یك پورت برای خروجی تعریف كردیم و یك پورت برای اتصال به كیبرد كه میكرو این دو خط رو می خونه و می ره سر خط سوم در این خط یك متغییر تعریف كردیم كه این خط رو هم می خونه و میره سر خط بعدی. خط بعدی زیر برنامه MAIN رو می خونه و می ره سرخط بعدی . خط بعدی كه ما یك DO گذاشتیم و میكرو این رو هم می خونه و هم زمان كه اینو خوند می فهمه كه ابتدای یك حلقه رسیده و همونجا
میوفته توی این حلقه و میكرو میاد كل چهار خط این حلقه رو می خونه
1-
منظورت از چهار خط داخل این حلقه همون خط اول + سه تا شرط بعدیشه
2-
اره عزیز . بعد كه این چهار خط رو خوند میرسه به LOOP می فهمه كه باید بره دوباره از خط زیر DO شروع كنه به خوندن بعد دوباره میاد این كار رو می كنه و بازدوباره اون چهار خط رو میخونه و بعدش دوباره می رسه به LOOP و دوباره می فهمه كه باید بره برنامه رو از خط زیری DO شروع كنه به خوندن بعد دوباره این كار رو می كنه . به عبارت دیگه می تونم بهت بگم كه داخل این حلقه یكسره دور می زنه
1-
خوب پس كی بیرون میاد
2-
اها این همون سوالی بود كه الان می خواستم جوابشو بگم . وقتی بیرون میادش كه یكی از دستورات شرط اجرا بشه فرقی هم نمی كنه كه كدوم یكی از سه تا شرط باشه
1-
حالا شما فرض كن كه شرط اولی اجرا شده خوب چه اتفاقی میوفته
2-
شرط اولی هستش IF A<16 THEN GOTO SHOW1 كه مربوط به خوندن عدد دكمه ای است كه روی كیبرد فشرده شده. اگر این شرط اجرا بشه دستور شرط هم اجرا می شه دستور شرط همون جمله بعد از THEN هستش كه گفته بپر برو توی زیر برنامه SHOW1 و میكرو هم همین كار رو میكنه و میپره میره توی زیربرنامه SHOW1 و دستوراتی رو كه داخل این زیربرنامه نوشتیم رو اجرا میكنه حالا توی زیر برنامه SHOW1 نوشتیم كه:

کد:

CLS
LCD A
DO
A = GETKBD ( )
LOOP UNTIL A = 16
GOTO MAIN

خط اول داخل زیربرنامه SHOW1 هستش CLS كه میكرو با این دستور می ره و صفحه LCD رو پاك می كنه
خط دوم نوشتیم LCD A یعنی این كه مقدار متغییر A رو كه عدد دكمه ای هست كه فشردیم اونجا ریخته شده رو با این دستور میره روی LCD نمایش می ده حالا هر عددی كه باشه فرقی نداره می ره و نشون می ده
سه خط بعدی هم كه قبلا برات توضح دادم كه برای اینه كه تا وقتی كه دستمون رو از روی دكمه برنداشتیم همون عدد رو روی LCD نمایش بده
خط بعدی نوشتیم GOTO MAIN كه در اخر این زیر برنامه قرار داره به این معنی كه بپر برو توی زیر برنامه MAIN و میكرو هم میره همین كار رو میكنه . بعد از پریدن توی زیربرناه MAIN میكرو میاد خط بعدیشو می خونه نوشته DO و باز دوباره میوفته توی حلقه و دوباره توی این حلقه دور می زنه تا یكی از شروط اجرا بشه . فرض كن كه این دفعه شرط دوم اجرا بشه البته فرقی نمیكنه كه كدوم شرط اجرا بشه خوب گفتیم كه فرض رو بر این میزاریم كه شرط دوم اجرا شده یعنی
IF A = 3 THEN GOTO SHOW2 كه ما با این دستور این شرط را گذاشته بودیم كه اگر دكمه شماره 3 فشرده شد برو دسترو شرط رو اجرا كن كه اگر این شرط اجرا بشه دستور شرط هم كه پرش به زیربرنامه SHOW2 هستش هم اجرا میشه و میكرو هم همین كار رو می كنه و میاد میپره توی زیربرنامه SHOW2 و دستورات داخل این زیربرنامه رو اچرا می كنه كه دستورات داخل این زیربرنامه به قرار زیر است :

کد:

SHOW2:
SET PORTB.0
CLS
LCD A
DO
A = GETKBD ( )
LOOP UNTIL A = 16
GOTO MAIN

خط اول نوشتیم كه SET PORTB.0 به این معنی كه پایه B.0 رو یك كن
خط بعدی نوشته شده CLS یعنی اینكه صفحه LCD رو پاك كن
خط سوم نوشتیم كه LCD A یعنی نشون بده مقدار متغییر A رو كه باید عدد 3 رو نشون بده
1-
چرا 3
2-
چون كه ما داخل اون حلقه شرط گذاشته بودیم كه اگه دكمه شماره 3 فشرده شده بود بپر برو توی زیربرنامه SHOW2 خوب پس دكمه ای كه فشرده شده شماره سه هستش دیگه پس باید حتما عدد 3 رو نشون بده
1-
اخر ما نفهمیدیم كه این شرط بندی حلاله یا حرام
2-
تو این جور موارد حلاله . در سه خط بعدی نوشتیم :

کد:

DO
A = GETKBD ( )
LOOP UNTIL A = 16

كه اینو بهت گفتم برای چیه . برای فیكس شدن عدد روی LCD تا موقعی كه دستمون رو از روی دكمه برنداشتیم
در خط بعدی هم نوشتیم GOTO MAIN كه میكرو با خوندن این دستور می پره میره اولین خط بعد از این زیربرنامه كه نوشته DO رو می خونه و می فهمه كه ابتدای دردسر یعنی دور زدن توی این حلقه شروع شده
1-
خوب این LED كی خاموش می شه
2-
وقتی كه شرط سوم یعنی فشرده شدن دكمه شماره 12 اجرا بشه كه شرطی كه براش گذاشتیم از این قراره
IF A = 12 THEN GOTO SHOW3 این شرط رو میشه اینطوری ترجمه كرد كه اگه دكمه شماره 12 ازروی كیبرد فشرده شد بپر برو توی زیربرنامه SHOW3 . حالا توی این زیربرنامه SHOW3 این دستورات هستش :

کد:

SHOW3:
RESET PORTB.0
CLS
LCD A
DO
A = GETKBD ( )
LOOP UNTIL A = 16
GOTO MAIN

خط اول بعد از زیر برنامه نوشته شده RESET PORTB.0 به این معنی كه پایه B.0 رو 0 كن و در اینجا اون LED كه گفتیم خاموش میشه .
خط بعدی نوشتیم CLS یعنی پاك كن صفحه ال سی دی رو
خط بعدی LCD A هستش یعنی مقدار متغییر A رو نشون بده كه باید مقدار 12 رو روی LCD نمایش بده
سه خط بعدی هم از قرار زیر هستش :

کد:

DO
A = GETKBD ( )
LOOP UNTIL A = 16

كه باید دیگه بدونی مال چی هستش
خط اخر هم GOTO MAIN هستش كه بعد از این كه دستورات داخل زیربرنامه اجرا شد و میكرو به این خط رسید با خوندن این خط میپره میره توی زیربرنامه MAIN و میكرو هم
1-
بزار من بقشو بگم ببین یاد گرفتم یا نه
2-
بفرمایید
1-
بعد از این كه پرید توی زیربرنامه MAIN اولین خط نوشته DO كه دوباره میوفته توی این حلقه . بقیشو خودت بگو
2-
خوب بود معلومه كه یاد گرفتی . بعد توی این حلقه اونقدر دور میزنه تا دوباره یك شرط دیگه از سه شرط اجرا بشه .
این هم از تفسیر برنامه گمون نكنم كه از این ساده تر بشه تفسیرش كرد.
یك نكته ای كه من باید بگم اینه كه تو هر دستور شرطی رو می تونی توی این زیر برنامه ها قرار بدی مثلا بعد از این كه PORTB.0 رو SET كرد یك پشبندش یعنی خط پایینیش بنویسیم كه CLS
LCD "AHMAD" كه با اینكار میداد هم پایه B.0 رو SET میكنه و هم روی LCD یك چیزی می نویسیه و خیلی كارای دیگه ای هم می تونی بكنی كه بستگی به خودت داره
یك نكته دیگه اینه كه گاهی وقتا لازم هستش كه دكمه های صفحه كلید رو مثل ماشین حساب پیكره بندی كنی كه باید از جدول LOOKUP استفاده كنی كه من الان حضور ذهن ندارم كه چطوری بودش یادم رفته باید مراجعه كنم استادم.
درس بعدی استفاده از توابع ریاضی هستش كه من همه اونا رو بهت نمی گم چون كه كاربرد نداره
علامت جمع + : به مثال زیر توجه كن

کد:

DIM A AS BYTE
A = 5 + 1
CLS
LCD A
END

این برنامه هیچ نیازی به توضیح ندارد چون همه چیزش شفاف هستش . فقط همینو بگم كه در مثال بالا ما یك متغییر تعریف كردیم مقداری رو كه به متغییر دادیم 5+1 هستش میكرو میاد با امكاناتی كه داخل خودش داره این دو عدد رو باهم جمع می كنه و حاصل كه عدد 6 هست رو هنگامی كه ما دستور LCD A رو می خونه یعنی عدد 6 روی LCD نمایش میده . بزار یكم پیشرفته ترش كنیم

کد:

CONFIG PORTB = OUTPUT
DIM A AS BYTE
A = 5+1
IF A = 5 THEN SET PORTB.0
IF A = 6 THEN SET PORTB.1
IF A = 7 THEN SET PORTB
END

در برنامه بالا ما یك خروجی تعریف كردیم . بعد یك متغییر از نوع بایت تعریف به نام A تعریف كردیم بعد اومدیم برای مقدار دهی به متغییر A از جمع دوعدد استفاده كردیم بعنی مقدار متغییر A هست 5+1 . بعد اومدیم سه تا شرط و سه تا دستور شرط گذاشتیم اولین شرطی كه گذاشتیم این بود كه اگر مقدار متغییر A شد 5 برو و دستور شرط رو كه هست SET PORTB.0 رو اجرا كن . شرط دوم اومدی گفتیم كه اگه مقدار متغییر A شد 6 برو دستور شرط رو كه هست SET PORTB.1 رو اجرا كن . شرط سوم گفتیم كه اگه مقدار متغییر A شد 7 برو و دستور شرط رو كه هست SET PORTB رو اجرا كن كه یعنی یك كردن كل هشتا پایه پورت B .

برای امروز دیگه كافیه بقیش باشه برای جلسه بعدی

http://www.panatel.org/showthread.php?p=101209

صفحات جانبی

نظرسنجی

    لطفاً نظرات خود را درمورد وبلاگ با اینجانب در میان بگذارید.(iman.sariri@yahoo.com)نتایج تاکنون15000مفید و 125غیرمفید. با سپاس


  • آخرین پستها

آمار وبلاگ

  • کل بازدید :
  • تعداد نویسندگان :
  • تعداد کل پست ها :
  • آخرین بازدید :
  • آخرین بروز رسانی :