Electrobot

وبلاگ تخصصی مدارت الکترونیک و رباتیک

Electrobot

وبلاگ تخصصی مدارت الکترونیک و رباتیک

در این وبلاگ آموزش هایی از الکترونیک و رباتیک قرار داده خواهد شد و دیتاشیت مدارات کاربردی توضیح داده میشود .

طبقه بندی موضوعی

۳ مطلب با کلمه‌ی کلیدی «بسکام» ثبت شده است

۰۷ بهمن۱۸:۵۴

جلسه هشتم

1-
سلام خوبی
2-
سلام خوبم تو چطوری
1-
عالی راستی امروز چی می خای بگی
2-
امروز باید دستور حلقه و پرش رو که قبلا بهت نگفتم بهت بگم که خیلی راحت هست
1-
اماده ام بگو


2-
اولین دستور GOSUB هستش توسط این دستورشما می تونی بپری توی یک زیر برنامه و دستورات داخل اون زیربرنامه رو انجام بدی دقیقا همان کاری که دستور GOTO برای ما انجام می داد این دستور GOSUB هم برای ما انجام می ده با یک تفاوت و اون هم اینکه در دستور GOSUB ما با دستور RETURN می توانیم دوباره برگردیم GOSUB رو بخونیم کاری که با دستور GOTO نمی تونستیم انجام بدیم
1-
یک مثال بزن که نفهمیدم


2-
باشه اینم مثال :

کد:
CONFIG PINB.0 = INPUT
CONFIG PORTA = OUTPUT
DO
IF PINB.0 = 1 THEN GOSUB BENZ
LOOP
END
BENZ:
TOGGLE PORTA
WAITMS 50
RETURN

توسط برنامه بالا می تونیم با زدن میکرو سوییچ پورت A رو TOGGLE کنیم. یعنی برای بار اول که میکروسوییچ رو میزنیم پورت A یک می شه برای بار دوم که میزنی صفر میشه برای بار سوم که می زنی دوباره یک می شه برای بار چهارم که میزنی صفر میشه و الی اخر. در خط اول ما پایه B.0 رو به عنوان ورودی پیکره بندی کردیم . در خط دوم پورت A رو برای خروجی پیکره بندی کردیم . در خط سوم ما اول حلقه رو با نوشتن دستور DO عنوان کردیم. در خط چهارم ما نوشتیم
IF PINB.0 = 1 THEN GOSUB BENZ به معنی که اگر پایه B.0 میکروکنترلر یک شد بپر برو توی
زیربرنامه BENZ . در خط پنجم با دستور LOOP انتهای حلقه رو مشخص کردیم . در خط ششم نوشتیم END که برنامه ما هیچ وقت به اینجا نمی رسه . در خط بعدی ما یک زیربرنامه به اسم BENZ مشخص کردیم . خط هفتم نوشتیم TOGGLE PORTA یعنی وضعیت پورت A رو هر چی که هست معکوسش کن یعنی اگه یک هستش بکنش صفر و اگه صفر هستش بکنش یک . در خط هشتم ما یک تاخر 50 میل ثانیه ای گذاشتیم . در خط نهم نوشتیم RETURN که در ادامه بهت که توی این برنامه وضیفش چیه.
خوب میکروکنترلر میاد از خط اول برنامه شروع میکنه به خوندن خط اول خط دوم رو می خونه . به خط سوم که می رسه یعنی DO می فهمه که یک حلقه سر راهشه و توی این حلقه یکسره دور میزنه و خارج نمی شه تا وقتی که اون شرطی که گذاشتیم اجرا بشه یعنی IF PINB.0 = 1 THEN GOSUB BENZ . حالا فرض می کنیم که ما میکروسوییچ رو فشار دادیم و با این کارمون PINB.0 رو یک کردیم در اینجا میکرو میاد دستور شرط رو یعنی THEN GOSUB BENZ رو اجرا میکنه یعنی میپره می ره توی زیربرنامه BENZ و دستورات داخل این زیر برنامه رو اجرا میکنه. خوب حالا داخل این زیر برنامه ما این دستورات رو نوشتیم TOGGLE PORTA یعنی وضعیت پورت A رو هر چی که هستش معکوسش کن و در اینجا میکرو میاد پورت A رو یک میکنه و اگه شما به پورت A LED وصل کرده باشی می بینی که روشن می شه دستور بعدی که داخل این زیربرنامه هست WAITMS 50 که میکرو با خوندن این خط به مدت 50 میلی ثانیه در اجرای برنامه تاخیر ایجاد میکنه . دستور بعدی که ما داخل این زیربرنامه نوشتیم RETURN هستش که میکرو بعد از گذشت 50 میلی ثانیه که این دستور رو می خونه برمی گرده توی حلقه . و دوباره توی اون حلقه دور می زنه تا وقتی که دوباره شرط اجرا بشه و دوباره بپره بره توی زیربرنامه.
برنامه بالا رو اینطوری هم میشه نوشت که این روش منطقی تره :
3-

 

 

