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

Jak rozbudować ten program

kkrryyss1 17 Cze 2010 20:44 927 1
REKLAMA
  • #1 8201102
    kkrryyss1
    Poziom 11  
    Witam .
    W ramach nauki programowania w Bascomie napisałem sobie program do sterowania za pomocą przycisków S1 i S2 dwoma niezależnymi licznikami ( liczącymi od 0 do9), których wartości są multipleksowo wyświetlane na dwóch wyścietlaczach LED. Chciałbym teraz tak rozszerzyć program aby jeszcze generował impulsy ( np. 1Hz ) sterujące jeszcze jedną , zupełnie niezależną diodą LED np. z PORTD.2. stanem niskim. Jak to zrobić ?. Czuję że jest na to prosty sposób , ale nie mogę na niego wpaść.
    Bardz proszę o pomac. Niżej mój program.
    'Niezależne sterowanie dwoma wyświetlaczami
    'przy pomocy dwóch przcisków. Zliczanie w górę.
    
    $regfile = "attiny2313.dat"
    $crystal = 4000000
    
    Config Portb = 255       'wszystkie końcówki jako wyjścia
           Portb = &B11111111       'na początek wygaś
    Config Portd = &B1111100 'dwie najmłodsze jako wejścia
           Portd = &B1111111 'wyłączone wyświetlacze
    
    Dim Lewy As Byte , Prawy As Byte , Ktory As Byte , Ab As Word
    
    
    Eedr = 0
    Eear = 0
    
    Do
    Waitms 5
    
    Debounce Pind.0 , 0 , Zwieksz1 , Sub       'naciśnięcie S1  --lewy
    Debounce Pind.1 , 0 , Zwieksz2 , Sub       ' naciśnięcie S2 --prawy
    
    Incr Ktory
    If Ktory = 2 Then Ktory = 0
    
    
    Portd = &B1111111
    Select Case Ktory
    
    Case 0:
    Portb = Lookup(prawy , Tabela)
    Portd.3 = 0
    
    Case 1:
    Portb = Lookup(lewy , Tabela)
    Portd.4 = 0
    
    
    
    End Select
    
    Prawy = Eedr
     Lewy = Eear
    
    
    Loop
    End
    
    Zwieksz1:
    Incr Eear
    If Eear = 10 Then Eear = 0
    Return
    
    Zwieksz2:
    Incr Eedr
    If Eedr = 10 Then Eedr = 0
    Return
    
    
    Tabela:
      Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144
  • REKLAMA
  • #2 8201536
    M. S.
    Poziom 34  
    Bez specjalnego ingerowania w program uruchom sobie Timer1 (w końcu zapłaciłeś za niego :D ) i zmuś go do przerwania co określony czas. Dioda będzie sobie migać równiutko, a jak napiszesz krótką obsługę przerwania to multipleksowane wyświetlacze się nawet nie zająkną.

    Polecam instrukcje:
    Config Timer1...
    Start ...
    Load...
    On...
    Enable...

    a później Toggle...
REKLAMA