اطلاعیه

Collapse
No announcement yet.

(کمک) تایمر دیجیتال

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

    #16
    پاسخ : (کمک) تایمر دیجیتال

    نوشته اصلی توسط mashroti نمایش پست ها
    متغیرات ثابتن واسه همین شمارش نداری دیگه
    یه تایمر تعریف کن که هر یه ثانیه یکی ب متغیرات اضافه کنه
    مهندس جان میتونی ایراد برنامه منو بگیری؟و خودت درستش کنی؟
    چون وقت ندارم تا فردا صبح باید تحویل استاد بدم هفته آخریم هست که کلاس تشکیل میشه و واقعا کلافم کرده

    دیدگاه


      #17
      پاسخ : (کمک) تایمر دیجیتال

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

      دیدگاه


        #18
        پاسخ : (کمک) تایمر دیجیتال

        نوشته اصلی توسط mashroti نمایش پست ها
        متاسفانه نمیتونم
        اما این برنامه رو نگاه کن شاید یکم کمکت کنه
        برنامه اول میره تو قسمت تنضیمات و زمان هارو دریافت میکنه بعد توسط تایمر صفر که یه زمان نزدیک به یک ثانیه ایجاد میکنه که دقیق نیس شروع به شمارش میکنه تا برسه به زمانی ک تنظیم شده و خروجی رو فعال میکنه و بعد زمان هارو ریست میکنه و دوباره شروع به شمارش میکنه تا به زمان تنظیم شده دوم برسه و خروجی رو قطع میکنه
        ینی با زمان اول خروجی وصل و با زمان بعدی خروجی قطع میشه
        http://s2.picofile.com/file/8288916984/7seg.rar.html
        یه دنیا ممنونتم مهندس جان
        فقط چطوری مقادیر رو توی حافظه سو کنم که با خاموش شدن تایم قبلی تو حافظش بمونه
        این تایمش ثابته همیشه

        دیدگاه


          #19
          پاسخ : (کمک) تایمر دیجیتال

          _Esec(2)
          این متغیرا تو برنامه از eram تعریف شدن و داخل حافظه ذخیره میکنه و پاک نمیشن دیگه

          دیدگاه


            #20
            پاسخ : (کمک) تایمر دیجیتال

            نوشته اصلی توسط mashroti نمایش پست ها
            _Esec(2)
            این متغیرا تو برنامه از eram تعریف شدن و داخل حافظه ذخیره میکنه و پاک نمیشن دیگه
            بله درسته ولی زمانی که برق وصل میشه باید تایم شروع به شمارش کنه
            این هر زمان که وصل میشه منتظر میمونه تایم جدید تعریف کنیم واسش

            دیدگاه


              #21
              پاسخ : (کمک) تایمر دیجیتال

              نوشته اصلی توسط mashroti نمایش پست ها
              _Esec(2)
              این متغیرا تو برنامه از eram تعریف شدن و داخل حافظه ذخیره میکنه و پاک نمیشن دیگه
              مهندس من یکم تغییرات دادم تو این برنامه
              میخوام بار اول که تایم ندادیم بهش سون سگمنت ها یه خط نشون بده ولی بار دوم به بعد دیگه این خطو نشون نده (زمان قطع و وصل میکرو شروع به شمردن کنه )
              اینو ببینید متوجه میشید چی میگم

              دیدگاه


                #22
                پاسخ : (کمک) تایمر دیجیتال

                برنامه رو اشتباه تغییر دادی
                زیر برنامه zaman مربوط به تایمر صفره و زمان یک ثانیه رو ایجاد میکنه ولی تو اومدی خودت دستور gosub نوشتی که بره تو این زیر برنامه و مشکل تو زمانت ایجاد میکنه
                برنامه main هم خودش یه حلقه دائمی داره که تو برنامت نوشتی بره ب این برنامه و برگرده ولی تو حلقه گیر میکنه میکرو دچار مشکل میشه بعضی وقتا

                دیدگاه


                  #23
                  پاسخ : (کمک) تایمر دیجیتال

                  '************************************************* ****
                  if pind.0 = 0 and pind.2 = 0 then shoro = 0

                  if shoro = 0 then
                  Do
                  Portc = &B00000000
                  Portb = &B00000001
                  debounce Pind.1 , 0 , Tanzimat
                  Loop
                  endif
                  '************************************************* ****
                  این برنامه اولین بار که مدارت شروع به کار میکنه همون خط رو نشون میده و یه متغیر تو حافظه ذخیره میکنه
                  بعد که رفتی تو زیر برنامه تنظیمات عدد متغیر رو تغییر میده و برنامه دفه های بعد که اجرا بشه از حلقه main شروع میشه
                  برای اینکه موقع روشن کردن مدار دوباره همون خط نشون داده بشه باید کلید های اول و سومی رو باهم نگه داری تا متغیر صفر بشه و شرط اجرا بشه

                  دیدگاه


                    #24
                    پاسخ : (کمک) تایمر دیجیتال

                    نوشته اصلی توسط mashroti نمایش پست ها
                    '
                    if pind.0 = 0 and pind.2 = 0 then shoro = 0

                    if shoro = 0 then
                    Do
                    Portc = &B00000000
                    Portb = &B00000001
                    debounce Pind.1 , 0 , Tanzimat
                    Loop
                    endif
                    '
                    این برنامه اولین بار که مدارت شروع به کار میکنه همون خط رو نشون میده و یه متغیر تو حافظه ذخیره میکنه
                    بعد که رفتی تو زیر برنامه تنظیمات عدد متغیر رو تغییر میده و برنامه دفه های بعد که اجرا بشه از حلقه main شروع میشه
                    برای اینکه موقع روشن کردن مدار دوباره همون خط نشون داده بشه باید کلید های اول و سومی رو باهم نگه داری تا متغیر صفر بشه و شرط اجرا بشه
                    http://s3.picofile.com/file/8288953400/7seg.bas.html
                    ممنونم مهندس جان
                    اینو بی زحمت ببین درست نوشتم برای خاموش و روشن شدن رله؟فکر کنم ایراد داره

                    و زمانی که کلید set رو میزنم اگه رله روشن باشه رو همون حالت میمونه ک هدرست نیست کارم
                    در ضمن اون دستور gosub main رو نذارم تو حلقه اول شمارش رو بی توجه به مقدار انجام میده مجبورم بذارم

                    دیدگاه


                      #25
                      پاسخ : (کمک) تایمر دیجیتال

                      این برنامه ای که اضافه کردی مهندس وقتی pind.0 , pind.2 رو فشار میدی نمیره رو حالت اولی که shoro رو صفر کنه
                      در واقع یه پین دیگه هم برای شرط صفر کردن شروع استفاده کردم بازم نرفت رو حالت اول

                      دیدگاه


                        #26
                        پاسخ : (کمک) تایمر دیجیتال

                        نوشته اصلی توسط pouria66 نمایش پست ها
                        این برنامه ای که اضافه کردی مهندس وقتی pind.0 , pind.2 رو فشار میدی نمیره رو حالت اولی که shoro رو صفر کنه
                        در واقع یه پین دیگه هم برای شرط صفر کردن شروع استفاده کردم بازم نرفت رو حالت اول
                        چون فرکانس میکرو زیاده و اون خط برنامه اول دستورات میکرو نوشته شده واسه اجرا شدنش باید قبل از اینکه تغذیه میکرو وصل بشه کلیدا فشرده بشن

                        میخای مدارت چجوری کار کنه دقیقا؟!

                        دیدگاه


                          #27
                          پاسخ : (کمک) تایمر دیجیتال

                          نوشته اصلی توسط mashroti نمایش پست ها
                          چون فرکانس میکرو زیاده و اون خط برنامه اول دستورات میکرو نوشته شده واسه اجرا شدنش باید قبل از اینکه تغذیه میکرو وصل بشه کلیدا فشرده بشن

                          میخای مدارت چجوری کار کنه دقیقا؟!
                          درسته فرکانس میکرو بالاست برای همین کار نمیکرد

                          میخوام بار اول شمارش چراغ قرمز روشن بشه و رله و چراغ سبز خاموش
                          بار دوم رله و چراغ سبز روشن بشن و چراغ قرمز خاموش بشه

                          الان این چیزی که خودم نوشتم باگ داره و گاهی اوقات چراغ قرمز روشن میمونه و رله هم وصل نمیشه و یا شمارش هم از مقدار تعیین شده عبور میکنه

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

                          دیدگاه


                            #28
                            پاسخ : (کمک) تایمر دیجیتال

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

                            نوشته اصلی توسط pouria66 نمایش پست ها
                            راستی الان رو برد بورد بستم سون سگمنتام چشمک میزد که اومدم مقدار waitms رو 1 کردم درست شد ولی کم رنگه
                            من تاحالا با سون سگمنت کار نکردم اینم اولین برنامس که با سون سگمنت تمرین میکنم
                            ولی کمرنگ بودنش به خاطر جریانشه چون مدت زمان کمی روشنه کم رنگ میشن

                            اینو نگا کن ببین چجوریه

                            چرا اون ال ای دی که با رله روشن میشه رو با خود رله موازی نمیکنی که پایه میکرو اشغال نشه؟
                            جدیدترین ویرایش توسط mashroti; ۱۵:۴۴ ۱۳۹۵/۱۲/۱۹.

                            دیدگاه


                              #29
                              پاسخ : (کمک) تایمر دیجیتال

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

                              اینو نگا کن ببین چجوریه

                              چرا اون ال ای دی که با رله روشن میشه رو با خود رله موازی نمیکنی که پایه میکرو اشغال نشه؟[/QUOTE]
                              نه کمرنگ بودن به دلیل جریان نیست چون تو حالت تنظیم زمان پرنوره ولی زمان نمایش تایم کم نور میشه

                              در مورد موازی کردن رله گفتم شاید جریانی که لازمه بوبین رله رو فعال کنه، اون جریانو ال ای دی کاهش بده
                              من برای زمانی که تایم صفر وارد میکنیم تو main یه دستور if نوشتم که زمانی که تایم صفر وارد شد بره خط رو نشون بده ، درست کار میکنه ولی باگ داره
                               If Pinc.2 = 0 And Pinc.4 = 0 Then Shoro = 0

                              If Shoro = 0 Then
                              _line:
                              Do
                              Portb = &B0000
                              Portd = &B00000001
                              Debounce Pinc.3 , 0 , Tanzimat
                              Loop
                              End If
                              '*****************************************************
                              Main:
                              X = 1
                              _sec(1) = _esec(1)
                              _min(1) = _emin(1)
                              _sec(2) = _esec(2)
                              _min(2) = _emin(2)

                              If _min(1) = 0 And _sec(1) = 0 Or _min(2) = 0 And _sec(2) = 0 Then : Goto _line : Else
                              End If

                              Do

                              If _min(1) = Daghighe And _sec(1) = Sanye Then
                              Set Red : Reset Green : Reset Rel : Sanye = 0 : Daghighe = 0
                              End If
                              If Red = 1 Then
                              If _min(2) = Daghighe And _sec(2) = Sanye Then
                              Reset Red : Set Green : Set Rel : Sanye = 0 : Daghighe = 0
                              End If
                              End If
                              Start Timer0
                              Gosub Namayesh
                              Loop
                              End

                              دیدگاه


                                #30
                                پاسخ : (کمک) تایمر دیجیتال

                                فقط دوتا مشکل مونده هنوز
                                یکی اینکه توی شمارش اول هیچ کدوم از ال ای دی ها برای نشون دادن وضعیت روشن نیستن و توی شمارش دوم ال ای دی قرمز روشن میشه
                                و مشکل دوم اینکه توی دستور if که نوشتم
                                If _min(1) = 0 And _sec(1) = 0 Or _min(2) = 0 And _sec(2) = 0 Then : Goto _line : Else
                                End If

                                اگر تایم اول رو صفر تعیین کنم و تایم دوم رو عدد تعیین کنم شروع به شمارش میکنه
                                اما برعکسش انجام نمیشه که اینو درست عمل میکنه

                                دیدگاه

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