کد:
CONFIG PINB.0 = INPUT
CONFIG PORTA = OUTPUT
DO
DEBOUNCE PINB.0 , 1 , BENZ , SUB
LOOP
END
BENZ:
TOGGLE PORTA
RETURN

برنامه بالا رو فقط تاخیر 50 میلی ثانیه ای شو حذف کردم . برنامه بالا رو تنها تغییری که توش انجام دادم خط چهارمش هستش یعنی DEBOUNCE PINB.0 , 1 , BENZ , SUB که ما با نوشتن این خط این رو به میکرو فهمونیدم که اگر یک موقع PINB.0 ما یک شد بپر برو توی زیربرنامه BENZ . اون SUB هم نوشتیم که به میکرو بفهمونیم که ما دستور GOSUB می خایم که این پرش صورت بگیره و اگه ننویسیم میکرو خودش پیش فرض با دستور GOTO میپره توی زیربرنامه . خوب حالا فرض کن که این شرط یعنی پایه B.0 یک شده در اینجا میکرو میپره میره توی زیربرنامه BENZ و دستورات داخل این زیربرنامه رو اجرا می کنه و وقتی که به دستور RETURN میرسه مفهمه که باید بپره بره توی حلقه و خط
DEBOUNCE PINB.0 , 1 , BENZ , SUB
رو دوباره بخونه و داخل این حلقه دوباره گیر میکنه تا وقتی که پایه B.0 دوباره یک بشه و دوباره بپره بره توی زیربرنامه و روز از نو روزی از نو.

دستور بعدی حلقه FOR –NEXT هستش که با این دستور می تونی یک حلقه شمارشی ایجاد کنی اگه توجه کنی تا حالا من یک حلقه DO-LOOP بهت گفتم که یک حلقه نا محدود بود ولی این حلقه FOR-NEXT یک حلقه محدود هستش یعنی میاد توی یک حلقه ایجاد میکنه البته تایک زمان مشخصی این کار رو میکنه که این زمان دست خودمون هستش که چقدر باشه به مثال زیر توجه کن :

کد:
DIM A AS BYTE
FOR A = 1 TO 10 STEP 1
CLS
LCD A
WAITMS 30
NEXT A
END

