اطلاعیه

Collapse
No announcement yet.

سرگردان در pic (مشکل در i/o )

Collapse
این موضوع بسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    سرگردان در pic (مشکل در i/o )

    با سلام خدمت بچه های تالار pic
    من تازه از avr به pic مهاجرت کرده ام وکار خودم را با کامپایلر ccs شروع کردم.اما هر کاری که می کنم یک چشمک زن ساده که با یک button کنترل کنم نمی شه :angry: :angry: اصلا گیج شده ام.
    1-من قبلا با سی avr کار میکردم وکمی با سی اشنا هستم .در این چندروز مهاجرت من به pic فهمیدم که 0در یعنی خروجی و 1 یعنی ورودی اما وقتی بادستور;(set_tris_a(0x00 پورت a را برای خروجی پیکره بندی میکنم led ها روشن میشود بدون اینکه از دستور ;(output-high(PIN_a0 استفاده کنم .
    2-بزرگترین مشکل دیگر در کلید است(در avr پورتی که ورودی تعریف میشد وان را pullups میکردیم نیاز بود باgnd تحریک شود)که اصلا نتوانستم کلید را راه بندازم اصلا می خواهم بدونم input در pic چطوری ؟؟در ضمن من برای کلید از دستور;(if(input(PIN_B0)==0 استفاده کردم.
    3-دستورات پرکاربرد i/0 در pic چیست؟
    برنامه:
    #include <16f84.h> //micro name
    #use delay(Clock=20000000) // oscillator frequency

    void main()
    {
    set_tris_a(0x00); //set port b as outputs
    set_tris_b(0xfdf);
    port_b_pullups(TRUE);

    if(input(PIN_B0)==0){
    while(true)
    {
    delay_ms(10); //wait 1
    output_high(PIN_A0); //set portb.0 ( turn on led)
    delay_ms(10); //wait 1
    output_low(PIN_A0) ; //reset portb.0 ( turn off led)
    }
    }
    }
    یا اباصالح المهدی ادرکنی

    #2
    پاسخ : سرگردان در pic (مشکل در i/o )

    سلام
    خوش اومیدید!
    در خط 5 ام برنامه عبارت 0xFDF دیگه چه صیغه ایه؟ شما میتونید بنویسید 0xFF تا هر 8تا پایه PORTB ورودی تعریف بشه.
    در طول برنامه هم شما بین روشن و خاموش شدن LED فقط یک تأخیر زمانی 10 میلی ثانیه ای گذاشتید، خوب فدات شم معلومه که چشم انسان نمیتونه اینقدر سریع باشه! DELAY های برنامه رو بکن 500
    و در نهایت با یک پورت دیگه به غیر از PORTA امتحان کن ببین جواب میده؟ اگه کار کرد بیا تا بهت بگم چرا با portA نتونستی جواب بگیری!

    دیدگاه


      #3
      پاسخ : سرگردان در pic (مشکل در i/o )

      نشد بازم(if(input(PIN_B0)==0 اثری ندارد و تو شبیه سازی پروتئوسbutton تاثیری تو مدار ندارد.
      یا اباصالح المهدی ادرکنی

      دیدگاه


        #4
        پاسخ : سرگردان در pic (مشکل در i/o )

        این عبارت : if(input(PIN_B0)==0) رو داخل حلقه بینهایت بذار و برنامه رو داخل بدنه if بنویس.
        بگذارعشق خاصیت تو باشد نه رابطه خاص تو باکسی
        موفقيت پيش رفتن است نه به نقطه ي پايان رسيدن
        نلسون ماندلا

        دیدگاه


          #5
          پاسخ : سرگردان در pic (مشکل در i/o )

          سلام دوست عزیز
          من هم آشنایی شما رو با یک میکرو جدید تبریک میگم .
          به غیر از مطالبی که محمد جان بهش اشاره کردند موضوع دیگه ای توجه من رو جلب کرد oo: :

          با کمی دقت در ترتیب خطوط برنامه مشاهده میکنیم که شرط if که شما نوشتید قبل از حلقه while که تا بی نهایت ادامه داره قرار گرفته .
          اتفاقی که در عمل می افته اینه که میکرو کنترلر با سرعتی حدود 20 پیکو ثانیه(کلاک داخلی 5مگاهرتز هست یعنی یک چهارم اوسیلاتور و عکس اون مدت زمان یک ماشین سیکل هست) شروع به اجرای خط به خط برنامه میکنه ،طبق برنامه پس از پیکربندی پورت a و b با همون سرعت شرط if شما رو بررسی میکنه که مطمئنا شما با قوانین طبیعی که بر کره ما حاکم هست پس از شروع شبیه سازی و یا در واقعیت پس از وصل تغذیه نتوانستید دستتون رو به کلید ها برسونید و این شرط اصطلاحا false میشه و میکرو کنترلر این فرمان رو با تمامی خطوط درونش نادیده گرفته و به انتهای برنامه میرسه و دوباره به خط شروع یعنی ابتدای تابع main می رسه. :read:

          در این مورد به نظر میرسه شما اگر جای فرمان while رو با شرط if و متعلقاتش عوض کنید مشکلتون باید حل بشه .

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

          در ضمن اگر به رجیستر پورت مورد نظرتون مقدار اولیه بدید (دقیقا بعد از پیکربندی به عنوان خروجی تائین کنید کدام بیتها باید در شروع کار صفر و کدامها باید یکمنطقی باشند) پیش از اجرای برنامه روشن نخواهند شد.

          در پایان به شما دوست عزیز صمیمانه پیشنهاد میکنم برای ادامه کار با هر سیستم جدیدی کار های بزرگ رو به مراحل کوچکتری تقسیم کنید و هر پروژه رو جزء به جزء آزماش کنید
          به طور مثال برای همین پروژه اول یک چشمک زن و سپس روشن کردن یک LED بر اساس وضعیت کلید و در آخر خواسته نهاییتون رو اجرا کنید.

          باور کنید این روش تا پیچیده ترین مراحل در آینده در موردهر میکرویی شما رو یاری خواهد کرد. :rolleyes:

          موفق باشی دوست من :job:
          موفقیت یک فرایند است نه یک اتفاق...

          ******** استفاده از گزينه تشكر نشانه اهميت و احترام شما به پيگيري شخص نظر دهنده است ********

          دیدگاه


            #6
            پاسخ : سرگردان در pic (مشکل در i/o )

            ممنون از دوستان عزیز مشکلم حل شد.
            :wow: :wow: :wow: @};- @};- @};-
            یا اباصالح المهدی ادرکنی

            دیدگاه

            لطفا صبر کنید...
            X