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

Kasowany licznik, BASCOM, zatrzymuje się, Jak to zrobić?

arktik1 03 Gru 2008 22:50 1287 6
  • #1 5815172
    arktik1
    Poziom 27  
    Witam
    Napisałem coś takiego w BASCOMIE:
    $regfile = "m8def.dat"
    $crystal = 160000
    Baud = 1000
    Config Portb = Input
    Portb = &B11111111
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
    Cls
    
    
    Dim I As Word
    Config Timer1 = Timer , Prescale = 8
    On Timer1 Times
    Enable Interrupts
    Enable Timer1
    
    Do
    Debounce Pinb.6 , 0 , Kasowanie , Sub
    
    Loop
    End
    Kasowanie:
     Timer1 = 0
    Return
    
    Times:
    I = I + 1
    Cls
    Lcd I
    Return

    I potrzebuje pomocy.
    Chodzi o to że by licznik liczył do 100 i po wciśnięciu PINB.6 kasował się
    i zaczynał liczyć od 0 nie ważne czy reset nastąpi przy np. 20 ,50 ,45...
    w tej chwili liczy do ...nawet nie wiem ile ,a po wciśnięciu PINB.6 tylko się zatrzymuje .
  • #2 5815242
    dawid512
    Poziom 32  
    W czym masz problem kasowanie już masz ale wykorzystaj także stop timer. Po za tym sprecyzuj bardziej o co ci chodzi...nikt nie będzie zgadywał.
  • #3 5815263
    arktik1
    Poziom 27  
    No przecież napisałem
    Licznik ma liczyć od 0 do 100w kółko.
    Ma kasować się po naciśnięciu przycisku podłączonego do PORTB. i zaczynać liczyć od początku.
    Co mam jeszcze napisać??
    A problem mam w tym że nie wiem gdzie to napisać i jak.
    Dopiero zaczynam z kontrolerami.
  • #4 5815304
    KowalD
    Poziom 17  
    nie znam sie na bascomie... ale czy nie wystarczy wlaczyc liczenia od nowa po kasowaniu po prostu?? no i sprawdzac czy juz doliczyl do 100, a jak doliczyl to wylaczyc??

    p.s. www.so.pwn.pl
  • #5 5815331
    arktik1
    Poziom 27  
    Tylko jak???
  • Pomocny post
    #6 5815342
    dawid512
    Poziom 32  
    Wystarczy wpisać warunek w dodatku prosty
    If I = 100 then
    stop timer1
    I=0
    timer1= 0
    start timer1
    end if
    a tutaj
    Kasowanie:
    stop timer1
    I=0
    Timer1 = 0
    start timer1
    Return 


    W ogóle nie bierzesz pod uwagę z jaką częstotliwością będzie liczył licznik chyba potrzebujesz jakiś konkretny czas...
  • #7 5816745
    arktik1
    Poziom 27  
    Tak to ma wyglądać??
    $regfile = "m8def.dat"
    $crystal = 160000
    Baud = 1000
    Config Portb = Input
    Portb = &B11111111
    Config Portd = Output
    Portd = &B11111111
    
    Dim I As Word
    Config Timer1 = Timer , Prescale = 8
    On Timer1 Times
    Enable Interrupts
    Enable Timer1
    
    Do
    Debounce Pinb.6 , 0 , Kasowanie , Sub
    If I = 6 Then Portd.7 = 0
    If I = 0 Then Portd.7 = 1
    
    Loop
    End
    Kasowanie:
    Stop Timer1
    I = 0
    Timer1 = 0
    Start Timer1
    Return
    
    Times:
    I = I + 1
    If I = 7 Then
    stop timer1
    I=0
    timer1= 0
    start timer1
    end if
    Return

    Teraz działa prawidłowo.
    Takim sposobem zrobiłem czujnik ruchu.
    Dzięki wielkie
REKLAMA