خوب بریم سر تحلیل برنامه . خط اول که ما یک متغییر به اسم A و از نوع بایت تعریف کردیم . در خط دوم ما نوشتیم که
FOR A = 1 TO 10 STEP 2 به این معنی که متغییر A رو افزایش بده از عدد 1 تا عدد 10 . و دستور STEP 1 که نوشتیم به این معنی هستش که یکی یکی بشمار یا به عبارتی یک پله یک پله بشمار
1-
ببین نفهمیدم این STEP 1 رو دوباره توضیح بده
2-
یعنی این که یکی یکی بشمار 1 و 2 و3 و4 و5 و6 تا عدد 10 . اگه ما به جای STEP 1 می دادیم STEP 2 دو تا دوتا میشمرد اینطوری 1 و 3 و5 و7 و9
خوب بریم سر ادامه وقتی که میکرو خط FOR A = 1 TO 10 STEP 2 رو می خونه شروع می کنه به افزایش متغییر A . بعد میاد خط بعدی که نوشته CLS رو می خونه و در این جا LCD رو پاک میکنه . بعد میاد خط LCD A رو میخونه و می فهمه که باید مقداری که داره افزایش پیدا میکنه رو نشون بده . خط بعدی نوشتیم WAITMS 30 که یک تاخیر 30 میلی ثانیه ای در اجرای برنامه انجام میده و کارش این هستش که بیاد مدت زمان افزایش رو تند یا کند کنه یا به عبارتی اهسته یا سریع کنه . خط بعدی نوشتیم NEXT A که میکرو با خوندن این خط دوباره برمیگرده و خط دوم رو یعنی خط
FOR A = 1 TO 10 STEP 2 رو می خونه . خط بعدی نوشتیم END که برنامه ما فعلا به این قسمت نمی رسه تا وقتی که شمارش تموم بشه
1-
من که چیزی نفهمیدم
2-
بزار تحلیلش کنم می فهمی
خوب حالا تحلیل برنامه : میکرو میاد از خط اول شروع میکنه به خوندن و می فهمه که ما یک متغییر به اسم a و از نوع بایت تعریف کردیم . در خط دوم که ما نوشتیم FOR A = 1 TO 10 STEP 1 میکرو میاد شروع میکنه به شمارش یا همون افزایش متغییر یک نکته رو بزار همیجا بگم که فرقی نداره که عددها چقدر باشه حتی می تونیم بگیم که از 10 شروع به شمارش کن تا مثال 110 هیچی محدودیتی وجود نداره البته حداکثر تا 255 میتونی بدی . خوب بری سر دستوری که نوشتیم . خوب بعد میکرو میاد دفعه اول خود مقدار 1 رو میزاره توی متغییر A بعد میاد با فرمان CLS ال سی دی رو پاک میکنه و با دستور LCD A میاد مقدار متغییر A رو که الان هست 1 رو روی ال سی دی نمایش می ده بعد بادستور WAITMS 30 میاد یک تاخیر 30 میلی ثانیه ای در اجرای برنامه ایجاد می کنه و در خط بعد تا که دستور NEXT A رو می خونه برمی گرده توی اون خط FOR A = 1 TO 10 STEP 1 و دوباره که این دستور رو خوند مقدار متغییر A رو یک واحد بیشتر می کنه یعنی 2 و دوباره با دستور CLS ال سی دی رو پاک می کنه و با دستور LCD A میاد مقدار متغییر A رو که الان هست 2 رو روی ال سی دی نمایش می ده . این روال همینطور ادامه داره تا این که مقدار متغییر A بشه 10 یا به عبارتی مساوی بشه با مقداری که در پایان شمارش بهش دادیم ( که در اینجا عدد 10 رو دادیم) و وقتی که این اتفاق افتاد میکرو میاد خط زیری NEXT A رو می خونه که ما در اینجا دستور END رو گذاشتیم که برنامه به پایان برسه ولی شما اگه حال کردی که شمارش دوباره اغاز بشه و دوباره بشماره می تونی قبل از دستور FOR یک زیربرنامه تعریف کنی و در بعد دستور NEXT A هم یک دستور پرش به این زیربرنامه رو بزاری که هر وقت که شمارش به پایان رسید میکرو بپره بره توی این زیربرنامه و شمارش رو از دوباره اغاز کنه مثل مثال زیر

کد:
DIM A AS BYTE
MAIN:
FOR A = 1 TO 10 STEP 1
CLS
LCD A
WAITMS 30
NEXT A
GOTO MAIN
END


دستور بعدی WHILE – WEND هستش این دستور همون کاری رو می کنه که دستور DO – LOOP انجام می داد ولی با یک تفاوت اون هم اینکه برای داخل شدن به این حلقه بی نهایت باید شرط مورد نظری که جلوی WHILE نوشته میشه اول اجرا بشه تا اجازه داخل شدن به این حلقه داده بشه . یک چیز دیگه هم که هست اینه که WHILE ابتدای حلقه هستش مثل همان DO که ابتدای حلقه بود و WEND هم انتهای حلقه مثل LOOP که انتهای حلقه بود به مثال زیر توجه کن که خیلی هم ساده هست.
1-
یک سوال فرق بین دستور WHILE – WEND با دستور DO – LOOP چی هستش
2-
در دستور DO – LOOP شما برای ورود به حلقه نیاز به اجازه نداشتی ولی توی دستور WHILE – WEND نیاز به کسب اجازه داری حالا این اجازه کی صادر میشه زمانی که شرطی رو که جلوی WHILE گذاشتیم اجرا بشه . اگه بخای به یک زبون دیگه حالیت کنم باید بگم که فرق این دوتا دستور مثل ابتدایی و دانشگاه هستش شما توی ابتدایی برای بیرون رفتن از کلاس باید از معلمتون اجازه می گرفتی ولی توی دانشگاه اجازه نمی گیری و سرتو میندازی پایین و می ری بیرون و اگه یک زمانی توی دانشگاه از استاد اجازه بگیری بقیه بهت می خندن توی میکرو هم همینطوره ممکنه که متغییرا بهت بخندن.
خوب بری یک مثال ساده هم برات بزنیم که حال کنی :

