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

Sterowanie sygnalizacją świetlną i liczniki w 8051.

Certino 13 Maj 2008 15:11 2947 6
REKLAMA
  • #1 5136173
    Certino
    Poziom 17  
    Posty: 327
    Pomógł: 1
    Ocena: 7
    Witam. Mam do zrobienia projekt sterowania sygnalizacją świetlną na skrzyżowaniu z użyciem kontrolera 8051 w programie BASCOM. I mam problem ze zrobieniem odliczania czasu. Licznik odlicza ale jego odliczanie ma mało wspólnego z sekundami. Proszę o jakaś wskazówkę.

    Poprawiłem tytuł - Regulamin. [c_p]
  • REKLAMA
  • REKLAMA
  • #3 5136465
    Certino
    Poziom 17  
    Posty: 327
    Pomógł: 1
    Ocena: 7
    Nie wychodzi :( Niby liczy ale sekunda to to nie jest. Kwarc ma częstotliwość 11,059 Mhz
  • #4 5136513
    grysek
    Poziom 19  
    Posty: 424
    Pomógł: 37
    Ocena: 10
    Certino napisał:
    Nie wychodzi :( Niby liczy ale sekunda to to nie jest. Kwarc ma częstotliwość 11,059 Mhz


    To w takim razie ile trwa ta "sekunda"?? jak to sprawdzasz?? ja jak wpisałem częsc tego programu odpowiedzialną za odmierzenie czasu to sekunda trwała sekunde... Napewno dobrze skonfigurowałeś timery??
  • REKLAMA
  • REKLAMA
  • #6 5138359
    Certino
    Poziom 17  
    Posty: 327
    Pomógł: 1
    Ocena: 7
    
    Config Timer0 = Timer , Gate = Internal , Mode = 1
    
    
    
    
       Dim Licznik As Integer
       Dim Czas As Integer
    
       Czas = 0
       Licznik = 0
    
       On Timer0 Sec
    
       Enable Interrupts
       Enable Timer0
       Load Timer0 , 4096
       Start Timer0
    
       Do
       Loop
       End
    
       Sec:
       Load Timer0 , 4096
       Incr Licznik
    
       If Licznik = 15 Then
       Incr Czas
       Print Czas
       Licznik = 0
       End If
    
       Return
    


    By odmierzyć 1 sekundę 15 razy zliczam 61440 impulsów. I nie działa niestety. Po prostu coś liczy a brak rezultatów.

    Dla przypomnienia kontroler 8051, kwarc 11,059 Mhz
  • #7 5138660
    grysek
    Poziom 19  
    Posty: 424
    Pomógł: 37
    Ocena: 10
    On wcale nic nie liczy ponieważ w programie nie ma polecenia "Enable Timer0" ani "Enable Interrupts" więc Timer0 wcale nie jset uruchomiony

    ja ten program widze tak:

    Config Timer1 = Timer , Gate = Internal , Mode = 1
    dim cnt as byte
    
    Sub Sec
    Counts = 0
    Counter1 = 4150
    Start Timer1
    Do
    If Cnt = 15 Then
    Stop Timer1
    Exit Do
    End If
    Loop
    End Sub
    Timer1_int:
    Counter1 = 4150
    Start Timer1
    Incr Cnt
    Return

Podsumowanie tematu

✨ Dyskusja dotyczy problemu z implementacją odliczania czasu w projekcie sterowania sygnalizacją świetlną na mikrokontrolerze 8051 z kwarcem 11,059 MHz, programowanym w BASCOM. Autor zgłasza, że licznik odlicza, ale nie odpowiada to rzeczywistym sekundom. Wskazano na konieczność prawidłowej konfiguracji timerów i przerwań, a także na błędy w kodzie, takie jak brak poleceń uruchamiających timer i przerwania ("Enable Timer0", "Enable Interrupts"). Zaproponowano poprawki w kodzie, m.in. użycie Timera1 zamiast Timer0, odpowiednie ustawienie rejestru licznika oraz kontrolę liczby impulsów do uzyskania dokładnego odliczania sekund. Podkreślono, że prawidłowa konfiguracja timerów i przerwań jest kluczowa dla precyzyjnego odmierzania czasu w 8051.
Wygenerowane przez model językowy.
REKLAMA