رفتن به مطلب

آموزش گام به گام برنامه نویسی میکروکنترلرهای avr به زبان بیسکام


ارسال های توصیه شده

داش Hilo میشه با زبون ساده بگی ریجستر چی هست ؟:ws38:

 

 

چرا نمیشه عزیز آریایی !

رجیستر یا ثبات به زبون ساده همون حافظه هایی هستند که وقتی میکرو شرو به کار میکنه سی پی یو میاد اطلاعات رو از ثبات ها میخونه ، به کد تبدیک میکنه و نهایتا اجرا میکنه

بزارید اینجوری بگم :

ما تو میکرو دو نوع حافظه پرکاربرد داریم

یکی eeprom

یکیشم flash

حافظه فلش خودش به قسمت های هشت بیتی تقسیم شده که هر کدوم از این هشت بیتی ها رو اصطلاحا یه ثبات یا رجیستر میگن که البته کار هر کدوم اونا مشخصه

مثلا اصطلاحا میگیم بیت اول سومین رجیستر مخصوص فعال کردن وقفه کلی میکرومونه

حالا وقتی شما برنامه مینویسی کامپایلر میاد اطلاعاتی که تو دونه دونه رجیستر ها باید قرار داده بش رو از داخل برنامت تشخیص میده و بعد آدرس رجیستر رو به همراه داده مخصوصش میفرسته که تو میکرو ذخیره بشه

مثلا تو قسمتی از برنامه نوشتی که وقفه کلی فعال بشه.کامپایلر میاد کد 00000001 رو برای مثال میفرسته تو حافظه شماره سه فلش

حالا سی پی یو میاد اونجا رو میخونه و وقفه رو فعال میکنه

امیدوارم خوب مطلبو رسونده باشم

لینک به دیدگاه
  • پاسخ 60
  • ایجاد شد
  • آخرین پاسخ

بهترین ارسال کنندگان این موضوع

بهترین ارسال کنندگان این موضوع

سلام ب همگی

من تو پروگرام کردن ی مشکلی دارم!

وقتی EEPROM میکرو Atmega 16 رو پروگرام میکنم، با خطای کمبود حجم مواجه میشم! در صورتی ک قبلا اینطور نبوده!

الان مشکل کجاست ؟

حجم فایل 3kb هست! الان یعنی EEPROM میکرو 3kb بیشتر حجم نداره ؟

 

 

wttv6sjspw5vbzu2jxbl.jpg

لینک به دیدگاه
سلام ب همگی

من تو پروگرام کردن ی مشکلی دارم!

وقتی EEPROM میکرو Atmega 16 رو پروگرام میکنم، با خطای کمبود حجم مواجه میشم! در صورتی ک قبلا اینطور نبوده!

الان مشکل کجاست ؟

حجم فایل 3kb هست! الان یعنی EEPROM میکرو 3kb بیشتر حجم نداره ؟

 

 

wttv6sjspw5vbzu2jxbl.jpg

 

سلام دوست عزیز

میکرو مگا16 دارای 16 کیلوبایت حافظه فلش و 512 بایت (نیم کیلو بایت) حاظه ای پی رام هست

.

لینک به دیدگاه
چرا نمیشه عزیز آریایی !

رجیستر یا ثبات به زبون ساده همون حافظه هایی هستند که وقتی میکرو شرو به کار میکنه سی پی یو میاد اطلاعات رو از ثبات ها میخونه ، به کد تبدیک میکنه و نهایتا اجرا میکنه

بزارید اینجوری بگم :

ما تو میکرو دو نوع حافظه پرکاربرد داریم

یکی eeprom

یکیشم flash

حافظه فلش خودش به قسمت های هشت بیتی تقسیم شده که هر کدوم از این هشت بیتی ها رو اصطلاحا یه ثبات یا رجیستر میگن که البته کار هر کدوم اونا مشخصه

مثلا اصطلاحا میگیم بیت اول سومین رجیستر مخصوص فعال کردن وقفه کلی میکرومونه

حالا وقتی شما برنامه مینویسی کامپایلر میاد اطلاعاتی که تو دونه دونه رجیستر ها باید قرار داده بش رو از داخل برنامت تشخیص میده و بعد آدرس رجیستر رو به همراه داده مخصوصش میفرسته که تو میکرو ذخیره بشه

