با سلام ،
دوست عزیز شما در حال استفاده از ورژنی قدیمی از اینترنت اکسپلورر هستید ، برای اینکه مشکلات ناشی از نمایش را نداشته باشید ، لطفا اقدام به دریافت مرورگری مناسب کرده و یا از ورژن قدیمی ما استفاده نمایید.


امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
کمک برای شروع avr
#1
سلام دوستان
من می خوام کار با میکرو ها رو شروع کنم خیلی هم علاقه دارم ولی خب تازه کارم یک پروژه ساده توی پروتئوس شبیه سازی کردم برنامه رو هم توی کد ویژن نوشتم بعد با usbasp میکرو رو پروگرم کردم ولی کار نکرد کد رو نوشتم و شماتیک پروتئوس هم ضمیمه است لطفا کمک کنید.
کد:
#include <mega16.h>
#include <delay.h>
#define xtal 1000000

// Declare your global variables here
int i;
void main(void)
{
    DDRD = 0xFF;
    
while (1)
     {
     // Place your code here
        PORTC = 1;
        for(i = 1 ; i <= 128 ; i = i*2){
          PORTD = i;
          delay_ms(100);
        }
        for(i = 64 ; i > 1 ; i = i/2){
          PORTD = i;
          delay_ms(100);
        }          
     }
}


فایل‌(های) پیوست شده بندانگشتی (ها)
   
پاسخ
#2
سلام یاسر عزیز

بهت خوش آمد میگم

خیلی خوبه ادامه بده ،

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


خوب الان شما بفرمایید میخواین چی کنید ودقیقا اشکالتون کجاست تا بنده کمکتون کنم .
آدم تا چیزی رو به کسی یاد نده خودش یاد نمیگیره !
پاسخ
#3
بهنام عزیز سی اصلا سخت نیست و اگه بخوای خیلی راحت میتونی پیشرفت کنی

بعدشم شما که آخر اول باید بیای سی کار کنی *البته اگه تو برنامه هات هست که میکرو DSPIC و ARM کار کنی*پس وقتت رو بذار سر سی که تو اون پیشرفت کنی
آدم تا چیزی رو به کسی یاد نده خودش یاد نمیگیره !
پاسخ
#4
(13 بهمن 1391، 09:15 عصر)حسام مغربی نوشته است: دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
سلام یاسر عزیز

بهت خوش آمد میگم

خیلی خوبه ادامه بده ،

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


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