کد:
DIM K AS BYTE
K = 3
WHILE K = 3
CLS
LCD "OK"
WEND
END

خط اول ما یک متغییر به اسم K و از نوع بایت تعریف کردیم .
خط دوم به متغییر K مقدار دادیم . مقدار 3 دادیم
خط سوم با دستور WHILE ابتدای حلقه رو مشخط کردیم البته برای ورود به حلقه این حلقه یک شرط گذاشتیم که این شرط هر چیزی میتونه باشه که این شرط رو ما باید جلوی دستور WHILE با یکم فاصله بنویسیم . شرطی که نوشتیم K = 3 هستش یعنی اگر که مقدار K عدد 3 بود اجازه ورود به حلقه داده میشه .
خط چهارم که داخل حلقه قرار داره CLS هستش که می دونی چی کار می کنه
خط پنجم هم LCD "OK" هستش که این دستور هم داخل حلقه قرار داره
خط ششم WEND هسش یعنی پایان حلقه
خط هفتم هم END هستش که تا زمانی که شرط بر قرار باشه برنامه به این دستور نمی رسه
تحلیل این برنامه هم خیل ساده هسش میکرو میاد از خط اول شروع می کنه به خوندن خط اول خط دوم رو می خونه می رسه به خط سوم این جا رو گوش کن که خیلی مهمه اگه شرط برقرار بود یعنی مقدار K = 3 بود که الان هست اجازه ورود به این حلقه داده می شه ولی اگه شرط برقرار نبود میکرو میره و خط بعدی WEND رو می خونه که ما اینجا حال کردیم که اگه شرط برقرار نبود برنامه به END برسه وتموم بشه .
دستور بعدی DELAY هستش که این دستور یک دستور تاخیر در اجرای برنامه هستش همانند دستور های WAITMS – WAIT –WAITUS که دستور DELAY به مدت 1000 میکروثانیه در اجرای برنامه تاخیر ایجاد میکنه که نیاز هم به مثال نیست.
فعلا همینا رو داشته باش تا بعد .!!!

عرفان بیگی بروجنی | ۰۷ بهمن ۹۷ ، ۱۸:۵۴
۰۷ بهمن۱۸:۳۸

جلسه ششم
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 < 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 .
برای امروز دیگه کافیه بقیش باشه برای جلسه بعدی
پایان قسمت ششم

عرفان بیگی بروجنی | ۰۷ بهمن ۹۷ ، ۱۸:۳۸
۲۷ ارديبهشت۱۸:۱۵

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

1- سلام خوبی
2- سلام خوبم تو خوبی
1- اره خوبم . چکار می کنی کم پیدایی
2- اره یک چند وقتیه دارم پروژه دانشگاه رو انجام می دم
1- چی هست این پروژت
2- هیچی ساخت یک دور سنج موتور با میکروکنترلرAVR
1- چی میکروکنترلرavr ؟؟؟؟ میکرو کنترلر دیگه چیه
2- میکروکنترلر رو اگه بخام به زبون ساده بهت بگم یک کنترل کننده هستش که تقریبا هر چی ازش بخای برایت انجام میده
1- پس بگو یک رباته
2- نه منظورم هر کاری نبود ببین مثل یک کامپیوتر که بهش فرمان میدی اون هم انجام میده البته از نظر ظاهری که نگاهش کنی یک ایسی 40 پایه هستش
1- چی؟؟؟؟؟ مگه میشه یک کامپیوتر به اندازه یک ایسی چهل پایه باشه
2- نه خود کامپیوتر منظورم از کامپیوتر اینه که بهش فرمان می دی اونم انجام میده
1- بازم نفهمیدم بیشتر توضیح بده اصلا به چه دردی میخوره
2- بزار بیشتر برات توضیح بدم این یک ایسی هستش که ما به وسیله کامپیوتر برنامه نویسی می کنیم بعد برنامه رو می ریزیم توی میکرو . کاربردش هم خیلی زیاده مثلا باهاش می تونی ساعت . فرکانس متر. قفل رمز درست کنی
1- یکم بیشتر درباه خود میکرو توضیح بده
2- این میکرویی که بهت میگم یک خانواده هستش که انواع مختلفی داره که تشکیل شده از سه گروه 1-tiny 2-90s 3-mega
1- خوب فرق این سه گروه باهم چیه مثلا tiny با 90s یا با mega چه فرقی دارن
2- فرفشون توی امکاناتی که دارن هستش و همین فرق باعث شده که قیمت هاشونم باهم فرق کنه
1- منظورت از امکاناتشون چیه
2- ببین بزار بیشتر برات درباره خود میکرو توضیح بدم . از امکاناتی که این میکرو ها دارن میشه به تایمر – کانتر- تولید موج pwm – حافظه ای که اطلاعات رو توی خودش حفظ کنه – سرعت بالای انجام دستورات- I\O (یا همون ورودی خروجی خدمون) – مبدل انالوگ به دیجیتال adc – مقایسه کننده انالوگ و... . حالا که با امکاناتش اشنا شدی همینو بهت بگم که بعضی از میکرو ها توی امکاناتشون و توی مقدار حافضه با هم فرق دارن برای همین قیمتهاشونم باهم فرق میکنه
1- خوب حالا کدوم از همه امکاناتش بیشتره
2- نوع mega از همه امکاناتش بیشتر و از نظر مقدار حافضه هم از همه حافضه اش بیشتره بعد نوع 90s و در نهایت نوع tiny
1- این همه امکانات همه توی یک ایسی پس حتما باید یک صد هزار تومنی قیمتش باشه
2- نه اگه بهت بگم که بهترین نوع این میکرو که نوع mega هستش رو توی خود بازار ایران با سه هزار تومن می تونی بخری باورت نمی شه
1- چی فط سه هزار تومن اون هم بهترین نوعش اخه چطور ممکنه این همه امکانات فقط سه هزارتومن اون هم بهترین نوعش!!!!!!!!!!!!!!!!!!!!!!
2- خوب دیگه تکنولوژیه دیگه
1- راستی گفتی یکی از امکاناتش حافضه هستش بگو ببینم اصلا این حافضه به چه دردی می خوره؟؟
2- یادت میاد که بهت گفته بودم که باید به این میکرو فرمان بدیم
1- اره
2- خوب این فرمان ها رو ما با یک نرم افزار مینویسیم
1- خوب چه ربطی داره به سوال من
2- یکم صبر داشته باش . این برنامه ای که مانوشتیم توی این حالفضه قرار می گیره
1- بیشتر توضیح بده
2- حافضه میکرو avr دو تا هستش یکی حافضه بلند مدت که بهش می گن eeprom و دومی هستش حافضه کوتاه مدت که بهش می گن flash
1- خوب فرقشون باهم چیه
2- فرقشون در اینه که در حافظه کوتاه مدت با قطع تغذیه (ولتاژ) میکرو اطلاعات از بین می ره ولی در حافضه بلند مدت با قطع شدن تغذیه میکرو اطلاعات از بین نمیره
1- اها فهمیدم . خوب یادم میاد بهم گفتی که هر کاری ازش بخایم برامون انجام میده چطوری باید بهش بگیم که فلان کار رو انجام بده ؟
2- خوب بزار به صورت کلی بهت بگم که گیج نشی . ما برای کارهایی که از این میکرو می خایم باید بهش برنامه بدیم این برنامه توسط نرم افزار نوشته می شه
1- چه نرم افزاری؟
2- نرم افزارای مختلفی هستش که باهاش برای میکرو برنامه می نویسن برنامه هایی رو که من می شناسم bascom –codvision و ... هستش که من با bascom کار می کنم. خوب حالا بزار ادامه مطلب رو بگم . برنامه ای رو که ما می نویسیم زبان های مختلفی داره
1- منظورت انگلیسی یا فارسی هستش
2- نه بابا منظورم زبان های برنامه نویسی هستش که عبارتند از baisic-c –اسمبلی
1- یعنی باید همه ای زبان های برنامه نویسی رو بلد باشیم
2- نه بابا ناراحت نباش من خودم وقتی که می خاستم میکروکنترلر یاد بگیرم هیچ کدوم از این زبان ها رو یاد نداشتم . چقدر سوال می کنی منو از موضوع پرت کردی . هر کدوم از این زبان ها در یک نرم افزار خاص خودش نوشته می شه مثلا اگه دوست داشتی برنامه رو با زبان بیسیک بنویسی باید با نرم افزار baisic کار کنی اگه خاستی با زبان c برنامه بنویسی باید با نرم افزار codvision برنامه بنویسی . خوب حالا وقتی که برنامه رو نوشتی باید برنامه رو بریزی توی میکرو . حتما می خای بپرسی چطوری برنامه رو میریزن توی میکرو خوب بهت می گم با یک پروگرامر
1- چی پروگرامر دیگه چیه؟
2- نترس پروگرامر وسیله ای هستش که میکرو رو روی اون قرار میدی ویک سر دیگش وصل می شه به پرینتر کامپیوتر بعد که به کامپیوتر نصب شد از طریق نرم افزار فرمان ارسال برنامه به داخل میکرو رو میدی مثلا در نرم افزار بیسکام که بعدا مفصلا بهت توضیح میدم با زدن کلید F4 برنامه ریخته می شه داخل میکرو
1- ببین من نفهمیدم نقش این پروگرامر این وسط چیه
2- پروگرامر واسطه ای هست میان میکرو و کامپیوتر . خوب اخه مرد حسابی برنامه ای که تو برای میکرو نوشتی باید بره توی میکرو یا نه . پس از روی هوا هم که نمی شه برنامه رو فرستاد پس میان یک پروگرامر وصل می کنند به کامپیوتر و میکرو رو روی این پروگرامر قرار میدن بعد از توی کامپیوتر فرمان ارسال برنامه رو می دن
1- ببین درست فهمیدم یا نه پروگرامر تنها نقشی که داره اینه که برنامه ای که ما توی کامپیوتر نوشیتم رو بریزه توی میکروکنترلر
2- افرین
1- بازم سوال دارم
2- بگو
1- این امکاناتی رو که گفتی میکرو داره چطوری می تونیم ازش استفاده کنیم
2- این کار رو موقع برنامه نویسی بهش می گیم . مثلا می خایم از کانتر میکرو ( کانتر به معنی شمارنده ) استفاده کنیم . باید در اول برنامه بنویسیم که از کانتر می خا هیم استفاده کنیم . به این کار در اصتلاح می گویند config . البته بعدا درباره برناه نویسیش – نحوه کار با نرم افزار – اتصال سخت افزاری میکرو برای کامل توضیح می دم
1- یک مثال می تونی بزنی که کاربرد این میکرو و امکاناتش چیه؟؟؟
2- اره ولی قول بده که نترسی که برنامه شو بنویسم چون که بعدا درباره کل دستورات برنامه نویسی و نحوه کار با نرم افزار برات توضیح می دم
1- باشه
2- خوب گفتی یک مثال بزن منم یم مثال خیلی ساده میزنم . فرض کن که با دو تا میکروسوییچ می خایم یک led رو روشن خاموش کنیم . برای این کار اول باید برنامه توسط نرم افزار نوشته بشه که من در اینجا از زبان بیسیک برای نوشتن برنامه استفاده میکنم :

کد:
$regfile = "8515DEF.DAT"
$crystal = 8000000  
Config Porta = Output
Config Pinb.0 = Input
Config Pinb.1 = Input
Config Debounce = 25
Do
Debounce Pinb.0 , 1 , Sett , Sub
Debounce Pinb.0 , 1 , Resett , Sub
Loop
End

Sett:
Set Porta.0
Return
Resett:
Reset Porta.0
Return


1- خوب درباره اینا توضیح بده
2- صبر داشته باش اسیاب به نوبت گفتم که بعدا درباره تک تک دستورات و نحوه کار با نرم افزار برات توضیح می دم
1- قول می دی
2- قول می دم که تک تک دستورات رو با مثال زباد برات توضیح بدم
1- خوب حالا من چکار کنم
2- فعلا برو نرم افزار بیسکام (bascom) رو نصب کن تا بعد
1- باشه پس فعلا تا بعد

منبع: iranled.com

عرفان بیگی بروجنی | ۲۷ ارديبهشت ۹۷ ، ۱۸:۱۵