اطلاعیه

Collapse
No announcement yet.

کمک در نوشتن یک برنامه با بسکام

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    کمک در نوشتن یک برنامه با بسکام

    سلام خدمت تمامی عزیزان
    دوستان من تازه با بسکام اشنا شدم در حال نوشتن یک برنامه هستم اما یه جا این برنامه گیر کردم
    برنامه که می نویسم به این شکل
    اول: هشت LEDروشن باشد
    دوم:با 1 کردن هر یک از هشت کیلد برنامه مربوط به آن اجرا شود
    سوم :وقتی دیگر کلید ها1 میشود برنامه آن ها به برنامه قبلی اضافه شود
    چهارم :با 0 کردن همه کلید ها 8 LEDدوباره روشن بماند
    مشکل من این که زمانی کلید PIND.0=0 ال ای دی ها باشد هشت روشن بشه نمیشه
    ممنون از همه دوستان
    کد:
    $regfile = "m32def.dat"
    $crystal = 8000000
    Config Portb = Output
    Config Portd = Input
    Dim I As Byte
    M:
    Do
      If Pind.0 = 1 Then Goto K
    Portb = &B11111111
    Portb = &B11111111
    Loop
    K:
    Do
    If Pind.0 = 1 Then
     Portb = &B11111111
     For I = 1 To 5
    Waitms 10
    Next I
    Portb = &B00000000
    For I = 1 To 5
    Waitms 10
    Next I
           End If
        If Pind.1 = 1 Then Goto H
     Loop
    H:
         Do
    For I = 1 To 5
    If Pind.1 = 1 Then
    Portb = &B11111111
    Waitms 100
    Portb = &B00000000
    Waitms 100
    Next I
    End If
    For I = 1 To 5
    If Pind.1 = 1 Then
    Portb = &B11110000
    Waitms 100
    Portb = &B00001111
    Waitms 100
    Next I
    End If
     If Pind.0 = 0 Or Pind.1 = 0 Then Goto M
    LOOP

    #2
    پاسخ : کمک در نوشتن یک برنامه با بسکام

    سلام
    بهرته که برنامه ت رو بصورت زیر بنویسی
    1- از دستور goto اصلا استفاده ننکن زیرا باعث سردرگمی توسط خودت می شه و بیشتر مواقع مشکلات از اون شروع می شه
    2- وقتی برنامه داخل حلقه do loop می افته دیگه از اون خارج نمی شه مگر با دستورات وقفه و goto

    مفهوم این جمله ت چیه ؟
    وقتی دیگر کلید ها1 میشود برنامه آن ها به برنامه قبلی اضافه شود
    اگه مردم می دونستن زمان چقدر با ارزشه دیگه هیچ وقت کفش بند دار نمی خریدن البرت انیشتن

    دیدگاه


      #3
      پاسخ : کمک در نوشتن یک برنامه با بسکام

      نوشته اصلی توسط S_B_T نمایش پست ها
      سلام
      بهرته که برنامه ت رو بصورت زیر بنویسی
      1- از دستور goto اصلا استفاده ننکن زیرا باعث سردرگمی توسط خودت می شه و بیشتر مواقع مشکلات از اون شروع می شه
      2- وقتی برنامه داخل حلقه do loop می افته دیگه از اون خارج نمی شه مگر با دستورات وقفه و goto

      مفهوم این جمله ت چیه ؟
      وقتی دیگر کلید ها1 میشود برنامه آن ها به برنامه قبلی اضافه شود
      سلام
      وقتی دیگر کلید ها1 میشود برنامه آن ها به برنامه قبلی اضافه شود : یعنی زمانی که کلید اول میزنم هشت LEDخاموش روشن میشه کلید دوم که زدم هشت LEDخاموش روشن بشه بعد از یه تکرار مثلا 20باز تکرار هشت عدد LEDیکی درمیان روشن بشه و زمانه کی کلید سوم زدم مثلا چهارتا LEDخاموش و روشن بشه و اون دوتا افکتم به این اضافه بشه تا اخر

      به نظر شما چجوری بنویس خوب جواب میده
      ممنون

      دیدگاه


        #4
        پاسخ : کمک در نوشتن یک برنامه با بسکام

        شما باید با debounce کلید های ورودی رو بخونید . و از اونجا پرش به تابع مورد نظری که میخوایید انجام بشه. و در توابع مربوطه بیاید کدهای خودتون رو بنویسید.

        شما اگه تازه کار هستید باید بخش بخش یاد بگیرید نه اینکه از اول یه سری کد زیادی رو بخوایید بنویسید. مثلا بیاید اول به خواسته اولتون برسید و وقتی که جواب گرفتید برید سمت خواسته دوم و اونو به کدتون اضافه کنید. و سعی کنید مفهوم توابع و فراخانی اونها رو بفهمید. با سرچ در اینترنت به اطلاعات خوبی دست پیدا خواهید کرد.و اگه مشکلی داشتید اینجا اعلام کنید تا به جواب برسید و راهنمایی بشین.این که کد کامل رو بخوایید براتون بنویسن یکم وقت گیره.

        موفق باشید.
        به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
        (پيش به سوي هدف)

        دیدگاه


          #5
          پاسخ : کمک در نوشتن یک برنامه با بسکام

          مشکل اینه که برنامه قبلی رو نمی دونی چیه
          راه حل مفدی :
          روی کاغذ برای خودت کاربرد تک تک کلید ها رو داشته باش
          مثلا کلید 1 = همه چراغ ها رو شن
          کلید 2 : 4 تا چراغ روشن
          کلید 3 : ....
          برای بقیه این خیلی مفهوم تره



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

          دیدگاه


            #6
            پاسخ : کمک در نوشتن یک برنامه با بسکام

            نوشته اصلی توسط hosseinam نمایش پست ها
            شما باید با debounce کلید های ورودی رو بخونید . و از اونجا پرش به تابع مورد نظری که میخوایید انجام بشه. و در توابع مربوطه بیاید کدهای خودتون رو بنویسید.

            شما اگه تازه کار هستید باید بخش بخش یاد بگیرید نه اینکه از اول یه سری کد زیادی رو بخوایید بنویسید. مثلا بیاید اول به خواسته اولتون برسید و وقتی که جواب گرفتید برید سمت خواسته دوم و اونو به کدتون اضافه کنید. و سعی کنید مفهوم توابع و فراخانی اونها رو بفهمید. با سرچ در اینترنت به اطلاعات خوبی دست پیدا خواهید کرد.و اگه مشکلی داشتید اینجا اعلام کنید تا به جواب برسید و راهنمایی بشین.این که کد کامل رو بخوایید براتون بنویسن یکم وقت گیره.

            موفق باشید.
            سلام ممنون برنامه با راهنمایی شما دوست عزیز نوشتم و الان کار میکن اما یه مشکل هست زمان که برنامه در پروتئوس اجرا میکن قشنگ کار میکن اما زمانی که برنامه که قطع میکنم ledها یکشون خاموش میشه اما سه تا از ledخاموش نمیشه و روشن هست مشکل از کجاست
            یدون سوال دیگم داشتم آیا میشود کلید بدون وصل کردن به مقاومت و زمین برنامه رو اجرا کرد ؟
            یا از یک مقاومت و زمین برای هر سه کلید استفاده کرد؟






            جدیدترین ویرایش توسط HaMeD.HP; ۱۲:۱۵ ۱۳۹۷/۰۴/۳۱.

            دیدگاه


              #7
              پاسخ : کمک در نوشتن یک برنامه با بسکام

              نوشته اصلی توسط HaMeD.HP نمایش پست ها
              سلام ممنون برنامه با راهنمایی شما دوست عزیز نوشتم و الان کار میکن اما یه مشکل هست زمان که برنامه در پروتئوس اجرا میکن قشنگ کار میکن اما زمانی که برنامه که قطع میکنم ledها یکشون خاموش میشه اما سه تا از ledخاموش نمیشه و روشن هست مشکل از کجاست
              یدون سوال دیگم داشتم آیا میشود کلید بدون وصل کردن به مقاومت و زمین برنامه رو اجرا کرد ؟
              یا از یک مقاومت و زمین برای هر سه کلید استفاده کرد؟






              سلام دوست عزیز
              اگر بعد از استپ کردن شبیه سازی led ها روشن میمونن، احتمالا مشکل از پروتئوسه و برنامتون بدون ایراده.
              در مورد سوال دومتون هم باید بگم که بهتره از مقاومت pull up یا pull down استفاده بشه. اگر از مقاومت هایی که گفتم استفاده نکنید، در عمل به اصطلاح پین شناور میمونه و احتمال خطا وجود داره. میتونید جای مقاومت pull down خارجی، از مقاومت pull up داخلی استفاده کنید و کلید ها رو به جای vcc به زمین وصل کنید.
              در مورد سوال سومتون هم باید بگم که خیر؛ متاسفانه نمیشه برای 3 کلید از یک مقاومت استفاده کرد

              دیدگاه


                #8
                پاسخ : کمک در نوشتن یک برنامه با بسکام

                نوشته اصلی توسط hossein.m98 نمایش پست ها
                سلام دوست عزیز
                اگر بعد از استپ کردن شبیه سازی led ها روشن میمونن، احتمالا مشکل از پروتئوسه و برنامتون بدون ایراده.
                در مورد سوال دومتون هم باید بگم که بهتره از مقاومت pull up یا pull down استفاده بشه. اگر از مقاومت هایی که گفتم استفاده نکنید، در عمل به اصطلاح پین شناور میمونه و احتمال خطا وجود داره. میتونید جای مقاومت pull down خارجی، از مقاومت pull up داخلی استفاده کنید و کلید ها رو به جای vcc به زمین وصل کنید.
                در مورد سوال سومتون هم باید بگم که خیر؛ متاسفانه نمیشه برای 3 کلید از یک مقاومت استفاده کرد
                ممنون از راهنمایی شما دوست عزیز میشه لطفا بگید چطور وصل کنم اگه یه عکس بذارید ممنون میشم

                دیدگاه


                  #9
                  پاسخ : کمک در نوشتن یک برنامه با بسکام

                  نوشته اصلی توسط HaMeD.HP نمایش پست ها
                  ممنون از راهنمایی شما دوست عزیز میشه لطفا بگید چطور وصل کنم اگه یه عکس بذارید ممنون میشم
                  بستن مقاومت pull up و pull down مثل عکس زیره:
                  داخل عکس PA.0 با یک مقاومت به VCC و کلید هم به زمین وصل شده؛ به این مدار میگن pull up. بر عکس این مدار میشه مقاومت و کلید متصل شده به PB.0 که بهش میگم pull down. البته همونطور که قبلا هم گفتم، مقاومت pull up رو خود میکروکنترولر avr به صورت داخلی داره و با تنظیم رجیستر PORTx میشه فعالش کرد.

                  دیدگاه


                    #10
                    پاسخ : کمک در نوشتن یک برنامه با بسکام

                    سلام خدمت تمامی عزیزان دوستان برنامه که نوشتم درست کار میکنه اما یه قسمت کار مشکل داره اونم
                    من یه برنامه نوشتم که حالت اول زمانی که کلید وصل میکنم شروع کن به چشمک زدن و زمانی که قطع کردم ال ای دی ها ثابت روشن بمون درست کار میکنه ( در یک حالت داره درست کار میکنه )
                    اما مشکل از اینجا شروع میشه که یک حالت به حالت قبلی اضاف میکنم اما ال ای دی ها بلافاصله بعد از قطع کردن کلید ثابت نمیشن یعنی با اون تعدادیfor که برای چشمک زدن مشخص شده رو انجام بدن بعد ثابت بشن اما من اینو نمیخوام میخوام بلافاصله بعد از قطع کردن کلید ثابت بشه
                    ممنون

                    این
                    کد:
                    $regfile = "m8def.dat"
                    $crystal = 8000000
                    
                    Config Portb = Output
                    Config Portc = Input
                    
                    Dim I As Byte
                    Do
                    If Pinc.0 = 0 Then Gosub On_led
                    If Pinc.0 = 1 Then Gosub On_led1
                    loop
                    On_led:
                    Portb = &B11111111
                    Portb = &B11111111
                    Return
                    On_led1:
                    For I = 1 To 10
                    Portb = &B11111111
                    Waitms 10
                    Portb = &B00000000
                    Waitms 10
                    Next I
                     For I = 1 To 10
                     Portb = &B10010011
                    Waitms 100
                    Portb = &B00000000
                    Waitms 100
                    Next I
                    Return
                    جدیدترین ویرایش توسط HaMeD.HP; ۱۲:۵۹ ۱۳۹۷/۰۵/۰۷.

                    دیدگاه


                      #11
                      پاسخ : کمک در نوشتن یک برنامه با بسکام

                      نوشته اصلی توسط HaMeD.HP نمایش پست ها
                      سلام خدمت تمامی عزیزان
                      دوستان من تازه با بسکام اشنا شدم در حال نوشتن یک برنامه هستم اما یه جا این برنامه گیر کردم
                      برنامه که می نویسم به این شکل
                      اول: هشت LEDروشن باشد
                      دوم:با 1 کردن هر یک از هشت کیلد برنامه مربوط به آن اجرا شود
                      سوم :وقتی دیگر کلید ها1 میشود برنامه آن ها به برنامه قبلی اضافه شود
                      چهارم :با 0 کردن همه کلید ها 8 LEDدوباره روشن بماند
                      مشکل من این که زمانی کلید PIND.0=0 ال ای دی ها باشد هشت روشن بشه نمیشه
                      ممنون از همه دوستان
                      کد:
                      $regfile = "m32def.dat"
                      $crystal = 8000000
                      Config Portb = Output
                      Config Portd = Input
                      Dim I As Byte
                      M:
                      Do
                        If Pind.0 = 1 Then Goto K
                      Portb = &B11111111
                      Portb = &B11111111
                      Loop
                      K:
                      Do
                      If Pind.0 = 1 Then
                       Portb = &B11111111
                       For I = 1 To 5
                      Waitms 10
                      Next I
                      Portb = &B00000000
                      For I = 1 To 5
                      Waitms 10
                      Next I
                             End If
                          If Pind.1 = 1 Then Goto H
                       Loop
                      H:
                           Do
                      For I = 1 To 5
                      If Pind.1 = 1 Then
                      Portb = &B11111111
                      Waitms 100
                      Portb = &B00000000
                      Waitms 100
                      Next I
                      End If
                      For I = 1 To 5
                      If Pind.1 = 1 Then
                      Portb = &B11110000
                      Waitms 100
                      Portb = &B00001111
                      Waitms 100
                      Next I
                      End If
                       If Pind.0 = 0 Or Pind.1 = 0 Then Goto M
                      LOOP

                      سلام
                      ببین.. خودتو گیج نکن
                      بهترین کار اینه :
                      این 1 و 2 و 3 که نوشتی رو به "اگر" تبدیل کن ... مثلا "اگر کلید 1 روشن شد..."
                      حالا باید هر افکتی که مینویسی به یه تابع تبدیل کنی ... 10 تا افکت = 10 تابع
                      بعد بویسله همون "اگر ها" برنامه رو با if بنویس و به هر تابع که میخوای رجوع بده
                      اینجوری چون تازه با بسکام آشنا شدی چند تا تکنیک هم یاد میگیری...
                      اما ای کاش رفته بودی سراغ C ...
                      ! Life doesn't get easier , you just get stronger

                      دیدگاه

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