logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Bascom - jak zrobić opóźnienie? Przykład programu.

nouki 16 Paź 2007 23:13 1648 4
REKLAMA
  • #1 4386046
    nouki
    Poziom 25  
    Posty: 1222
    Pomógł: 28
    Ocena: 97
    cos mi chyba ten jezyk nie idzie ale na czyms uczys sie trzeba a kto pyta nie bladzi wiec:)

    
    
      If Portd.6 = 1 Then 
      Wait 5 
      Set Portd.7 
      Elseif Portd.6 = 0 Then 
      Wait 5 
      Reset Portd.7 
      End If 
    END: 
     
    


    Jak zrobic by nie odczekiwal Elseif Portd.6 = 0 Then Wait 5 jesli stan nie byl wczesniej If Portd.6 = 1 Then Wait 5
    tylko pomijal to ( czyli jesli bylo 1 a jest 0 wtedy odczekaj 5 a jesli nie bylo 1 nie czekaj):)

    proszę o przykładowy program z opisem.

    Dziękuje nouki.

    Proszę poprawić temat (Regulamin 11.1), w obecnej formie klasyfikuje post do Kosza. [c_p]
  • REKLAMA
  • #2 4386364
    starob
    Poziom 29  
    Posty: 1088
    Pomógł: 128
    Ocena: 137
    instrukcja "if port.6" sprawdza stan portu w tej chwili i nie wie co było wcześniej :))

    powinneś zapamiętać stan portu np. w zmiennej

    Bylo=Port.6 w miejscach gdzie robisz Wait 5
    a warunki powinny wyglądać :

    if (port.6 =1) and (Bylo =0) then..

    elseif (port.6 =0) and (Bylo =1)...

    Oczywiście to jest zasada, składnie języka pewnie do poprawy

    Dodano po 1 [minuty]:

    instrukcja "if port.6" sprawdza stan portu w tej chwili i nie wie co było wcześniej :))

    powinneś zapamiętać stan portu np. w zmiennej
    Bylo=Port.6 w miejscach gdzie robisz Wait 5
    a warunki powinny wyglądać :

    if (port.6 =1) and (Bylo =0) then..

    elseif (port.6 =0) and (Bylo =1)...

    Oczywiście to jest zasada, składnie języka pewnie do poprawy

    Optymalnie to winno być tak:
    
    if port.6 xor Bylo then       /wykrywa zmiany na stan przeciwny 
        {             
          port.6=/port.6            / zmiana stanu portu na przeciwny
          Bylo=port.6               / zapamiętanie aktualnego stanu
          wait5  
         }
    


    i wszystko :) w helpie tego nie wyczytasz
    Oczywiście trzeba dopasować to możliwości i składni Bascoma[/code]
  • REKLAMA
  • #3 4387600
    nouki
    Poziom 25  
    Posty: 1222
    Pomógł: 28
    Ocena: 97
    albo zle zrozumialem albo.....
    
    
    $crystal = 1000000                                    
     $regfile "attiny2313.dat"  
    Dim Bylo As Byte
    
    If(portd.6 = 1) And(bylo = 0) Then
      Bylo = Portd.6
      Wait 5
      Set Portd.7
      Elseif(portd.6 = 0) And(bylo = 1) Then
      Bylo = Portd.6
      Wait 5
      Reset Portd.7
      End If
    end:
    


    wyswietla sie blad skladni "if" i "elseif"

    a w tym wyswietla 8 bledow:)
    
    if portd.6 xor Bylo then       'wykrywa zmiany na stan przeciwny 
        {              
          portd.6=/portd.6           ' zmiana stanu portu na przeciwny 
          Bylo=portd.6               ' zapamiętanie aktualnego stanu 
          wait5  
    end if
    end:
    
  • REKLAMA
  • Pomocny post
    #4 4387983
    WaldekPrzybyłek
    Poziom 15  
    Posty: 103
    Pomógł: 10
    Ocena: 4
    Poprawiłem trochę składnię

    
    
    $crystal = 1000000
     $regfile "attiny2313.dat"
    Dim Bylo As Integer
    
    If Portd.6 = 1 And Bylo = 0 Then
      Bylo = Portd.6
      Wait 5
      Set Portd.7
      Else
      If Portd.6 = 0 And Bylo = 1 Then
      Bylo = Portd.6
      Wait 5
      Reset Portd.7
      End If
    End If
    


    Zalecam jednak poczytać help od Bascoma, za nim zaczniesz pisać programy.
    Pzdr.
  • #5 4388720
    nouki
    Poziom 25  
    Posty: 1222
    Pomógł: 28
    Ocena: 97
    pisalem ze poznaje jezyk:) pisalem w "c" a to cos innego. Zostalem zmuszony do Bascoma
    dziekuje za pomoc temat zamykam:)
REKLAMA