مثلا تو قسمتی از برنامه نوشتی که وقفه کلی فعال بشه.کامپایلر میاد کد 00000001 رو برای مثال میفرسته تو حافظه شماره سه فلش

حالا سی پی یو میاد اونجا رو میخونه و وقفه رو فعال میکنه

امیدوارم خوب مطلبو رسونده باشم

 

 

مهندس دمت گرم به ذهنم تلنگر زدی اساسی .... اینو استاد برنامه نویسی ایمون ترم 2گفته بود فراموش کرده بودم ....فدایی داری باز بیا سوال زیاد داریم :ws3::icon_gol:

لینک به دیدگاه
مهندس دمت گرم به ذهنم تلنگر زدی اساسی .... اینو استاد برنامه نویسی ایمون ترم 2گفته بود فراموش کرده بودم ....فدایی داری باز بیا سوال زیاد داریم :ws3::icon_gol:

 

من دربست در خدمتم داداشی

لینک به دیدگاه
  • 2 هفته بعد...
برای پروگرم کردن از چی استفاده کنم بهتره جون پروگرمر های زیادی هستن:w16:

 

این خوبهzsp-v5?:ws38:

 

من با چند مدل پروگرامر کار کردم.هر کدوم یه جور دردسر دارن.اما از نظر من پروگرمرای شرکت ایرانی Hattel از بقیشون بهترن.هم نصبشون راحته هم استفادشون.قیمتشونم واقعا مناسبه

لینک به دیدگاه
برای پروگرم کردن از چی استفاده کنم بهتره جون پروگرمر های زیادی هستن:w16:

 

این خوبهzsp-v5?:ws38:

 

من یکی خریدم پارسال خیلی توپه همه خانواده AVR رو ساپورت میکنه واسه این شرکته که تو ایران نمایندگی داره extremeelectronics.co.in

لینک به دیدگاه

نوع پروگرمر به

کدویژن و بسکام بودن ربطی داره؟؟

:ws38:

 

نه شما با هر کامپایلری دوست داری کار کن فقط مهم اینه هگزشو بدی به میکرو دیگه:a030:

لینک به دیدگاه
  • 1 سال بعد...

سلام به همگی. دوستان من هر چقدر تلاش کردم نتونستم یه نرم افزار بیسکام رو نصب کنم . از چند تا سایت مثل SOFT98و P30 DOWNLOADنرم افزارو دانلود کردم اما نه روی ویندوز 8

نصب شد نه روی ویندوز 7:icon_pf (34)::icon_razz:

 

خیلی به این نرم افزار احتیاج دارم . خواهش میکنم اگه کسی موفق شده این برنامه رو دانلودکنه وروی ویندوز 8 نصب کنه . یه لینکی ادرسی چیزی هم به من بده .

 

تشکر فراااااوان:a030:

لینک به دیدگاه
سلام به همگی. دوستان من هر چقدر تلاش کردم نتونستم یه نرم افزار بیسکام رو نصب کنم . از چند تا سایت مثل SOFT98و P30 DOWNLOADنرم افزارو دانلود کردم اما نه روی ویندوز 8

نصب شد نه روی ویندوز 7:icon_pf (34)::icon_razz:

 

خیلی به این نرم افزار احتیاج دارم . خواهش میکنم اگه کسی موفق شده این برنامه رو دانلودکنه وروی ویندوز 8 نصب کنه . یه لینکی ادرسی چیزی هم به من بده .

 

تشکر فراااااوان:a030:

 

سوالتون رو داخل تاپیک جدید مطرح کنید بیشتر بچه ها اونجا میاند

 

آموزش مقدماتی میکروکنترلرهای avr همراه عکس + فایل برنامه و شبیه سازی +فیلم آموزشی

 

پیروز باشید:a030:

لینک به دیدگاه
1- سلام خوبي

2- سلام قربانت تو چطوري

1- خوبم . امروز چي مي خاي يادم بدي

2- اول بگو كه با اين پروتوس مشكلي نداشتي

1- اين پروتوس اوايل eror ميداد ولي رفتم مشكلم رو حل كردم

2- خوبه . امروز مي خام طرز اتصال صفحه كليد ماتريسي به ميكروكنترلر همراه با برنامه اون بهت بگم

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

LOOP

END

MASHHAD :

CLS

LCD A

DO

A = GETKBD ( )

LOOP UNTIL A = 16

GOTO MAIN

كل برنامه همين هستش البته به غير از معرفي ميكرو و انتخاب فركانس كاري كه بايد در اول برنامه نوشته بشن. خوب حالا بريم سر تحليل برنامه.

خط اول كه ما پيكره بندي كيبرد رو مشخص كرديم كه مي خاهد به پورت A متصل بشه

خط دوم ما يك متغيير تعريف كرديم كه مقدار خوانده شده از كيبرد ريخته بشه يا به عبارتي انتقال داده بشه به داخل اين متغيير

خط سوم كه يك زير برنامه تعريف كرديم

خط بعدي نوشتيم DO يعني ابتداي حلقه

خط بعد نوشتيم A = GETKBD ( ) با اين دستور مقداري كه ميكروكنترلر از كيبرد مي خونه ميريزه توي متغيير A

خط بعد نوشتيم IF A

خط بعدي نشتيم 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

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

به اين معني كه اگر 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

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 .

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

پايان قسمت ششم

 

سلام و خسته نباشید.

توی قسمت ششم یه مثال داشتیم که گفته بود اگه عدد 3 رو بزنیم ledروشن بشه و اگه عدد12 رو بزنیم ledخاموش بشه .

پرت aبرای اتصالبه میکرئ انتخاب شد و پرت bبرای led

من سوالم اینجاس که توی قسمت اول برنامه نویسی که ما پیکره بندی میکنیم میتونیم اول بنویسیم PORT A=KBD CONFIGو بعدش بنویسیم

PORT B= OUT PUT CONFIG

یعنی میگم اگه بیام جای اینا رو تغییر بدم مشکلی توی برنامه به وجود نمیاد؟؟؟:ws38::ws52:

لینک به دیدگاه
سلام و خسته نباشید.

توی قسمت ششم یه مثال داشتیم که گفته بود اگه عدد 3 رو بزنیم ledروشن بشه و اگه عدد12 رو بزنیم ledخاموش بشه .

پرت aبرای اتصالبه میکرئ انتخاب شد و پرت bبرای led

من سوالم اینجاس که توی قسمت اول برنامه نویسی که ما پیکره بندی میکنیم میتونیم اول بنویسیم PORT A=KBD CONFIGو بعدش بنویسیم

PORT B= OUT PUT CONFIG

یعنی میگم اگه بیام جای اینا رو تغییر بدم مشکلی توی برنامه به وجود نمیاد؟؟؟:ws38::ws52:

 

نه جابجایی از نظر پیکره بندی و تعریف متغیرها تغییری ایجاد نمیکنه اما در نوشتن شرط ها و مسائل دیگه چرا مهمه :a030:

لینک به دیدگاه
نه جابجایی از نظر پیکره بندی و تعریف متغیرها تغییری ایجاد نمیکنه اما در نوشتن شرط ها و مسائل دیگه چرا مهمه :a030:

 

ممنوووون:a030::icon_gol:

لینک به دیدگاه

این مثالی که الهه جون پرسیدن من برای شبیه سازی تو پروتئوس مشکل دارم ...:icon_pf (34):

اول اینکه از چه صفحه کلیدی باید استفاده بشه ؟ بعدم پایه ها چه جوری باید به میکرو وصل بشن؟؟؟

اگه راهنماییم کنید ممنون میشم ....:icon_gol:

لینک به دیدگاه
این مثالی که الهه جون پرسیدن من برای شبیه سازی تو پروتئوس مشکل دارم ...:icon_pf (34):

اول اینکه از چه صفحه کلیدی باید استفاده بشه ؟ بعدم پایه ها چه جوری باید به میکرو وصل بشن؟؟؟

اگه راهنماییم کنید ممنون میشم ....:icon_gol:

 

درود

اگه میشه این بحث رو داخل همون تاپیک جدید مطرح کنید

سعی میکنم فایل شبیه سازیش رو قرار بدم:a030:

لینک به دیدگاه

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


×
×
  • اضافه کردن...