سلام آقا حسام
خیلی ممنون از پیگیری هاتون
در خصوص اون PORTC همین طوری جهت تست در پروتئوس نوشتم یادم رفت پاکش کنم.
ما هشت LED داریم که به PORTD0 تا PORTD7 وصل کردیم و با دو حلقه for ساده یکبار تک تک روشن می شن و باز از آخر به اول ولی با وجود پروگرم کردن و شبیه سازی میکرو کار نمیکنه:(

اگه میشه با همین زیان C و codevision توضیح بدین چون C بلدم در ضمن من دانشجوی ترم2 برقم خیلی دوست دارم زودتر وارد دنیای میکرو ها بشم ممنون میشم کمکم کنید.

(13 بهمن 1391، 11:31 عصر)behnam128ef نوشته است: دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
سلام یاسر جان
منم اوضام مثل خودته فقط با فرق اینکه من با بسکام کارم رو شروع کردمو زودتر به جواب رسیدم (البته کدویژن رو هم امتحان کردم خیلی مشکل بود بیخیالش شدم!!!) هم برنامه نویسی تو بسکام راحتتره هم برای کسایی که میخوان تازه شروع کنن پیچیدگی خاصی نداره خودمونی بگم همه چیش دم دسته.از هفته پیش من دنبال این ماجرا رو گرفتم الان پروژه تشخیص گاز که تو سایت گذاشته شده رو ساختم (البته با هزار بدبختی) و تونستم یک موتور dc رو به صورت چپ گرد و راستگرد کنترل کنم که خیلی باحال بود و دیگه اینکه میکروکنترلر جون میده واسه رقص نور یعنی شما با شاید 10 خط برنامه نویسی ساده میتونی یه رقص نور توووپ بسازی.
با تشکر
افتخاری.

سلام آقا بهنام خوشبحالتون موفق شدین , من با C کار میکنم چون توی C تقربیا کار کردم و حرفه ای ام .
موفق باشید.
پاسخ
#5
با سلام خدمت شما yaser1373 گرامی و کسب رخصت از حسام عزیز :

دو تا سؤال از شما دارم :

1 - آیا توی پروتئوس جواب داده ؟

2 - چرا برای این کار از شیفت به چپ و راست استفاده نکردید ! ؟
پاسخ
#6
خواهش میکنم وحید جان

شما چنتا راه داری برای نوشتن این برنامه

1- اینکه کدهات رو بریزی توی آرایه و با ی حلقه ساده توی آرایه حرکت کنی و مقدار اون آرایه رو بریزی روی پورت

2-با دستورات شیفت به چپ و شیفت به راست متغیرت روشیفت بدی و بریزی روی پورت

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

زمانی که شما ضربدر 2 میکنید دارید شیفت به چپ میدید و زمانی که شما تقسیم بر 2 میکنیددارید شیفت به راست میدید

درضمن چون شما برای حلقه دومی نوشتید 64 که 1 بیت روشن نشده باقی میمونه
آدم تا چیزی رو به کسی یاد نده خودش یاد نمیگیره !
پاسخ
#7
من فکر میکنم توی حلقهء اول چون 128 رو هم شامل میشه ( 128=>i ) بنابراین نباید مشکلی وجود داشته باشه و تا آخر میره . اما تو حلقهء دوم که از 64 شروع میشه ، خود 64 رو رد میکنه و روشنش نمیکنه و همینطور دیگه شامل اولین LED‌ هم نمیشه .

در ضمن ، یه راه دیگه هم داره و اینکه بیاد واسهء حلقهء اول از حاصل عدد 2 به توان n استفاده کنه و بذارش توی پورت و موقع برگشت هم ازش جذر بگیره . ( n هم یک عدد از 0 تا 7 باشه )
پاسخ
#8
(14 بهمن 1391، 02:17 صبح)Pixar نوشته است: دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
با سلام خدمت شما yaser1373 گرامی و کسب رخصت از حسام عزیز :

دو تا سؤال از شما دارم :

1 - آیا توی پروتئوس جواب داده ؟

2 - چرا برای این کار از شیفت به چپ و راست استفاده نکردید ! ؟

بله با همین برنامه توی پروتئوس جواب داد ولی عملی جواب نگرفتم.

(14 بهمن 1391، 02:37 صبح)حسام مغربی نوشته است: دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
خواهش میکنم وحید جان

شما چنتا راه داری برای نوشتن این برنامه

1- اینکه کدهات رو بریزی توی آرایه و با ی حلقه ساده توی آرایه حرکت کنی و مقدار اون آرایه رو بریزی روی پورت

2-با دستورات شیفت به چپ و شیفت به راست متغیرت روشیفت بدی و بریزی روی پورت

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

زمانی که شما ضربدر 2 میکنید دارید شیفت به چپ میدید و زمانی که شما تقسیم بر 2 میکنیددارید شیفت به راست میدید

درضمن چون شما برای حلقه اولی نوشتید 128 تا یکی به آخری حرکت مکنه *آخری روشن نمیشه *وبرای حلقه دومی هم نوشتید 64 که برای اونم 2 تاش روشن نشده باقی میمونه

توی برنامه فک نمی کنم مشکلی باشه فک کنم در ریزه کاری ها و اجرا باشه.
پاسخ
#9
(14 بهمن 1391، 04:16 عصر)yaser1373 نوشته است: دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
توی برنامه فک نمی کنم مشکلی باشه فک کنم در ریزه کاری ها و اجرا باشه.


سلام یاسر عزیز :


این برنامه ، جزء ساده ترین و ابتدایی ترین مثالهایی هستش که میشه برای برنامه نویسی نوشت و هیچ پیچیدگی خاصی هم نداره . شما 1 یا 2 تا عکس باکیفیت از فیبر یا برد- بورد که مدارو روی اون بستید قرار بدید تا ببینیم جریان چیه که کار نمیکنه ...
پاسخ
#10
نقل قول: توی برنامه فک نمی کنم مشکلی باشه فک کنم در ریزه کاری ها و اجرا باشه.

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


بعدشم اصلا احتیاجی نیست شما متغیر 16 بیتی تعریف کنید چون هرپورت 8 بیته و یک متغیر 8 بیت کفایت میکنه .

با همون مدار آی سیت رو عوض کن اگه جواب نداد شک نکن مدارت رو اشتباه بستی حالا یا سخت افزارت مورد داره یا شایدم درست پروگرام نکردی

مرس وحید عزیز منظور منم همون 64 بود که یک بیت رو روشن نمیکنه حواسم نبود به جای که برای دومی بنویسم برای اولی نوشتم

از بس که هی پنجره باز میکنم میخوای صدتا کار رو باهم انجام بدم !حالا این که چیزی نیست تاحالا چندبار شده پست هارو جابجا فرستادم !!!
آدم تا چیزی رو به کسی یاد نده خودش یاد نمیگیره !
پاسخ
مشترک شدن در این موضوع


پرش به انجمن:

کاربرانِ درحال بازدید از این موضوع: 1 مهمان

انتخاب پوسته :

دسترسی سریع
درباره ما
انجمن سرزمین الکترونیک در 20 شهریور 91 تاسیس شده ، که همیشه سعی کرده با ظاهری متفاوت و سرعتی خوب رضایت کاربران را جلب کند ، امیدواریم توانسته باشیم گامی کوچک در پیشرفت فناوری در ایران برداشته باشیم...
نیرو گرفته از MyBB 1.8.6 با فارسی سازی مای بی بی ایران - طراحی شده در : ملت دیزاین
© تمامی حقوق برای انجمن سرزمین الکترونیک محفوظ می باشد .

پوسته‌ی انجمن: