اطلاعیه

Collapse
No announcement yet.

کمک برای تاخیر زمانی های درست

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

    کمک برای تاخیر زمانی های درست

    سلام دوستان یه مشکلی تو برنامه نویسی با بسکام برام پیش اومده و کمک میخوام .
    بحث تاخیر های زمانی یا همون waitms و waitus تو برنامه هست .
    تو برنامه ای که در زیر قرار دادم به جای اینکه مستقیم جلوی waitms عدد بنویسم ، یک متغییر درست کردم و با اون اینکارو میکنم تا قابلیت تغیر با
    یک ولوم که به adc میکرو وصله رو داشته باشه .
    ولی مشکل اینجاست که نمیدونم چرا اون تاخیری که میخوام ایجاد نمیشه و اختلافش زیاده ؟؟
    مثلا تو برنامه زیر به جای اینکه تغریبا 20 بار در ثانیه خروجیم قطع و وصل بشه ؛ 8 بار قطع و وصل میشه ؟؟
    من نیاز به برنامه ایی دارم که هم فرکانس قطع و وصلو مرتب و بر حسب نیاز کم و زیاد کنم و هم پهنای پالسو تغیر بدم ، اگه روش بهتری هم سراغ دارید بگید ممنون
    کد:
    '-------------------------------------
    Automatic_start:
    Cls
    Call Buz
    Do
    Call Pressure_sub
    Call Voltage_sub
    Call Pulse_speed_sub
    Reset Watchdog
    Locate 1 , 1 : Lcd "Pressure : " ; Pressure ; " "
    Locate 2 , 1 : Lcd "Voltage : " ; Voltage ; " "
    Locate 3 , 1 : Lcd "Pulse Speed : " ; Pulse_speed ; " "
    Locate 4 , 1 : Lcd "RPM : " ; Rpm ; " "
    Set Pulse1
    Set Pulse2
    Set Pulse3
    Set Pulse4
    Set Bz
    Waitus Delay_time_1
    Reset Pulse1
    Reset Pulse2
    Reset Pulse3
    Reset Pulse4
    Reset Bz
    Waitms Delay_time_2
    Debounce Start_key , 0 , Automatic
    Loop
    
    Sub Pulse_speed_sub:
    Temp_adc = Getadc(1)                    'volom 1
    Select Case Temp_adc
    Case 0 To 250 :
     Pulse_speed = 1
     Delay_time_1 = 500
     Delay_time_2 = 49
    Case 250 To 500 :
    Pulse_speed = 2
     Delay_time_1 = 800
     Delay_time_2 = 49
    Case 500 To 800 :
     Pulse_speed = 3
     Delay_time_1 = 1200
     Delay_time_2 = 66
    Case 800 To 1024 :
    Pulse_speed = 4
     Delay_time_1 = 1500
     Delay_time_2 = 99
     Case Else : Pulse_speed = 1
     Delay_time_1 = 500
     Delay_time_2 = 49
    End Select
    Reset Watchdog
    Return
    End Sub
    دعا پشتِ دعا براي آمدنت
    گناه پشــــــتِ گناه براي نيامــدنت
    دل درگــير ، مــيان اين دو انتخــــــــــــــــــــاب
    کــــــــــــــدام آخر ؟ آمـــدنـت يا نيامدنـــــــــــــــــــــــت

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

    اقای بیگدلی عاشق میز کارتم...تو اپارات دیدم :mrgreen:
    یه تابع بنویس که توش یه for باشه توی fot هم waitms 1
    بعد مثلا میزنیم call takhir(3)
    for سه بار اجرا شه
    .The best question deserves a better answer
    =-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=
    «پناه»می برم «به خدا»
    از عـیبی که ، «امروز» در خود می بینم، و «دیروز» «دیگران را» به خاطر، «هـمان عیـب» ملامت کرده ام.
    محتاط باشیم، در «سرزنش» و «قضاوت کردن دیگران». وقتی نه از «دیروز او» خبر داریم و نه از "فردای خودمان" .

    دیدگاه


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

      یه نیم نگاهی هم به کریستال و تنظیمات و فیوز بیت ها بنداز

      دیدگاه


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

        آقای بیگدلی من با بسکام کار نکرده ام اما یک راه حل:
        بعد از اینکه مقدار ولوم را با ADC خوندید و مقدار اون رو در یک متغییر ذخیره کردید حالا در برنامه delay_ms(20) بجای عدد مقدار متغییر را قرار بدید.
        مثلا:
        کد:
        [
        int y; // متغیر دلخواه
        PORTA=0x01;
        delay_ms(y)
        PORTA=0x00;
        delay_ms(y)]
        به این ترتیب شما می تونید فرکانس روشن و خاموش شدن خروجی را تعیین کنید. من از این روش استفاده می کنم و خوبم جواب می ده.
        - تو همانی که می اندیشی، هرگاه به این اندیشیدی که تو یک عقابی؟ پس به دنبال رویاهایت برو و به یاوه های مرغ و خروس های اطرافت فکر نکن.

        - یک تصمیم می تواند دریچه های زندگی ما را به روی اندوه یا شادی ، سعادت یا تنگدستی ، مصاحبت یا تنهایی ، و عمری طولانی یا مرگی زودرس باز کند

        دیدگاه

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