اطلاعیه

Collapse
No announcement yet.

اجرا نشدن برنامه برنامه بعد ازریست شدن تایمر واتچ داگ در AVR

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

    اجرا نشدن برنامه برنامه بعد ازریست شدن تایمر واتچ داگ در AVR

    سلام به همه دوستان:
    یه برنامه برای ای سی مگا 32 اس ام دی نوشتم .تایمر واچ داگ رو فعال کردم.هر وفت هنگ می کنه تایمر ریست می کنه ولی با ریست شدن تایمر برنامه دوباره اجرا نمیشه حتما باید روشن خاموش بشه.
    لطفا راهنمایی کنید تا مشکلو پیدا کنم.
    جدیدترین ویرایش توسط Namvar14; ۲۰:۱۲ ۱۳۹۶/۱۲/۰۱.
    eshop-hodhod.ir

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

    دوستان عزیزبعد کلی زیرو رو کردن برنامه و اجراهای مکرر و ابجاد شرایط سرریز برای واتچ داگ به یک نتیجه رسیدم که قطعا با راهنمایی شما مشکل حل میشه.اونم اینه که :
    زمانی که میکرو هنگ می کنه تایمر واچ داگ ریست می کنه ولی انگار اون ادرسی که باید شروع کنه رو پیدا نمی کنه بنابراین بعد از ریست اصلا میکرو کار نمی کنه.
    به نظرم فیوزبیت های میکرو رو خوب تنطیم نکردم.
    البته اینو هم بگم موقعی که خاموش روشن میشه یعنی در شرایط ریست بدون واچ داگ مشکلی اییجاد نمیشه
    من دارم سعی م یکنم مشکل و حل کنم لزفا بگید تا سریع تر و بهتر بتونم این مشکل و پیدا کنم.
    جدیدترین ویرایش توسط Namvar14; ۱۴:۰۳ ۱۳۹۶/۱۲/۰۱.
    eshop-hodhod.ir

    دیدگاه


      #3
      پاسخ : اجرا نشدن برنامه برنامه بعد ازریست شدن تایمر واتچ داگ در AVR

      دوستان عزیزهرچی که به ذهن تون میاد بگید.راهنمایی کنید.منن منتظرم ا این مشکل و برطرف کنم.به نتیجه نرسیدم.
      eshop-hodhod.ir

      دیدگاه


        #4
        پاسخ : اجرا نشدن برنامه برنامه بعد ازریست شدن تایمر واتچ داگ در AVR

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

        تایمر نگهبان امکانش خیلی کمه عمل نکنه. چون اصلا ربطی به سی پی یو نداره. جدا داره کلاک میگیره و کار میکنه.
        باز با این حال شما بهتره کدتون رو هم بزارید ببینیم چیزی به ذهنمون میرسه یا نه.
        اگه ال سی دی نویز داشته باشه. شما باید بعد هر فرماان بیای ال سی دی رو init کنید دوباره. من با همین کار تو محیط پرنویز و حتی کنار موتور ال سی دی رو راه اندازه کردم .چون میکروی من داره بخوبی کار میکنه ولی ال سی دی بهم میریخت با init دوباره تو بخشهای مختلف مدار ال سی دی دیگه نویز نمیگیره.
        به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
        (پيش به سوي هدف)

        دیدگاه


          #5
          پاسخ : اجرا نشدن برنامه برنامه بعد ازریست شدن تایمر واتچ داگ در AVR

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

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

          دلیل: ادغام دو پست برای جلوگیری از اسپم
          کد برنامه :

          http://s8.picofile.com/file/8319924368/noname2.rar.html
          جدیدترین ویرایش توسط Namvar14; ۲۰:۰۹ ۱۳۹۶/۱۲/۰۱.
          eshop-hodhod.ir

          دیدگاه


            #6
            پاسخ : اجرا نشدن برنامه برنامه بعد ازریست شدن تایمر واتچ داگ در AVR

            دوستان عزیزمیکرو وفتی خودش ریست میشه حالا به هردلیلی اینجوری میشه ممکنه با واتچ داگ باشه .یا هرچیزی دیگه
            لظفا راهنمایی کنید چرا برنامه مجدد احرا نمیشه.دیگه داره اعصابم از این برد بهم میریزه.
            مطمین شدم که از فیوزبیت ها نیست.برنامه قبلی خوب کار می کنه چند روزه تعییر دادم .در ورژن جدید این مشکل هست.
            در ورژن حدید اومدم ال سی دی رو فارسی کردم.حجم رفته بالا .
            eshop-hodhod.ir

            دیدگاه


              #7
              پاسخ : اجرا نشدن برنامه برنامه بعد ازریست شدن تایمر واتچ داگ در AVR

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

              دوم اینکه شما خیلی از دستور gosub استفاده کردین . وقتی که اصلا sub تو برنامتون وجود نداره. شما اومدین با دستور gosub پرش زدین به لیبل . شما باید اون لیبل هارو به sub تغییر بدین و با end sub تموم کنید یه فانکشن رو.
              و بجای gosub بیاید فراخانی کنید sub ها رو مثلا call Up_down . اصلا سعی نکنید تو برنامه بیاید از این تابع بپرین به اون تابع- چون اصلا نمیدونید کی برمیگردید به به تابع قبل. دقت کنید که وقتی به جایی پرش زدین - باید همه کارها رو با اون تابع انجام بدید و بعد برگردین به جای قبلی که بودین . نه اینکه از داخل همون دوباره پرش کنید به یه تابع دیگه یا پرش کنید به تابع قبلی. اینک پرش زدنها باعث پر شدن stack ها میشه و باعث هنگی میکرو بعد از مدتی میشه. و از همه مهمتر کنترل کد از دستتون میپره . اصلا نمیدونید کجایید و دارین چیکار میکنین.

              شما اول بیا الگوریتم و درست کن و اصلا از پرش استفاده نکن. اصلا. حالا بعد برو رو واتچداگ/
              برای تاخییر شما باید از حلقه ی for next استفاده کنید. یعنی داخلش ریست واتچداگ بنویسید و 1 میلی ثانیه تاخییر بندازنین/حالا بیاید با کم و زیاد کردن تعداد حلقه زمان بیشتری یا کمتری رو سپری کنید.

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

              دیدگاه


                #8
                پاسخ : اجرا نشدن برنامه برنامه بعد ازریست شدن تایمر واتچ داگ در AVR

                نوشته اصلی توسط hosseinam نمایش پست ها
                برنامتون رو دیدم . خانایی خوب نداشت برنامتون. و چیز زیادی با این حجم از کد دستگیر آدم نمیشه که کجا به کجاست.خوب با کسب تجربه های بیشتر درست میشه. ولی من استانداردهای سی رو برای برنامه نویسی و بالا بردن خانایی بهتون پیشنهاد میکنم.

                دوم اینکه شما خیلی از دستور gosub استفاده کردین . وقتی که اصلا sub تو برنامتون وجود نداره. شما اومدین با دستور gosub پرش زدین به لیبل . شما باید اون لیبل هارو به sub تغییر بدین و با end sub تموم کنید یه فانکشن رو.
                و بجای gosub بیاید فراخانی کنید sub ها رو مثلا call Up_down . اصلا سعی نکنید تو برنامه بیاید از این تابع بپرین به اون تابع- چون اصلا نمیدونید کی برمیگردید به به تابع قبل. دقت کنید که وقتی به جایی پرش زدین - باید همه کارها رو با اون تابع انجام بدید و بعد برگردین به جای قبلی که بودین . نه اینکه از داخل همون دوباره پرش کنید به یه تابع دیگه یا پرش کنید به تابع قبلی. اینک پرش زدنها باعث پر شدن stack ها میشه و باعث هنگی میکرو بعد از مدتی میشه. و از همه مهمتر کنترل کد از دستتون میپره . اصلا نمیدونید کجایید و دارین چیکار میکنین.

                شما اول بیا الگوریتم و درست کن و اصلا از پرش استفاده نکن. اصلا. حالا بعد برو رو واتچداگ/
                برای تاخییر شما باید از حلقه ی for next استفاده کنید. یعنی داخلش ریست واتچداگ بنویسید و 1 میلی ثانیه تاخییر بندازنین/حالا بیاید با کم و زیاد کردن تعداد حلقه زمان بیشتری یا کمتری رو سپری کنید.

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

                دیدگاه


                  #9
                  پاسخ : اجرا نشدن برنامه برنامه بعد ازریست شدن تایمر واتچ داگ در AVR

                  نوشته اصلی توسط Namvar14 نمایش پست ها
                  مهندس جان این الگوریتم برنامه نویسی رو از شما گرفتم .اینکه خوانایی مداره بخاطر طولانی بودنش هست .درسته که از فانکشن استفاده نشده ولی طبق توضیحات قبلی شما با یه متعییر بیتی و صفرو یک کردن اون در داخل
                  سلام دوسته عزیز. براتون چند خط از نمونه کد خودم رو از 5500 خط کد رو میزارم تا شما ببینید منظورم از خانایی چیه. البته هنوز خودمم تو این برنامه نتونست کاملا خاناییشو بالا ببرم. ولی شما به راحتی میتونید بخش های هر برنامه رو بفهمید. مثلا کجا دستور if شروع میشه و کجا تموم میشه و if داخلیشو هم ببینید و دسته بندی ها رو.ببینید. که اصلا از gosub استفاده نکردم.
                  دقیقا حرفتون درسته ما برای انکه بفهمیم کدوم تابع اجرا شده میآیم داخل تابع یه متغییر بیتی میزاریم وصف و یکش میکنیم.نه اینجا بلکه تو همه ی زبان برنامه نویسی همین کاررو میکنیم.و شما هم اومدین همین کار رو کردین. منظورم کار بیشتر رو gosub بود. که بیاید حذفش کنید چون همونطور که گفتم کنترل کد از دستتون خارج میشه. تجربه ای بود که خودم کردم و دوستانم هم همینطور.برای حذف gosub من برنامه نوشته شده و تمام شده رو دوباره 4 روز وقت گذاشتم روش تا بیام الگوریتم رو تغییر بدم و حتی از یدونه دستور پرش هم استفاده نکنم.
                  بیشتر از همچیز شما باید سعی کنید خانایی برنامتون رو ببرید بالا. البته الانم قابل قبول هست ولی هنوز باید بیشتر کار بشه.
                  اینها همه توصیه هایی هست که به ما شده و ما هم به دوستان دیگه انتقال میدیم .
                  کد:
                  'in code baraye perojeye Balabar dar tarikh 29 farvardin 95 neveshte shod
                  'poshtiban in peroje jaber ramzani
                  'Updated in : 96.6.16
                  '-----------------------------------------------------------
                  $regfile = "m64def.dat"
                  $crystal = 8000000
                  
                  '>>>>>>>>>>>>>config lcd
                  Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 , _
                               Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
                  Config Lcd = 16 * 2
                  
                  Waitms 20
                  Initlcd
                  Cls
                  Cursor Off
                  
                  
                  Deflcdchar 0 , 32 , 32 , 32 , 32 , 32 , 32 , 31 , 31        ' replace [x] with number (0-7)  'in khate password hast
                  
                  '________________________
                  
                  Const Waitformovemotor = 200                                'miliseconds
                  Const Timeehzarledblink = 10000                             'count
                  
                  
                  
                  '________________________
                  
                  '>>>>>>>>>here is config intruupts
                  Enable Interrupts
                  
                  Config Timer1 = Timer , Prescale = 64                       'in timer baraye cheshmak zadane seven segment dar hangam find kardane tabaqat mibashad.
                  On Timer1 Timerr1
                  Stop Timer1
                  
                  Config Timer2 = Timer , Prescale = 64                       'in timer baraye lamp mibashad.
                  On Timer2 Timerr2
                  Stop Timer2
                  
                  Config Timer0 = Timer , Prescale = 1024                     'baraye cheshmak zadane led cpu
                  On Timer0 Blinkcpuledd
                  Stop Timer0
                  
                  Config Timer3 = Timer , Prescale = 1024                     'in timer baraye lamp mibashad.
                  'On Timer3 Timerr2
                  Stop Timer3
                  
                  Config Watchdog = 2048
                  Start Watchdog
                  
                  '***
                  Config Debounce = 10
                  
                  '_______________________
                  
                  '>>>>>const
                  Const Consttedadgam = 10                                    'kamtarin meqdar bayad 1 bashad. sefr mamno va baese khataye runtime khahad shod .
                  Const Constmaxcount = 1000                                  '5000           'baryae moshakhas kardane tedade hadaksare start az zarbe in do item (balaii va hamin) estefade mi****m ke balaii gam hast va in khat yani chandta az tedade balaii shemorde shavd .dar kol in nesbat hast.
                  Const Constdelaygam = 100                                   'kamtarin meqdar bayad yek bashad, sefr mamno va baese khataye runtime khahad shod .
                  Const Constmaxdelay = 20                                    '2000mili seconds      'miliseconds ,constdelaygam zarbdar in khat time koli mishavad.
                  Const Constmaxtimeoflamp = 100                              'seconds
                  Const Consttimeparkgam = 1
                  Const Constmaxtimepark = 24                                 '120minuts           'in adad zarbdar adade khate qabl , tedad daqayeqe bargasht kabin be tabaqe morede nazar mibashad.
                  'Const Consttimetoclosedoor = 2                              'miliseconds
                  'Const Constmagnetwaite = 0
                  
                  
                  '______________________________
                  '>>>>>>>>>>here is pin configer
                  
                  Config Portb = Input
                  Ehzar0 Alias Pinb.0
                  Ehzar1 Alias Pinb.1
                  Ehzar2 Alias Pinb.2
                  Ehzar3 Alias Pinb.3
                  
                  Reeder0 Alias Pinb.4                                        'reeder yani sensore tashkhise tabaqat
                  Reeder1 Alias Pinb.5
                  Reeder2 Alias Pinb.6
                  Reeder3 Alias Pinb.7
                  
                  Config Pinf.2 = Input : Ehzar4 Alias Pinf.2
                  Config Pinf.3 = Input : Ehzar5 Alias Pinf.3
                  Config Pinf.4 = Input : Reeder4 Alias Pinf.4                ': Reeder4 = 1
                  Config Pinf.5 = Input : Reeder5 Alias Pinf.5                ': Reeder5 = 1
                  
                  Config Pina.0 = Input : Kontact Alias Pina.0 : Kontact = 0
                  Config Pina.1 = Input : Qofl Alias Pina.1 : Qofl = 0
                  Config Pind.0 = Input : Seriimeni Alias Pind.0 : Seriimeni = 0
                  Config Pina.2 = Input : Stopkey Alias Pina.2 : Stopkey = 0
                  Config Pina.3 = Input : Revisionkey Alias Pina.3
                  
                  
                  Ddra.6 = 0 : Menu Alias Pina.6 : Menu = 1
                  Ddra.4 = 0 : Keyup Alias Pina.4 : Keyup = 1
                  Ddra.5 = 0 : Keydown Alias Pina.5 : Keydown = 1
                  Ddra.7 = 0 : Enter Alias Pina.7 : Enter = 1
                  
                  Eled1 Alias Porta.6
                  Eled2 Alias Porta.4
                  Eled3 Alias Porta.5
                  Eled4 Alias Porta.7
                  
                  Config Pinf.6 = Output : Eled5 Alias Portf.6 : Set Eled5
                  Config Pinf.7 = Output : Eled6 Alias Portf.7 : Set Eled6
                  
                  Config Ping.4 = Output : Cpuled Alias Portg.4
                  Config Ping.3 = Output : Pinmusic Alias Portg.3
                  Config Ping.2 = Output : Pinbkl Alias Portg.2
                  
                  
                  '*****
                  
                  Config Pind.6 = Output : Shirup Alias Portd.6
                  Config Pind.2 = Output : Motor Alias Portd.2
                  Config Pind.3 = Output : Shirdown Alias Portd.3
                  Config Pind.4 = Output : Lamp Alias Portd.4
                  Config Pind.5 = Output : Magnet Alias Portd.5
                  
                  Config Pinf.0 = Output : S1 Alias Portf.0
                  Config Pinf.1 = Output : S2 Alias Portf.1
                  Config Pine.2 = Output : S3 Alias Porte.2                   ' for seven segment
                  Config Pine.3 = Output : S4 Alias Porte.3
                  Config Pine.4 = Output : S5 Alias Porte.4
                  Config Pine.5 = Output : S6 Alias Porte.5
                  Config Pine.6 = Output : S7 Alias Porte.6
                  
                  
                  Config Pind.7 = Output : Ledup Alias Portd.7
                  Config Pine.7 = Output : Leddown Alias Porte.7
                  
                  
                  
                  Config Pinc.6 = Output : Pindoor Alias Portc.6              'farman be baz ya baste shodane darb e otomat
                  Config Pinc.7 = Input : Sensdoor Alias Pinc.7               'kontact marbot be darb e otomat
                  Config Pind.1 = Input : Hotkontact Alias Pind.1
                  '_________________________
                  
                  '>>>>>>>>>>here is function definition
                  Declare Sub Moveup
                  Declare Sub Movedown
                  Declare Sub Stopp
                  Declare Sub Breakpower
                  Declare Sub Chekfloor
                  Declare Sub Sensecanmove
                  Declare Sub Floor0
                  Declare Sub Floor1
                  Declare Sub Floor2
                  Declare Sub Floor3
                  Declare Sub Floor4
                  Declare Sub Floor5
                  
                  Declare Sub Floor00
                  Declare Sub Floor11
                  Declare Sub Floor22
                  Declare Sub Floor33
                  Declare Sub Floor44
                  Declare Sub Floor55
                  Declare Sub Subfloorcount
                  
                  Declare Sub Showlcd(byval Showevent As Byte )
                  Declare Sub Showsevensegment
                  Declare Sub Revision
                  Declare Sub Interruptstop
                  Declare Sub Rup
                  Declare Sub Rdown
                  Declare Sub Getlocation
                  
                  
                  Declare Sub Submenu
                  Declare Sub Subkeyup
                  Declare Sub Subkeydown
                  Declare Sub Subkeyenter
                  Declare Sub Subkeymenu
                  Declare Sub Subbreakpower
                  
                  Declare Sub Setpassword
                  Declare Sub Subtimelightoff
                  Declare Sub Subtimegopark
                  Declare Sub Subparkfloor
                  Declare Sub Subpumpdelayoff
                  Declare Sub Subcountstart
                  Declare Sub Subchangepassword
                  Declare Sub Subdoortime
                  
                  Declare Sub Subrevision
                  Declare Sub Presskeyfind
                  
                  Declare Sub Autodoor
                  Declare Sub Subvalume
                  Declare Sub Subkabintime
                  Declare Sub Subtimeinverterstop
                  Declare Sub Subdectime
                  Declare Sub Subismagnet
                  '________________________
                  
                  
                  
                  '>>>>>>>>>>>>>here is value difinition
                  Dim Flagup As Bit
                  Dim Flagdown As Bit
                  Dim Timestopupandmotor As Integer : Timestopupandmotor = 300
                  Dim Flagsensecanmove As Bit : Flagsensecanmove = 0
                  Dim Errorvalue As Byte : Errorvalue = 0
                  Dim Timercode As Byte : Timercode = 0
                  Dim Temp3 As Byte : Temp3 = 0
                  Dim Temp4 As Byte : Temp4 = 0
                  Dim Flagbreakpower As Bit : Flagbreakpower = 0
                  Dim I As Byte                                               'for sensecanmove function
                  Dim J As Byte
                  Dim Flagusedone As Bit : Flagusedone = 0                    'baraye fahmidane inke yebar az sensecanmove estefade kardim
                  Dim Flaginterrupt As Bit : Flaginterrupt = 0
                  Dim Temp5 As Bit : Temp5 = 0                                'baraye timer1
                  Dim Flagrevision As Bit : Flagrevision = 0
                  Dim Sarriz As Integer
                  Dim Seconds As Byte
                  Dim Timemovekabin As Integer
                  
                  Dim Sarriz1 As Integer
                  Dim Seconds1 As Byte
                  Dim Minutes As Byte
                  Dim Roomlocation1 As Byte                                   'baraye tabdile adad az 100 be sefr
                  
                  
                  Dim Flagsubrevision As Bit
                  Dim Flagstop As Bit
                  Dim Flaggomainloop As Bit
                  Dim Flagfirston As Bit                                      'baraye fahmidane inke code az avalin khat shoro shode. ya hamon micro taze roshan shode.
                  Dim Roomlocation As Byte
                  Dim Flagsubbreakpower As Bit
                  
                  Dim Pas1 As Integer
                  Dim Pas2 As Integer
                  Dim Pas3 As Byte
                  Dim Pas4 As Byte
                  Dim Password As Integer
                  Dim Flagkeyup As Bit
                  Dim Flagkeydown As Bit
                  Dim Flagkeyenter As Bit
                  Dim Flagkeymenu As Bit
                  Dim Flagenter As Bit
                  Dim Menuvalue As Byte : Menuvalue = 0
                  Dim Flagfalse As Bit : Flagfalse = 0                        'in baraye tabe set password mibashad , ke chek mikone ke koja dokmeye back zade shode
                  Dim Zamaneharekat As Byte
                  Dim Tempblinkeled As Integer                                'baraye cheshmak zadane ehzarha
                  Dim Blinkled As Byte
                  Dim Magnetwaitevalue As Integer
                  Dim Findshowsevensegment As Integer
                  Dim Flaghappendserriimeni As Bit
                  Dim Flaghelprevision As Bit                                 'baraye chek kardane inke aya dobare bad az rivison find konad ya na.
                  
                   Dim Countdoortime As Integer
                   Dim Flagdoorclose As Bit : Flagdoorclose = 0
                   Dim Temptime As Integer
                   Dim Tempwaitdoorclose As Integer
                   Dim Freetemp As Integer
                  
                   Dim Savefloor As Byte
                   Dim Gettedadfloor As Byte
                   Dim Flagmovekabin As Bit
                   Dim Setmovekabin As Integer
                   Dim Temptemp As Byte
                   Dim Temptemp2stopp As Integer
                   Dim Timeupsset As Integer
                   Dim Temptimeupsset As Integer
                   Dim Temptimeupssetgam As Integer
                   Dim Ismagnet As Byte
                   Dim Constmagnetwaite As Integer
                   'Dim Constmagnetwaitestop As Integer
                   Dim Dectime As Integer
                   Dim Flagsound As Bit
                  '_____________________________________________________________________________________________
                  
                  '>>>>>>>>>>>>>>>here is setting value and function for apps work<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                  
                   Dim Settimetogoparkingfloor1 As Byte : Settimetogoparkingfloor1 = 1       'minuts'
                   Dim Setgoparkingfloor1 As Byte : Setgoparkingfloor1 = 0
                   Dim Setcountstart1 As Integer : Setcountstart1 = 0         'baraye gereftane tedade shemordan az karbar
                   Dim Countstart As Integer : Countstart = 0                 'baraye shemordan dar khode barname
                   Dim Password1 As Integer : Password1 = 0000
                   Dim Setvaluetimeoflamp As Byte : Setvaluetimeoflamp = 10   'seconds'
                   Dim Setvaluemotoroff As Integer : Setvaluemotoroff = 200   'miliseconds '
                   Dim Firsttimeon As Byte
                   Dim Tempgam As Integer
                   Dim Consttimewaitcloseautodoor As Byte
                   Dim Soundlevel As Byte
                   Dim Tedadfloor As Byte
                  
                   Dim Etimetogoparkingfloor As Eram Byte
                   Dim Egoparkingfloor As Eram Byte
                   Dim Ecountstart As Eram Integer
                   Dim Esavecountstart As Eram Integer
                   Dim Epassword As Eram Integer
                   Dim Evaluetimeoflamp As Eram Byte
                   Dim Evaluemotoroff As Eram Integer
                   Dim Econsttimewaitcloseautodoor As Eram Byte
                   Dim Esoundlevel As Eram Byte
                   Dim Etedadfloor As Eram Byte
                   Dim Esetmovekabin As Eram Integer
                   Dim Etimeupsset As Eram Integer
                   Dim Eismagnet As Eram Byte
                   Dim Edectime As Eram Integer
                  '_____________________________________________________________________________________
                  
                  '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>here is get value for first time code<<<<<<<<<<<<<<<<<
                  
                     Waitms 20
                     Settimetogoparkingfloor1 = Etimetogoparkingfloor
                     Waitms 15
                     Setgoparkingfloor1 = Egoparkingfloor
                     Waitms 15
                     Setcountstart1 = Ecountstart
                     Waitms 15
                     Password1 = Epassword
                     Waitms 15
                     Setvaluetimeoflamp = Evaluetimeoflamp
                     Waitms 15
                     Setvaluemotoroff = Evaluemotoroff
                     Waitms 15
                     Countstart = Esavecountstart
                     Waitms 15
                     Consttimewaitcloseautodoor = Econsttimewaitcloseautodoor
                     Waitms 15
                     Soundlevel = Esoundlevel
                     Waitms 15
                     Tedadfloor = Etedadfloor
                     Waitms 15
                     Setmovekabin = Esetmovekabin
                     Waitms 15
                     Timeupsset = Etimeupsset
                     Waitms 15
                     Ismagnet = Eismagnet
                     Waitms 15
                     Dectime = Edectime
                     Waitms 15
                  
                    If Settimetogoparkingfloor1 > 200 Then
                  
                     Etimetogoparkingfloor = 0
                     Waitms 15
                     Egoparkingfloor = 0
                     Waitms 15
                     Ecountstart = 0
                     Waitms 15
                     Epassword = 0000
                     Waitms 15
                     Evaluetimeoflamp = 15                                    'baraye inke dar halqe ba baz shodane serii emeni vared halqe binahayat nashe, meqdar pishfarz bar roye 1 arar gereft.
                     Waitms 15
                     Evaluemotoroff = 0
                     Waitms 15
                     Esavecountstart = 0
                     Waitms 15
                     Econsttimewaitcloseautodoor = 8
                     Waitms 15
                     Esoundlevel = 20
                     Waitms 15
                     Etedadfloor = 6
                     Waitms 15
                     Esetmovekabin = 20
                     Waitms 15
                     Etimeupsset = 10000
                     Waitms 15
                     Eismagnet = 1
                     Waitms 15
                     Edectime = 1000
                     Waitms 15
                     Call Submenu                                             ' in khat baraye fahmidane inke dastgah baraye avalin bar roshan shode
                     Esavecountstart = 0                                      'bekhatere inke in moteqayer az dakhele teabe miad meqdar migire baraye save kardane dar moteqayere asli , va in moteqayer ye moteqayere shomareshi dar baname asli hast, va bayad sefr shavad.
                     Waitms 15
                    End If
                  
                  
                   '_______
                   Dim A As Integer
                   A = 0
                  
                  
                   Do
                   Reset Watchdog
                   If A = 1 Then
                     Set Pinmusic
                     Locate 1 , 1
                     Lcd "loading."
                     Locate 2 , 1
                     Lcd "Romak Shomal"
                   Elseif A = 150 Then
                     Locate 1 , 1
                     Lcd "loading.."
                  
                   Elseif A = 300 Then
                     Locate 1 , 1
                     Lcd "loading..."
                  
                     Printbin 126 ; 100 ; 6 ; 6 ; 0 ; 0 ; Soundlevel ; 239
                     Waitms 100
                     Printbin 126 ; 255 ; 6 ; 3 ; 0 ; 0 ; 15 ; 239
                  
                   Elseif A = 450 Then
                     Locate 1 , 1
                     Lcd "loading...."
                  
                   Elseif A = 600 Then
                     Locate 1 , 1
                     Lcd "loading....."
                  
                   Elseif A = 750 Then
                     Locate 1 , 1
                     Lcd "loading......"
                  
                   Elseif A = 900 Then
                     Locate 1 , 1
                     Lcd "loading......."
                  
                   End If
                  
                   Debounce Menu , 0 , Submenu , Sub
                   If A = 1 Then
                     Locate 1 , 1
                     Lcd "loading."
                     Locate 2 , 1
                     Lcd "Romak Shomal"
                   End If
                   Reset Watchdog
                   Start Watchdog
                   Incr A
                   Waitms 7
                   Loop Until A = 1000
                  
                   If Ismagnet = 0 Then
                       Constmagnetwaite = 0                                   'bara tanzime magnet   va adad bara roshan shodane df player
                       Dectime = 0
                      Else
                       Constmagnetwaite = 1500
                       Dectime = 1000                                         'baraye inke ma to hidrolik inverter nadarim
                    End If
                  
                  '_____________________________________________________________________________________
                  
                  
                  '>>>>>>>>>>>>here is main code
                    ''For Temptime = 0 To 2000
                     'Reset Watchdog
                    ' Waitms 2
                   ' Next
                   ' Printbin 126 ; 255 ; 4 ; 14 ; 0 ; 239
                  
                  Call Breakpower
                  
                  Do
                     Flagmovekabin = 0
                     Reset Watchdog
                     Waitms 30
                     Initlcd                                                  'halaqe asli barname
                     Cls
                     Cursor Off
                  
                    If Flaghelprevision = 1 Then
                     Flaghelprevision = 0
                     Call Breakpower                                          'ba qat o vasl barq , in tabe kabin ra be nazdiktarin tabqe ro be paiin miresand , va baraye shenasaii tavasote tablo be kar miravad
                    End If
                  
                       If Setcountstart1 <> 0 And Setcountstart1 = Countstart Then
                        Do
                         Reset Watchdog                                       'deqat shavad revision amal nemikonad ba qeyre fa'al shodane bord
                         Lcd "system disable"
                         Waitms 500
                         Cls
                         Waitms 200
                        Loop
                       End If
                  
                       Flagup = 0
                       Flagdown = 0
                  
                       Call Getlocation
                       If Roomlocation = 100 Then
                        Roomlocation1 = 0                                     'baraye tabdile 100 be sefr
                       Else
                        Roomlocation1 = Roomlocation
                       End If
                  
                       Call Showsevensegment
                  
                       Cls
                       Lcd "you are floor:" ; Roomlocation1
                       Lowerline
                       Lcd "Hydraulic JH.3"
                  
                       If Roomlocation1 <> Setgoparkingfloor1 And Settimetogoparkingfloor1 <> 0 Then
                        Enable Timer2
                        Start Timer2
                       Elseif Lamp = 1 Then
                        Enable Timer2
                        Start Timer2
                       End If
                  
                     If Savefloor <> 1 And Savefloor <> 2 And Savefloor <> 3 And Savefloor <> 4 And Savefloor <> 5 And Savefloor <> 6 Then
                      Enable Timer0
                      Start Timer0
                      Set Eled1
                      Set Eled2
                      Set Eled3
                      Set Eled4
                      Set Eled5
                      Set Eled6
                      Ddra.6 = 0
                      Ddra.4 = 0
                      Ddra.5 = 0
                      Ddra.7 = 0
                     End If
                  
                     Reset Motor
                     Reset Shirdown                                           'baryae imeni va motmaen shodn hatman qat shode
                     Reset Shirup
                     Reset Magnet
                  
                     Stop Timer3
                     Disable Timer3
                     Timer3 = 0
                  
                     Do
                        Flagmovekabin = 0
                        Reset Motor
                        Reset Shirdown                                        'baryae imeni va motmaen shodn hatman qat shode
                        Reset Shirup
                        Reset Magnet
                  
                        If Reeder0 = 0 Or Reeder1 = 0 Or Reeder2 = 0 Or Reeder3 = 0 Or Reeder4 = 0 Or Reeder5 = 0 Then       'harvaqat robero levele tabaqat istad , darb baz mishavad.dar qeyre in sorat vaqti ke serii emeni ya harchi dg faal shod darb baz nemishavad.
                         Reset Pindoor
                        End If
                  
                                                                          'in halqeye check kardane ehazar hast.
                        Reset Watchdog
                  
                        If Seconds = Setvaluetimeoflamp Then                  'in qesmat baraye time andakhtan lamp estafade mishavad ta khamosh shavad.
                           Reset Lamp
                           Reset Pinmusic
                           Seconds = 0
                           If Settimetogoparkingfloor1 = 0 Then               'baraye khamosh kardane timer2 zamani ke timegoparking = 0 hast
                            Disable Timer2
                            Stop Timer2
                           End If
                        End If
                  
                        If Settimetogoparkingfloor1 <> 0 And Roomlocation1 = Setgoparkingfloor1 And Lamp = 0 Then
                           Disable Timer2
                           Stop Timer2
                           Seconds1 = 0
                           Minutes = 0
                        End If
                  
                  
                  
                        If Settimetogoparkingfloor1 <> 0 And Roomlocation1 <> Setgoparkingfloor1 Then
                           If Minutes = Settimetogoparkingfloor1 Then
                              Minutes = 0
                              If Setgoparkingfloor1 = 0 Then
                                 Disable Timer2
                                 Stop Timer2
                                 Call Floor0
                              Elseif Setgoparkingfloor1 = 1 Then
                                 Disable Timer2
                                 Stop Timer2
                                 Call Floor1
                              Elseif Setgoparkingfloor1 = 2 Then
                                 Disable Timer2
                                 Stop Timer2
                                 Call Floor2
                              Elseif Setgoparkingfloor1 = 3 Then
                                 Disable Timer2
                                 Stop Timer2
                                 Call Floor3
                              Elseif Setgoparkingfloor1 = 4 Then
                                 Disable Timer2
                                 Stop Timer2
                                 Call Floor4
                              Elseif Setgoparkingfloor1 = 5 Then
                                 Disable Timer2
                                 Stop Timer2
                                 Call Floor5
                              End If
                           End If
                        End If
                  
                  
                  
                        Debounce Revisionkey , 1 , Revision , Sub
                  
                  
                       If Seriimeni = 0 And Kontact = 0 And Sensdoor = 0 Then
                  
                        Stop Timer1
                        Disable Timer1
                        Call Showsevensegment
                  
                        If Savefloor = 1 Or Savefloor = 2 Or Savefloor = 3 Or Savefloor = 4 Or Savefloor = 5 Or Savefloor = 6 Then
                          If Savefloor = 1 Then
                            Savefloor = 0
                            Call Floor0
                          Elseif Savefloor = 2 Then
                           Savefloor = 0
                           Call Floor1
                          Elseif Savefloor = 3 Then
                           Savefloor = 0
                           Call Floor2
                          Elseif Savefloor = 4 Then
                           Savefloor = 0
                           Call Floor3
                          Elseif Savefloor = 5 Then
                           Savefloor = 0
                           Call Floor4
                          Elseif Savefloor = 6 Then
                           Savefloor = 0
                           Call Floor5
                          End If
                        End If
                  
                        Debounce Ehzar0 , 0 , Floor0 , Sub
                        Debounce Ehzar1 , 0 , Floor1 , Sub
                        Debounce Ehzar2 , 0 , Floor2 , Sub
                        Debounce Ehzar3 , 0 , Floor3 , Sub
                        Debounce Ehzar4 , 0 , Floor4 , Sub
                        Debounce Ehzar5 , 0 , Floor5 , Sub
                  
                       Else
                  
                        If Kontact = 1 Or Sensdoor = 1 Then
                         Debounce Ehzar0 , 0 , Floor00 , Sub
                         Debounce Ehzar1 , 0 , Floor11 , Sub
                         Debounce Ehzar2 , 0 , Floor22 , Sub
                         Debounce Ehzar3 , 0 , Floor33 , Sub
                         Debounce Ehzar4 , 0 , Floor44 , Sub
                         Debounce Ehzar5 , 0 , Floor55 , Sub
                        End If
                  
                       End If
                  
                        If Seconds = 14 Then
                  
                           Savefloor = 0
                  
                           Ddra.6 = 1
                           Set Eled1                                          'vaqti ke serri emeni baz hast va ehar zade shod , hafeze mimanad va bad az gozashte in zaman age dar baste nashod , hafeze az beyn miravad.
                           Ddra.4 = 1
                           Set Eled2
                           Ddra.5 = 1
                           Set Eled3
                           Ddra.7 = 1
                           Set Eled4
                           Set Eled5
                           Set Eled6
                  
                  
                           Ddra.6 = 0
                           Ddra.4 = 0
                           Ddra.5 = 0
                           Ddra.7 = 0
                  
                        End If
                  
                  
                        If Flagrevision = 1 Then
                         Flagrevision = 0
                         Exit Do
                        End If
                  
                        If Lamp = 0 Then
                         If Seriimeni = 1 Or Kontact = 1 Or Sensdoor = 1 Then
                           Seconds = 0
                           Seconds1 = 0
                           Minutes = 0
                           Set Lamp
                           Set Pinmusic
                           Exit Do
                         End If
                       End If
                  
                       If Seriimeni = 1 Or Kontact = 1 Then
                            Enable Timer1
                            Start Timer1
                       Elseif Seriimeni = 0 And Kontact = 0 Then
                            Stop Timer1
                           Disable Timer1
                            Call Showsevensegment
                       End If
                  
                  
                       If Hotkontact = 1 Then
                           Flaggomainloop = 1
                           Cls
                           Lcd "Motor is hot"
                  
                           Reset S1
                           Set S2
                           Set S3
                           Reset S4
                           Set S5
                           Set S6
                           Set S7
                  
                           Do
                            Reset Watchdog
                           If Hotkontact = 0 Then
                  
                            Exit Do
                           End If
                  
                           Loop
                        End If
                  
                  
                  
                       If Flaggomainloop = 1 Then                             'In Halqeye Check Kardane Ehazar Va Rivision Hast.
                          Flaggomainloop = 0
                          Exit Do
                       End If
                  
                     Loop
                  
                  
                  Loop                                                        'halaqe asli barname
                  
                  End                                                         'end program
                  '_____________________________

                  اینم یه نمونه کد دیگه که حلقه تو در تو داره :

                  کد:
                  Sub Sensecanmove
                  Flagsensecanmove = 0
                  
                  'For Tempwaitdoorclose = 0 To 1000
                   'Reset Watchdog
                  ' Waitms Consttimetoclosedoor
                  'Next
                  Tempwaitdoorclose = 0
                                                                      'sabr kon ta dar baste shavad va qofl shavad
                   If Seriimeni = 0 Then
                     If Kontact = 0 Then
                       Call Autodoor
                       If Flagdoorclose = 1 Then
                  
                          If Qofl = 0 Then                                    'check serii imeni pish az harekat
                             Flagsensecanmove = 1                             'taiid nahaii inke moshkeli nist baraye harekat
                          Else
                             Cls
                             Lcd "check qofl"
                             Enable Timer1
                             Start Timer1
                             Do
                                Reset Watchdog
                                If Qofl = 0 Then
                                 Stop Timer1
                                 Disable Timer1
                                 Exit Do
                                End If
                             Loop
                          End If
                  
                       Else
                  
                       End If
                  
                     Else
                  
                        Cls
                        Lcd "check Kontact"
                        Enable Timer1
                        Start Timer1
                        Do
                           Reset Watchdog
                           If Kontact = 0 Then
                              Stop Timer1
                              Disable Timer1
                              Exit Do
                           End If
                  
                        Loop
                     End If
                   Else
                  
                     Cls
                     Lcd "chek seri imeni"
                     Enable Timer1
                     Start Timer1
                     Do
                      Reset Watchdog
                      If Seriimeni = 0 Then
                        Stop Timer1
                        Disable Timer1
                        Exit Do
                      End If
                     Loop
                   End If
                  End Sub
                  به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
                  (پيش به سوي هدف)

                  دیدگاه

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