اطلاعیه

Collapse
No announcement yet.

خارج نشدن از حلقه for

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

    #16
    پاسخ : خارج نشدن از حلقه for

    نوشته اصلی توسط hossein.m98 نمایش پست ها
    امیدوارم کارتون با این راه بیوفته:

    int main (void)
    {
    DDRB = (1<<2);
    unsigned char check = 1;

    #define OutPut PORTB.2
    #define InPut_0 PINB.0
    #define InPut_1 PINB.1

    while (1)
    {
    if ((InPut_0) && (check))
    {
    delay_ms(50);
    if (InPut_0)
    {
    OutPut = 1;
    delay_ms(5000);
    check = 0;
    }
    }
    else if ((!InPut_0) && (!check))
    {
    delay_ms(50);
    if (!InPut_0)
    {
    check = 1;
    }
    }

    if (InPut_1)
    {
    delay_ms(50);
    while (InPut_1)
    {
    OutPut = ~OutPut;
    delay_ms(1000);
    }
    OutPut = 0;
    }

    }
    }

    شما میتونید پین کلید ها و خروجی رو خیلی راحت با تغییر دستورات مقابل define تغییر بدید.
    منطق برنامه هم به این شکله که اگر کاربر کلید اول رو روشن کنه، خروجی 5 ثانیه روشن میشه؛ بعد از پنج ثانیه خروجی خاموش شده و تا کاربر کلید رو یکبار قطع و وصل نکنه، عملکرد مربوط به کلید اول دوباره اجرا نمیشه. کلید دوم هم تا وقتی وصله خروجی یک ثانیه به یک ثانیه روشن و خاموش میشه و تا این کلید قطع نشه، به کلید اول دسترسی نداریم.
    ضمنا باز هم تاکید میکنم، مقاومت پول داون فراموش نشه. اگر بخوایید میتونید مقاومت پول آپ داخلی رو فعال کرد که در اون صورت باید سر دوم کلیدها رو به زمین وصل کرد و برنامه هم باید کمی تغییر داده بشه.
    تست کردم درست کار نمیکنه .
    میتونید تو کدویژن بنویسید و فایلشو بفرستید برام ؟
    چون فکر کنم یا من جایی اشتباه میکنم تو کد نویسیش .

    دیدگاه


      #17
      پاسخ : خارج نشدن از حلقه for

      من الان کلی مشکل اصلیم فقط با کلید 1 هست .
      کلید دوم که خروجی 1ثانیه 1ثانیه روشن میکنه . مشکلی نداره و کار میکنه درست .(فقط یه مشکل کوچیک داره که بعدا میگم )

      ولی کلید یک .
      منطق کلید 1 :
      کلید دائم کار هست . ( کلید راکر)
      وقتی فعالش میکنیم خروجیمون باید فعال بشه و بعد از 5 ثانیه غیرفعال بشه و غیر فعال بمونه تا زمانی که دوباره کلید دومو قطع و وصل میکنیم .

      مشکل الان اینجاس که کلید 1 فعال میکنم . خروجی فعال میشه بعد از 5ثانیه هم غیر فعال میشه ولی دوباره خودش فعال میشه .


      منطق برنامه یه بار دیگه مینویسم :
      ورودی : K1 – K2
      خروجی : L1
      منطق برنامه :
      1: اگر K1 فعال شد . خروجی L1 فعال شود و بعد از 5 ثانیه غیر فعال شده و تا زمان دوباره فعال شدن K1 خروجی مجددا فعال نشود.
      2: اگر K2 فعال شد . خروجی L1 به صورت 1ثانیه روشن – 1ثانیه خاموش کار کند .
      (نکته : هرموقع ورودی غیر فعال کردیم خروجی نیز غیر فعال شود .)
      جدیدترین ویرایش توسط erfan-messi; ۱۳:۳۹ ۱۳۹۷/۰۹/۲۳.

      دیدگاه


        #18
        پاسخ : خارج نشدن از حلقه for

        نوشته اصلی توسط erfan-messi نمایش پست ها
        من الان کلی مشکل اصلیم فقط با کلید 1 هست .
        کلید دوم که خروجی 1ثانیه 1ثانیه روشن میکنه . مشکلی نداره و کار میکنه درست .(فقط یه مشکل کوچیک داره که بعدا میگم )

        ولی کلید یک .
        منطق کلید 1 :
        کلید دائم کار هست . ( کلید راکر)
        وقتی فعالش میکنیم خروجیمون باید فعال بشه و بعد از 5 ثانیه غیرفعال بشه و غیر فعال بمونه تا زمانی که دوباره کلید دومو قطع و وصل میکنیم .

        مشکل الان اینجاس که کلید 1 فعال میکنم . خروجی فعال میشه بعد از 5ثانیه هم غیر فعال میشه ولی دوباره خودش فعال میشه .


        منطق برنامه یه بار دیگه مینویسم :
        ورودی : K1 – K2
        خروجی : L1
        منطق برنامه :
        1: اگر K1 فعال شد . خروجی L1 فعال شود و بعد از 5 ثانیه غیر فعال شده و تا زمان دوباره فعال شدن K1 خروجی مجددا فعال نشود.
        2: اگر K2 فعال شد . خروجی L1 به صورت 1ثانیه روشن – 1ثانیه خاموش کار کند .
        (نکته : هرموقع ورودی غیر فعال کردیم خروجی نیز غیر فعال شود .)
        سلام دوباره
        ببخشید من دیشب کمی سرم شلوغ بود بخاطر همین یکی دو مورد رو اشتباه نوشتم! کد رو اصلاح کردم و در پروتئوس تست گرفتم. حداقل اونجا که ظاهرا مشکلی نبود!

        int main (void)
        {
        DDRB = (1<<2);
        unsigned char check = 1;

        #define OutPut PORTB.2
        #define InPut_0 PINB.0
        #define InPut_1 PINB.1

        while (1)
        {
        if ((InPut_0) && (check))
        {
        delay_ms(50);
        if (InPut_0)
        {
        OutPut = 1;
        delay_ms(5000);
        check = 0;
        OutPut = 0;
        }
        }
        else if ((!InPut_0) && (!check))
        {
        delay_ms(50);
        if (!InPut_0)
        {
        check = 1;
        }
        }

        if (InPut_1)
        {
        delay_ms(50);
        while (InPut_1)
        {
        OutPut = ~OutPut;
        delay_ms(1000);
        }
        OutPut = 0;
        }

        }
        }
        جدیدترین ویرایش توسط hossein.m98; ۱۵:۳۷ ۱۳۹۷/۰۹/۲۳.

        دیدگاه


          #19
          پاسخ : خارج نشدن از حلقه for

          نوشته اصلی توسط hossein.m98 نمایش پست ها
          سلام دوباره
          ببخشید من دیشب کمی سرم شلوغ بود بخاطر همین یکی دو مورد رو اشتباه نوشتم! کد رو اصلاح کردم و در پروتئوس تست گرفتم. حداقل اونجا که ظاهرا مشکلی نبود!

          int main (void)
          {
          DDRB = (1<<2);
          unsigned char check = 1;

          #define OutPut PORTB.2
          #define InPut_0 PINB.0
          #define InPut_1 PINB.1

          while (1)
          {
          if ((InPut_0) && (check))
          {
          delay_ms(50);
          if (InPut_0)
          {
          OutPut = 1;
          delay_ms(5000);
          check = 0;
          OutPut = 0;
          }
          }
          else if ((!InPut_0) && (!check))
          {
          delay_ms(50);
          if (!InPut_0)
          {
          check = 1;
          }
          }

          if (InPut_1)
          {
          delay_ms(50);
          while (InPut_1)
          {
          OutPut = ~OutPut;
          delay_ms(1000);
          }
          OutPut = 0;
          }

          }
          }

          بازم سپاسگذارم

          میگم برا من تو پروتئوس کار نمیکنه . من همین کدی که گذاشتیو کپی کردم و ریختم تو کدویژن و کامپال کردم .
          هر کلیدو که میزنم خروجی فعال میشه و فعال میمونه .

          ایراد از مدارم تو پروتئوس هست ؟

          فایل کدویژنو بتونی بفرستی خوبه . چون حس میکنم یه چیزیو این وسط اشتباه میکنم .
          جدیدترین ویرایش توسط erfan-messi; ۱۵:۵۳ ۱۳۹۷/۰۹/۲۳.

          دیدگاه


            #20
            پاسخ : خارج نشدن از حلقه for

            نوشته اصلی توسط erfan-messi نمایش پست ها
            بازم سپاسگذارم

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

            ایراد از مدارم تو پروتئوس هست ؟

            فایل کدویژنو بتونی بفرستی خوبه .
            اینم عکس مدار من تو پروتئوس:

            من این مثال رو در اتمل استدیو تست کردم و متاسفانه فایل کدویژن ندارم که بدم بهتون. لازم نیست کار عجیب و غریبی بکنید؛ کافیه قطعه کد من رو در برنامه خودتون با کپی کردن، جایگزین کنید.
            فایل پروتئوس و فایل هگز رو قرار میدم تا خودتون هم تست کنید:


            البته من این مثال رو برای ATmega32 انجام دادم ولی شما میتونید خودتون برای هر میکروکنترلر avr دیگری هم کدها رو کامپایل کنید.
            جدیدترین ویرایش توسط hossein.m98; ۱۶:۰۶ ۱۳۹۷/۰۹/۲۳.

            دیدگاه


              #21
              پاسخ : خارج نشدن از حلقه for

              نوشته اصلی توسط hossein.m98 نمایش پست ها
              اینم عکس مدار من تو پروتئوس:

              من این مثال رو در اتمل استدیو تست کردم و متاسفانه فایل کدویژن ندارم که بدم بهتون. لازم نیست کار عجیب و غریبی بکنید؛ کافیه قطعه کد من رو در برنامه خودتون با کپی کردن، جایگزین کنید.

              سپاسگذارم
              منم همین مدارو بستم نمیشه . فک کنم پروتئوس مشکل داره .

              این الان تمام کدهاییه که تو کدویژن دارم و کامپایل میکنم .
              درستن؟


              #include <tiny13a.h>
              #include <delay.h>


              int main (void)
              {
              DDRB = (1<<2);
              unsigned char check = 1;

              #define OutPut PORTB.2
              #define InPut_0 PINB.0
              #define InPut_1 PINB.1

              while (1)
              {
              if ((InPut_0) && (check))
              {
              delay_ms(50);
              if (InPut_0)
              {
              OutPut = 1;
              delay_ms(5000);
              check = 0;
              OutPut = 0;
              }
              }
              else if ((!InPut_0) && (!check))
              {
              delay_ms(50);
              if (!InPut_0)
              {
              check = 1;
              }
              }

              if (InPut_1)
              {
              delay_ms(50);
              while (InPut_1)
              {
              OutPut = ~OutPut;
              delay_ms(1000);
              }
              OutPut = 0;
              }

              }
              }

              دیدگاه


                #22
                پاسخ : خارج نشدن از حلقه for

                نوشته اصلی توسط erfan-messi نمایش پست ها
                سپاسگذارم
                منم همین مدارو بستم نمیشه . فک کنم پروتئوس مشکل داره .

                این الان تمام کدهاییه که تو کدویژن دارم و کامپایل میکنم .
                درستن؟


                #include <tiny13a.h>
                #include <delay.h>


                int main (void)
                {
                DDRB = (1<<2);
                unsigned char check = 1;

                #define OutPut PORTB.2
                #define InPut_0 PINB.0
                #define InPut_1 PINB.1

                while (1)
                {
                if ((InPut_0) && (check))
                {
                delay_ms(50);
                if (InPut_0)
                {
                OutPut = 1;
                delay_ms(5000);
                check = 0;
                OutPut = 0;
                }
                }
                else if ((!InPut_0) && (!check))
                {
                delay_ms(50);
                if (!InPut_0)
                {
                check = 1;
                }
                }

                if (InPut_1)
                {
                delay_ms(50);
                while (InPut_1)
                {
                OutPut = ~OutPut;
                delay_ms(1000);
                }
                OutPut = 0;
                }

                }
                }
                نمیدونم والا عقل من هم بیشتر از این آنتن نمیده متاسفانه! حالا بازم شما فایل های پروتئوس و هگزی که فرستادم بگیرید و تست کنید، شاید کلا من بد متوجه منظور شما شدم! فایل هایی که فرستادم دانلود و تست کنید ببینید مشابه همون چیزی شده که انتظار دارید؟

                دیدگاه


                  #23
                  پاسخ : خارج نشدن از حلقه for

                  نوشته اصلی توسط hossein.m98 نمایش پست ها
                  نمیدونم والا عقل من هم بیشتر از این آنتن نمیده متاسفانه! حالا بازم شما فایل های پروتئوس و هگزی که فرستادم بگیرید و تست کنید، شاید کلا من بد متوجه منظور شما شدم! فایل هایی که فرستادم دانلود و تست کنید ببینید مشابه همون چیزی شده که انتظار دارید؟
                  شما میگید تست کردید و درست بوده .
                  من فک کنم پروتئوس من مشکل داره . چون خیلی قاطی میکنه .
                  یه ورژن دیگه نصب میکنم . اگه نشد سخت افزاری تست میکنم .

                  دیدگاه


                    #24
                    پاسخ : خارج نشدن از حلقه for

                    داداش با پروتئوس ورژن 8.7 تست کردم درست شد . البته با هگزی که خودت دادی .
                    هگزی که خودم از کدویژن میگیرم کار نمیکنه .
                    فک کنم کدویژن هم مشکل داره . چون کلی هم ارور میگیره از سورسی که دادی .
                    بازم دستت درد نکنه .
                    جدیدترین ویرایش توسط erfan-messi; ۱۷:۱۹ ۱۳۹۷/۰۹/۲۳.

                    دیدگاه


                      #25
                      پاسخ : خارج نشدن از حلقه for

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

                      ;کدویژن جدید نصب کردم بازم مشکل داره . ارور میده همش .
                      از خط 5 و 8 خطا میگیره .


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


                      میتونی برا چیپ attiny13a برام هگزبفرستی ؟

                      دیدگاه


                        #26
                        پاسخ : خارج نشدن از حلقه for

                        نوشته اصلی توسط erfan-messi نمایش پست ها
                        ;کدویژن جدید نصب کردم بازم مشکل داره . ارور میده همش .
                        از خط 5 و 8 خطا میگیره .


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


                        میتونی برا چیپ attiny13a برام هگزبفرستی ؟
                        خطای اول میگه نوع برگشتی main باید از نوع void باشه. "(int main(void" رو با "()void main" جایگزین کنید.
                        خطای دوم هم احتمالا به خطای اول مربوطه.
                        متاسفانه من تو اتمل استدیو سری تاینی رو پیدا نکردم؛ ظاهرا نصب نشده برای من

                        دیدگاه


                          #27
                          پاسخ : خارج نشدن از حلقه for

                          نوشته اصلی توسط hossein.m98 نمایش پست ها
                          خطای اول میگه نوع برگشتی main باید از نوع void باشه. "(int main(void" رو با "()void main" جایگزین کنید.
                          خطای دوم هم احتمالا به خطای اول مربوطه.
                          متاسفانه من تو اتمل استدیو سری تاینی رو پیدا نکردم؛ ظاهرا نصب نشده برای من
                          اصلاحش میکنم همیجوری . ولی فایل هگزش تو پروتئوس کار نمیکنه .

                          دیدگاه


                            #28
                            پاسخ : خارج نشدن از حلقه for

                            avr studio نصب کردم
                            کلی اررور میگیره از برنامه .




                            با تغییراتی که دادم اررور ها به 7تا رسید :



                            حالا روی ماکروها خطا میده .

                            میتونی فایل پروژه رو زیپ کنی بفرستی ؟
                            جدیدترین ویرایش توسط erfan-messi; ۱۱:۲۸ ۱۳۹۷/۰۹/۲۴.

                            دیدگاه


                              #29
                              پاسخ : خارج نشدن از حلقه for

                              نوشته اصلی توسط erfan-messi نمایش پست ها
                              avr studio نصب کردم
                              کلی اررور میگیره از برنامه .




                              با تغییراتی که دادم اررور ها به 7تا رسید :



                              حالا روی ماکروها خطا میده .

                              میتونی فایل پروژه رو زیپ کنی بفرستی ؟
                              برای کار کردن برنامه در اتمل استدیو باید مواردی رو تغییر داد. به درخواست شما من فایل زیپ شده پروژه رو براتون میذارم اینجا ولی بهتره تو همون کدویژن مشکلاتتون رو حل کنید.

                              دیدگاه


                                #30
                                پاسخ : خارج نشدن از حلقه for

                                نوشته اصلی توسط hossein.m98 نمایش پست ها
                                برای کار کردن برنامه در اتمل استدیو باید مواردی رو تغییر داد. به درخواست شما من فایل زیپ شده پروژه رو براتون میذارم اینجا ولی بهتره تو همون کدویژن مشکلاتتون رو حل کنید.
                                http://s9.picofile.com/file/8345783568/test_0.zip.html
                                واقعا دمت گرم

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

                                جدیدترین ویرایش توسط erfan-messi; ۱۲:۱۲ ۱۳۹۷/۰۹/۲۴.

                                دیدگاه

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