ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





  1. #1
    2016/05/25
    904
    760

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

    سلام به همه دوستان:
    یه برنامه برای ای سی مگا 32 اس ام دی نوشتم .تایمر واچ داگ رو فعال کردم.هر وفت هنگ می کنه تایمر ریست می کنه ولی با ریست شدن تایمر برنامه دوباره اجرا نمیشه حتما باید روشن خاموش بشه.
    لطفا راهنمایی کنید تا مشکلو پیدا کنم.
    ویرایش توسط Namvar14 : 2018/02/20 در ساعت 20:12
  2. #2
    2016/05/25
    904
    760

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

    دوستان عزیزبعد کلی زیرو رو کردن برنامه و اجراهای مکرر و ابجاد شرایط سرریز برای واتچ داگ به یک نتیجه رسیدم که قطعا با راهنمایی شما مشکل حل میشه.اونم اینه که :
    زمانی که میکرو هنگ می کنه تایمر واچ داگ ریست می کنه ولی انگار اون ادرسی که باید شروع کنه رو پیدا نمی کنه بنابراین بعد از ریست اصلا میکرو کار نمی کنه.
    به نظرم فیوزبیت های میکرو رو خوب تنطیم نکردم.
    البته اینو هم بگم موقعی که خاموش روشن میشه یعنی در شرایط ریست بدون واچ داگ مشکلی اییجاد نمیشه
    من دارم سعی م یکنم مشکل و حل کنم لزفا بگید تا سریع تر و بهتر بتونم این مشکل و پیدا کنم.
    ویرایش توسط Namvar14 : 2018/02/20 در ساعت 14:03
  3. #3
    2016/05/25
    904
    760

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

    دوستان عزیزهرچی که به ذهن تون میاد بگید.راهنمایی کنید.منن منتظرم ا این مشکل و برطرف کنم.به نتیجه نرسیدم.
  4. #4
    2013/03/18
    babol
    1,415
    694

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

    نقل قول نوشته اصلی توسط Namvar14

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

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

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

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

    نقل قول نوشته اصلی توسط hosseinam

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

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

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

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

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    ویرایش توسط Namvar14 : 2018/02/20 در ساعت 20:09
  6. #6
    2016/05/25
    904
    760

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

    دوستان عزیزمیکرو وفتی خودش ریست میشه حالا به هردلیلی اینجوری میشه ممکنه با واتچ داگ باشه .یا هرچیزی دیگه
    لظفا راهنمایی کنید چرا برنامه مجدد احرا نمیشه.دیگه داره اعصابم از این برد بهم میریزه.
    مطمین شدم که از فیوزبیت ها نیست.برنامه قبلی خوب کار می کنه چند روزه تعییر دادم .در ورژن جدید این مشکل هست.
    در ورژن حدید اومدم ال سی دی رو فارسی کردم.حجم رفته بالا .
  7. #7
    2013/03/18
    babol
    1,415
    694

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

    نقل قول نوشته اصلی توسط Namvar14

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

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

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

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

    به احتمال زیاد مشکلتون حل میشه اگه الگوریتم رو درست کنید. الان کدتون از دستتون خارج شدست .
    به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
    (پيش به سوي هدف)
  8. #8
    2016/05/25
    904
    760

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

    نقل قول نوشته اصلی توسط hosseinam

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

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

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

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

    به احتمال زیاد مشکلتون حل میشه اگه الگوریتم رو درست کنید. الان کدتون از دستتون خارج شدست .
    مهندس جان این الگوریتم برنامه نویسی رو از شما گرفتم .اینکه خوانایی مداره بخاطر طولانی بودنش هست .درسته که از فانکشن استفاده نشده ولی طبق توضیحات قبلی شما با یه متعییر بیتی و صفرو یک کردن اون در داخل
  9. #9
    2013/03/18
    babol
    1,415
    694

    پاسخ : اجرا نشدن برنامه برنامه بعد ازریست شدن تایمر واتچ داگ در 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
    به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
    (پيش به سوي هدف)
نمایش نتایج: از 1 به 9 از 9

موضوعات مشابه

  1. تایمر سگ نگهبان! یا watchdog timer
    توسط phoenix2000 در انجمن STM
    پاسخ: 2
    آخرين نوشته: 2017/10/23, 16:16
  2. ریست نشدن برد پکیج دیواری
    توسط saraghaz در انجمن تعمیر و نگهداری
    پاسخ: 2
    آخرين نوشته: 2016/09/23, 18:09
  3. پاسخ: 1
    آخرين نوشته: 2016/08/20, 06:17
  4. تایمر سگ نگهبان(WDT )
    توسط cpld در انجمن میکروکنترلرهای AVR
    پاسخ: 1
    آخرين نوشته: 2015/11/27, 01:50
  5. ریست نشدن میکرو به علت اتصال کابل مبدل یو اس بی به سریال
    توسط voyager2020 در انجمن میکروکنترلرهای AVR
    پاسخ: 5
    آخرين نوشته: 2013/11/07, 02:15

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •