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

[Attiny2313][BASCOM] Wyświetlacz led + stoper

evolucja 11 Gru 2009 21:35 2863 3
REKLAMA
  • #1 7376257
    evolucja
    Poziom 20  
    Witam.. Od godziny próbuję dojść czemu wyświetlacz tak niemiłosiernie mruga. Gdyby ktoś mógł rzucić na to okiem:
    $regfile = "attiny2313.dat"                                 'model proca
    $crystal = 1000000                                          'taktowanie
    
    Dim Cyfra As Integer
    Dim Her As Byte
    Declare Sub Wyswietl
    Declare Sub Pokaz
    Dim A As Byte
    
    Config Portb = Output                                       'port b  jako wyjścia
            Portb = &B00000000                                  'stan spoczynkowy-0
    Config Portd = Output                                       'pprt d jako wyjścia
            Portd = &B0000000                                   'stan spoczynkowy-0
    
                      '2134 wyswietlacz
                      '5432  port
    
                      Config Timer0 = Timer , Prescale = 256
    Load Timer0 , 255
    On Timer0 Timer0_int
    Enable Timer0
    Enable Interrupts
    Start Timer0
    
    A = 0
    
    Do
    
    
    For Her = 0 To 9 Step 1
    Pokaz
     Wait 3
    Next Her
    A = A + 1
    
    
    Loop
    
    Sub Pokaz
    Timer0_int:
    Load Timer0 , 255
    
    
     Cyfra = Her
    Gosub Wyswietl
    Set Portd.2
    Waitms 4
    Reset Portd.2
    
    
    Cyfra = A
    Gosub Wyswietl
    Set Portd.3
    Waitms 4
    Reset Portd.3
    Return
    End Sub
    
    
     Sub Wyswietl:
    Portb = Lookup(cyfra , Liczby )
    End Sub
    
     Liczby:
       Data &B00001001 , &B01101111 , &B01011000 , &B01001010 , &B00101110 , &B10001010 , &B10001000 , &B01001111 , &B00001000 , &B00001010
        ' 0, 1 ,2 , 3 , 4 , 5 , 6 , 7, 8, 9
    
    
                                                            'koniec programu
  • REKLAMA
  • #2 7376405
    mirekk36
    Poziom 42  
    Mruga bo zrobiłeś totalny groch z kapustą w tym kodzie. Dobre - bo takiego pomysłu to jeszcze nie widziałem - żeby procedura obsługi przerwania była jednocześnie ciałem jakiegoś podporogramu z którego na dodatek wywoływane są inne podprogramy a jak do tego dodać jeszcze polecenia Waitms w przerwaniu to na prawdę nie ma o czym mówić - musi tak być - dobrze że jeszcze w ogóle coś ci działa a się nie zawiesza.

    Proponuję ci przejrzeć jakieś przykładowe kody jak się organizuje wyświetlanie multipleksowe LED, nawet chyba gdzieś na dioda.com.pl widziałem taki z obrazkami i animacjami tutorial jak to w Bascomie robić. Ale też pełno dobrych przykładów masz w książkach a i w necie się znajdzie tego od groma nie mówiąc już o samej elektrodzie.

    Zapamiętaj sobie jedno - nigdy ale to nigdy nie można tak pisać obsługi przerwań.

    W przerwaniu umieść tylko i wyłącznie samo multipleksowanie wyświetlaczy i nic więcej.
  • REKLAMA
  • #3 7376571
    evolucja
    Poziom 20  
    No cóż, szczerze powiedziawszy to moje pierwsze podejście do uC. Dziwnym by było gdybym nie zrobił żadnego błędu :)

    Jesteś pewien, że widziałeś to na diodzie? Nie umiem tego znaleźć..
REKLAMA