ATtiny2313 sterowanie LED - kod


Witam. Mam problem. trochę dziwny bo nie miałem wcześniej styczności z programowaniem układów, a muszę zaprogramować akurat coś takiego. Przeglądałem kilka stron w necie, nic z tego nie rozumiem, no prawie nic bo udało mi się przerobić jeden kod na coś takiego co mi potrzebne. Posiadam programator zbudowany wedlug schematu Dybkowskiego, i programy ISP Programmer, ISP Flash Programmer i Bascom AVR.

Oto kod"

Config Portd = Output
Config Portb = Output
 
Config Pind.6 = Input
 
Portd = 127
Portb = 255
 
Dim Linijka As Word
 
 
Do
 
Linijka = &B0000001100000011
Gosub Przypisanie
Gosub Opoznienie
 
Linijka = &B0000011110000011
Gosub Przypisanie
Gosub Opoznienie
 
Linijka = &B0000111111000011
Gosub Przypisanie
Gosub Opoznienie
 
Linijka = &B0001111111100011
Gosub Przypisanie
Gosub Opoznienie
 
Linijka = &B0011111111110011
Gosub Przypisanie
Gosub Opoznienie
 
Linijka = &B0111111111111011
Gosub Przypisanie
Gosub Opoznienie
 
Linijka = &B1111111111111111
Gosub Przypisanie
Gosub Opoznienie
 
Linijka = &B0111111111111011
Gosub Przypisanie
Gosub Opoznienie
 
Linijka = &B0011111111110011
Gosub Przypisanie
Gosub Opoznienie
 
Linijka = &B0001111111100011
Gosub Przypisanie
Gosub Opoznienie
 
Linijka = &B0000111111000011
Gosub Przypisanie
Gosub Opoznienie
 
Linijka = &B0000011110000011
Gosub Przypisanie
Gosub Opoznienie
 
Linijka = &B0000001100000011
Gosub Przypisanie
Gosub Opoznienie
 
Linijka = &B0000010010000011
Gosub Przypisanie
Gosub Opoznienie
 
Linijka = &B0000100001000011
Gosub Przypisanie
Gosub Opoznienie
 
Linijka = &B0001000000100011
Gosub Przypisanie
Gosub Opoznienie
 
Linijka = &B0010000000010011
Gosub Przypisanie
Gosub Opoznienie
 
Linijka = &B0100000000001011
Gosub Przypisanie
Gosub Opoznienie
 
Linijka = &B1000000000000111
Gosub Przypisanie
Gosub Opoznienie
 
Linijka = &B0100000000001011
Gosub Przypisanie
Gosub Opoznienie
 
Linijka = &B0010000000010011
Gosub Przypisanie
Gosub Opoznienie
 
Linijka = &B0001000000100011
Gosub Przypisanie
Gosub Opoznienie
 
Linijka = &B0000100001000011
Gosub Przypisanie
Gosub Opoznienie
 
Linijka = &B0000010010000011
Gosub Przypisanie
Gosub Opoznienie
 
Loop
 
Przypisanie:
Portb.0 = Linijka.15
Portb.1 = Linijka.14
Portb.2 = Linijka.13
Portb.3 = Linijka.12
Portb.4 = Linijka.11
Portb.5 = Linijka.10
Portb.6 = Linijka.9
Portb.7 = Linijka.8
Portd.0 = Linijka.7
Portd.1 = Linijka.6
Portd.2 = Linijka.5
Portd.3 = Linijka.4
Portd.4 = Linijka.3
Portd.5 = Linijka.2
Return
 
Opoznienie:
Waitms 80
Return
 End

zastanawia mnie to - &B0000010010000011 bo z tego co zrozumialem jest tu 16 wyjsc, a wedlug ukladu jest 14.

Nie wiem o co chodzi z tymi fuse-bitami. W sumie to nie wiem nic procz tego jak podlaczyc uklad pod programator;/

Jesli ktos bylby tak mily i mi rozjasnil troche to bym byl wdzieczny...
Pozdrawiam




Portret użytkownika mirley

Re: LEDS

Tak zaraz za 15 dokładasz efekt gaszenia diod, bo rozumiem że ma się zapalać od dołu do góry i gasić też od dołu do góry, więc inaczej na razie nie mam pomysłu jak można by to zrobić

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika matrix

A ja mam pytania

Mam kilka pytań bo czegoś nie kminię.
Czemu zmienna Linijka w pętli do...loop przyjmuje wartości 16 bitowe skoro później jest przypisanie do tylko jednego pinu procesora? Nawet gdyby było przypisanie do całego portu to port jest tylko 8 bitowy więc pozostałe 8 zostanie utracone.

I co oznacza zapis:

Portd.x = Linijka.x

Konkretnie chodzi mi o to jaką funkcję pełni w tym przypadku kropka?

Portret użytkownika mirley

Re: LEDS

Pozwala wpisać do konkretnego bitu jednej zmiennej lub rejestru, bit innej zmiennej. Np:

Portd.0 = Linijka.10

Ustawi na portd.0 stan który jest na 10 bicie zmiennej linijka

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika maro

Tak mają sie zapalać od dołu

Tak mają sie zapalać od dołu do góry i gasić od dołu do góry

$regfile = "attiny2313.dat"
$crystal = 12000000                                         '
 
Config Portb = &B11111111 : Portb = &B11111111
Config Portd = &B11111100 : Portd = &B11111111
 
Config Timer0 = Timer , Prescale = 8
Enable Timer0 : On Timer0 Prztimer0
Enable Interrupts
 
 
Dim Sw_licz(1) As Byte
Dim F_60ms As Bit
Dim F_6ms As Bit
Dim Dzielnik As Word
Dim Leds As Word
Dim Licznik As Byte
Dim On_off As Bit
Dim X As Word
Dim W As Word
 
Sw1 Alias Pind.0
 
Leds = &B0000000000000000
 
 
Do
 
  If F_6ms = 1 Then
    F_6ms = 0
 
    If Sw1 = 0 Then                                         'sw1 to pin
    Incr Sw_licz(1)                                         'zmienna typu byte
    If Sw_licz(1) = 10 Then
 
    On_off = 1
 
    End If
  Else
    Sw_licz(1) = 0
  End If                                                    'tutaj np sprawdzanie klawiatury patrz: moje kody źródłowe na ten temat i inne programy
  End If
 
 
  If F_60ms = 1 Then
    F_60ms = 0
 
    If On_off = 1 Then
    Select Case Licznik
     Case 0 : Leds = &B0011111111111111
     Case 1 : Leds = &B0001111111111111
     Case 2 : Leds = &B0000111111111111
     Case 3 : Leds = &B0000011111111111
     Case 4 : Leds = &B0000001111111111
     Case 5 : Leds = &B0000000111111111
     Case 6 : Leds = &B0000000011111111
     Case 7 : Leds = &B0000000001111111
     Case 8 : Leds = &B0000000000111111
     Case 9 : Leds = &B0000000000011111
     Case 10 : Leds = &B0000000000001111
     Case 11 : Leds = &B0000000000001111
     Case 12 : Leds = &B0000000000000011
     Case 13 : Leds = &B0000000000000001
     Case 14 : Leds = &B0000000000000000
     Case 15 : Leds = &B0000000000000001
     Case 16 : Leds = &B0000000000000011
     Case 17 : Leds = &B0000000000000111
     Case 18 : Leds = &B0000000000001111
     Case 19 : Leds = &B0000000000011111
     Case 20 : Leds = &B0000000000111111
     Case 21 : Leds = &B0000000001111111
     Case 22 : Leds = &B0000000011111111
     Case 23 : Leds = &B0000000111111111
     Case 24 : Leds = &B0000001111111111
     Case 25 : Leds = &B0000011111111111
     Case 26 : Leds = &B0000111111111111
     Case 27 : Leds = &B0001111111111111
     Case 28 : Leds = &B0011111111111111
     Case 29 : Leds = &B0111111111111111
     Case 30 : Leds = &B1111111111111111
 
 
                                            'I teraz w pętli głównej można już taktować działanie programu:
    End Select
 
    Incr Licznik
    If Licznik = 15 Or 30 Then On_off = 0
 
    If Licznik = 17 Then Licznik = 0
 
     X = Leds Mod 256
     Portb = X
     X = Leds / 256
     Shift X , Left , 1
     Portd = X Or &B00000001
    Else
     If Licznik <> 0 Then
      Incr W
      If W = 220 Then On_off = 1
     Else
      W = 0
     End If
    End If
 
 
  End If
 
  Loop
 
Prztimer0:
 Timer0 = 6
 Set F_6ms
 Incr Dzielnik
 If Dzielnik = 100 Then                                     'licz do 10 czyli 6ms *10
   Dzielnik = 0
   Set F_60ms
 End If
Return

jest błąd w tej linijce:
If Licznik = 15 or 30 Then On_off = 0

Portret użytkownika matrix

Re Błąd w linijce

Bo nie możesz napisać

If Licznik = 15 or 30 Then On_off = 0

To jest ewidentny błąd. Musi być tak:
If Licznik = 15 or Licznik = 30 Then On_off = 0

Ewentualnie może być potrzebny
End If

Portret użytkownika demsy1

Ja posiadam taki kod, ale nie

Ja posiadam taki kod, ale nie działa jeszcze prawidłowo
Po zwarciu do masy pind.0 zapalają się od razu 4 diody na porcie D i również tak jest gdy zwieram pind.1. Co powinienem zmienić?

$regfile = "attiny2313.dat"
$crystal = 12000000                                         '
 
Config Portb = &B11111111
Config Portd = &B11111100
 
 
 
 
Dim Leds As Word
Dim N As Byte
 
Dim X As Byte
 
Portb = 255
Portd = 255
 
 
 
Do
 
 
 If Pind.0 = 0 Then
     Waitms 20
 
     If Pind.0 = 0 Then                                     'sw1 to pind.0
            For N = 0 To 11
               Leds = 2 ^ N
               Decr Leds
               X = Leds Mod 256
               Portb = Not X
               X = Leds / 256
               Portd = Not X
 
               Waitms 800
            Next N
               Portd = 255
               Portb = 255
     End If
 
 End If
 
 If Pind.1 = 0 Then
     Waitms 20
 
     If Pind.1 = 0 Then
                                                                'sw2 to pind.1
            For N = 11 To 0 Step -1
               Leds = 2 ^ N
               X = Leds Mod 256
               Portb = Not X
               X = Leds / 256
               Portd = Not X
               Waitms 800
            Next N
 
               Portb = 255
               Portd = 255
     End If
 
 End If
 
 
Loop

Portret użytkownika gosc

Ja mam taki kod $regfile =

Ja mam taki kod

$regfile = "attiny2313.dat"
$crystal = 12000000                                         '
 
 
Ddrb = &B11111111
Ddrd = &B11111100
Portd = 255
Portb = 255
 
 
Do
If Pind.0 = 0 Then
Waitms 20
 
 If Pind.0 = 0 Then
        Portb.0 = 0
        Wait 1
        Portb.1 = 0
        Wait 1
        Portb.2 = 0
        Wait 1
        Portb.3 = 0
        Wait 1
        Portb.4 = 0
        Wait 1
        Portb.5 = 0
        Wait 1
        Portb.6 = 0
        Wait 1
        Portb.7 = 0
        Wait 1
        Portd.2 = 0
        Wait 1
        Portd.3 = 0
        Wait 1
        Portd.4 = 0
        Wait 1
        Portd. 5 = 0
 
 
        Wait 1
        Portb.0 = 1
        Wait 1
        Portb.1 = 1
        Wait 1
        Portb.2 = 1
        Wait 1
        Portb.3 = 1
        Wait 1
        Portb.4 = 1
        Wait 1
        Portb.5 = 1
        Wait 1
        Portb.6 = 1
        Wait 1
        Portb.7 = 1
        Wait 1
        Portd.2 = 1
        Wait 1
        Portd.3 = 1
        Wait 1
        Portd.4 = 1
        Wait 1
        Portd.5 = 1
 
 
 If Pind.1 = 0 Then
      Waitms 30
 
 If Pind.1 = 0 Then
        Portd.5 = 0
        Wait 1
        Portd.4 = 0
        Wait 1
        Portd.3 = 0
        Wait 1
        Portd.2 = 0
        Wait 1
        Portb.7 = 0
        Wait 1
        Portb.6 = 0
        Wait 1
        Portb.5 = 0
        Wait 1
        Portb.4 = 0
        Wait 1
        Portb.3 = 0
        Wait 1
        Portb.2 = 0
        Wait 1
        Portb.1 = 0
        Wait 1
        Portb. 0 = 0
 
        Wait 1
        Portd.5 = 1
        Wait 1
        Portd.4 = 1
        Wait 1
        Portd.3 = 1
        Wait 1
        Portd.2 = 1
        Wait 1
        Portb.7 = 1
        Wait 1
        Portb.6 = 1
        Wait 1
        Portb.5 = 1
        Wait 1
        Portb.4 = 1
        Wait 1
        Portb.3 = 1
        Wait 1
        Portb.2 = 1
        Wait 1
        Portb.1 = 1
        Wait 1
        Portb.0 = 1
 
 
 
       End If
       End If
 
       End If
       End If
   Loop

Nie chce mi działać pind.1 co zrobiłem źle?

Portret użytkownika mirley

LED

Piny Do i d1 masz jako wejścia więc nic dziwnego, zmień w rejestrze ddrd

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika demsy1

kod

Spróbuj coś takiego:

$regfile = "attiny2313.dat"
$crystal = 12000000                                         '
 
 
Ddrb = &B11111111
Ddrd = &B11111100
Portd = 255
Portb = 255
 
 
Do
If Pind.0 = 0 Then
Waitms 20
 
 If Pind.0 = 0 Then
        Portb.0 = 0
        Wait 1
        Portb.1 = 0
        Wait 1
        Portb.2 = 0
        Wait 1
        Portb.3 = 0
        Wait 1
        Portb.4 = 0
        Wait 1
        Portb.5 = 0
        Wait 1
        Portb.6 = 0
        Wait 1
        Portb.7 = 0
        Wait 1
        Portd.2 = 0
        Wait 1
        Portd.3 = 0
        Wait 1
        Portd.4 = 0
        Wait 1
        Portd. 5 = 0
 
 
        Wait 1
        Portb.0 = 1
        Wait 1
        Portb.1 = 1
        Wait 1
        Portb.2 = 1
        Wait 1
        Portb.3 = 1
        Wait 1
        Portb.4 = 1
        Wait 1
        Portb.5 = 1
        Wait 1
        Portb.6 = 1
        Wait 1
        Portb.7 = 1
        Wait 1
        Portd.2 = 1
        Wait 1
        Portd.3 = 1
        Wait 1
        Portd.4 = 1
        Wait 1
        Portd.5 = 1
 
        End If
        End If
 
 
 If Pind.1 = 0 Then
      Waitms 30
 
 If Pind.1 = 0 Then
        Portd.5 = 0
        Wait 1
        Portd.4 = 0
        Wait 1
        Portd.3 = 0
        Wait 1
        Portd.2 = 0
        Wait 1
        Portb.7 = 0
        Wait 1
        Portb.6 = 0
        Wait 1
        Portb.5 = 0
        Wait 1
        Portb.4 = 0
        Wait 1
        Portb.3 = 0
        Wait 1
        Portb.2 = 0
        Wait 1
        Portb.1 = 0
        Wait 1
        Portb. 0 = 0
 
        Wait 1
        Portd.5 = 1
        Wait 1
        Portd.4 = 1
        Wait 1
        Portd.3 = 1
        Wait 1
        Portd.2 = 1
        Wait 1
        Portb.7 = 1
        Wait 1
        Portb.6 = 1
        Wait 1
        Portb.5 = 1
        Wait 1
        Portb.4 = 1
        Wait 1
        Portb.3 = 1
        Wait 1
        Portb.2 = 1
        Wait 1
        Portb.1 = 1
        Wait 1
        Portb.0 = 1
 
 
       End If
       End If
   Loop

Portret użytkownika matrix

makabra

Kochani, młodzi "programiści". Przestańcie używać tych wait'ów. Przecież to jest straszne. Nauczcie się wykorzystywać timery. Nawet w prostych zastosowaniach instrukcje wait wyglądają koszmarnie i do tego tak wyyyyyyydłużają kod programu.

Portret użytkownika maro

Sterownik

Witam ponownie
Zbudowałem sterownik na attiny 2313 i moje pytanie brzmi jak podłączyć tranzystor bc 547 żeby pracował jako klucz, czyli chcę podłączyć listwę diodową na 12V. Jest taka możliwość, czy będę musiał kupić mosfety?

Portret użytkownika mirley

Re: LED

A jak długą tą listwę chcesz podłączyć? a dokładniej jaki prąd chcesz sterować?

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika maro

Wiem ze maksymalnie mogę

Wiem ze maksymalnie mogę obciążyć tranzystor 100mA. Chcę sterować napięciem 12V. Dodam jeszcze ze gdy sterownik jest w spoczynku to wszystkie diody świecą, gdy zaczyna prace czyli powinien kolejno zapalać diody to one wtedy gasną

Portret użytkownika mirley

Re: LEDS

Musisz zanegować stany wpisywane do LEDS aby było odwrotnie

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika gosc

Matryca 4x6 led

Mam matryce 4 na 6 ledy steruje nią multi pleksowo tyl;ko mam pytanie czy da sie zrobić napis który bedzie sie przesuwać teraz zrobiłem to tak.

Tylko wyświetla sie M

                          $regfile = "attiny2313.dat"
$crystal = 100000
 
Config Portb = Output
Config Portd = Output
 
Dim A As Word
Dim I As Word
Dim Z As Word
Do
A = 0
Z = 5000
 
 
For I = 0 To Z
 '1
 Portb = &B00000001
 Portd = &B01000000
 Waitms A
 '2
 Portb = &B00000010
 Portd = &B01000000
 Waitms A
 '3
 Portb = &B00000100
 Portd = &B01000000
 Waitms A
 '4
 Portb = &B00001000
 Portd = &B01000000
 Waitms A
Next I
 
 
 
 
For I = 0 To Z
 '5
 Portb = &B00000001
 Portd = &B00100000
 Waitms A
 '6
 Portb = &B00000010
 Portd = &B00100000
 Waitms A
 '7
 Portb = &B00000100
 Portd = &B00100000
 Waitms A
 '8
 Portb = &B00001000
 Portd = &B00100000
 Waitms A
 '3
 Portb = &B00000100
 Portd = &B01000000
 Waitms A
 
Next I
 
 
 
For I = 0 To Z
 '9
 Portb = &B00000001
 Portd = &B00001000
 Waitms A
 '10
 Portb = &B00000010
 Portd = &B00001000
 Waitms A
 '11
 Portb = &B00000100
 Portd = &B00001000
 Waitms A
 '12
 Portb = &B00001000
 Portd = &B00001000
 Waitms A
 '7
 Portb = &B00000100
 Portd = &B00100000
 Waitms A
 '2
 Portb = &B00000010
 Portd = &B01000000
 Waitms A
Next I
 
For I = 0 To Z
 '13
 Portb = &B00000001
 Portd = &B00000100
 Waitms A
 '14
 Portb = &B00000010
 Portd = &B00000100
 Waitms A
 '15
 Portb = &B00000100
 Portd = &B00000100
 Waitms A
 '16
 Portb = &B00001000
 Portd = &B00000100
 Waitms A
  '11
 Portb = &B00000100
 Portd = &B00001000
 Waitms A
  '6
 Portb = &B00000010
 Portd = &B00100000
 Waitms A
 '3
 Portb = &B00000100
 Portd = &B01000000
 Waitms A
Next I
 
 
 
 
For I = 0 To Z
 '17
 Portb = &B00000001
 Portd = &B00000010
 Waitms A
 '18
 Portb = &B00000010
 Portd = &B00000010
 Waitms A
 '19
 Portb = &B00000100
 Portd = &B00000010
 Waitms A
 '20
 Portb = &B00001000
 Portd = &B00000010
 Waitms A
 '15
 Portb = &B00000100
 Portd = &B00000100
 Waitms A
 '10
 Portb = &B00000010
 Portd = &B00001000
 Waitms A
 '7
 Portb = &B00000100
 Portd = &B00100000
 Waitms A
 '1
 Portb = &B00000001
 Portd = &B01000000
 Waitms A
 '2
 Portb = &B00000010
 Portd = &B01000000
 Waitms A
 '3
 Portb = &B00000100
 Portd = &B01000000
 Waitms A
 '4
 Portb = &B00001000
 Portd = &B01000000
 Waitms A
Next I
 
 
 
 
Loop
End

Jak najlepiej ustawić "odświeżanie" znaczy żeby ledy nie mrugały na jakimś timerze?

Portret użytkownika mirley

Re: LED

Z mojej strony zrobił bym to w sposób prosty..... Trzeba zrobić pamięć, która zawiera informacje o całym wyświetlaczu, np w postaci tablicy kolum... rozumiem że masz 4 kolumny po 6 diod więc trzeba by zrobić tabicę 4 elementy byte..... Co 4m w timerze niezaleznie od reszty multipleksował bym tą pamięć, pierwszy element tablicy na pierwszą kolumnę led itd.

Co np 100ms nastąpiło by przesunięcie tablicy 2->1 3->2 4->3 a na 4 wpisywana jest nowa dana wyliczona w tym momencie....

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika gosc

matryca 4x6

mam 4 poziome rzedy po 6 diod.
niewiem jak z ta tablica mam zrobic bede dalej cos prubowal.

Portret użytkownika kretman4

Mam pytanie co do kodu na

Mam pytanie co do kodu na początku:

$regfile = "attiny2313.dat"
$crystal = 1000000
 
Config Portb = &B11111111 : Portb = &B11111111
Config Portd = &B11111111 : Portd = &B11111111
 
'Config Timer0 = Timer , Prescale = 8
'Enable Timer0 : On Timer0 Prztimer0 
'Enable Interrupts
 
Dim leds as word 'stan diod 
Dim licznik as byte
dim X as word
 
leds = &B0011111111111111 
 
Do
 Select Case Licznik
   Case 0:  leds = &B0011111111111111
   Case 1:  leds = &B0011111111111111
 end select
...
 X = leds mod 256
 portb = X
 X = leds /256
 portd = X
 
Loop
End

tutaj wykorzystuje 14 wyjść, czyli wszystko PB i PD, te dwa pierwsze przy "leds" są nie używane - to są wyjścia PA? trzeba coś dopisywać do kodu żeby z nich też korzystać? Czy wystarczy w części case włączać te piny?

Portret użytkownika gosc

Matryca 4x6 led

czytałem o tablicach ale to narazie czarna magia
prosze napisz kawałek kodu np taki tylko ze wykonywany z tablicy.

$regfile = "Attiny2313.dat"
$crystal = 1000000

Dim Seconds_count As Byte
Config Portb = Output '
Config Portd= Output '

Config Timer1 = Timer , Prescale = 64 , Clear Timer = 1

Compare1a = 15625
On Oc1a Oc1a_isr
Enable Compare1a

Enable Interrupts
Tcnt1 = 0

Dim C As Byte
Dim A As Byte
C = 0
A = 0
Do

If C = 0 Then
End If

If C = 1 Then
'1
Portb = &B00000001
Portd = &B00100000
Waitms A
Portb = 0
Portd = 0
End If

If C = 2 Then
'2
Portb = &B00000010
Portd = &B00100000
Waitms A
Portb = 0
Portd = 0
End If

If C = 3 Then
'1
Portb = &B00000001
Portd = &B00100000
'2
Waitms A
Portb = &B00000010
Waitms A
Portb = 0
Portd = 0
End If

Loop

End

Oc1a_isr:

Incr C
If C > 11 Then
C = 0

End If

Return

Portret użytkownika mirley

Re: porta

Zmienna Leds to zwykła zmienna.... ważne jest:

 X = leds mod 256
 portb = X
 X = leds /256
 portd = X
 
 porta.x = leds.15
 porta.y = leds.14 

gdzie dwie dodatkowe linijki przypiszą stan tej zmiennej na odpowiednie piny x i y portu A

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika gosc

Matryca 4x6 led

nadal mi nic to nie mówi :((

Portret użytkownika mirley

Tablice

Jak chcesz zrobić multipleksowanie z wykorzystaniem tablicy to najpierw trzeba zadeklarować tablicę i dodatkowe zmienne:

Dim Linia(4) as byte    'tablica 4 elementy, 4 linie wyświetlacza, bit 7 i 8 będzie niewykorzystany
Dim mux as byte
Dim x as byte

teraz w przerwaniu timera multiplesującego:

Timer_int:
 
incr Mux
if mux = 5 then Mux = 1
 
Portd = 255 'wyłącza wszystkie anody
Portb = Linia(mux)
X = mux -1
Portd.X = 0 'włącza konkretną linię
Return

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika gosc

Matryca 4x6 led

skopiowałem to do bascoma pokombinowałem troche ale nadal nic nie świeci

Tak dla jasności :)

Katody diod led mam podłączone do PB0, PB1,PB2 i PB3
Anody diod led są podłączone do PD0,PD1,PD2,PD3,PD4,PD5.
Co nam daje 24 ledy.

Portret użytkownika gosc

Matryca 4x6 led

nie dopisałem ze steruje nimi stanem wysokim bo Katody mam podłączone przez tranzystory.

Portret użytkownika mirley

RE: LED

Sprawdź czy wogóle coś świeci ustawiając stan wysoki na PD0 i stan wysoki na PB0. Powinna zawiecić dioda na skrzyżowaniu

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika gosc

Matryca 4x6 led

w Twoim programie nic nie świeci
a tak jak napiszę stan wysoki na PD0 i stan wysoki na PB0 to działa tylko nie wiem jak wprowadzić dane do tablic bo chce zrobić zegar binarny i nauczyć się wyświetlać multipleksowo ale brakuje mi pamięci w procku udało mi się tylko zrobić przesuwające się M i brakło miejsca a gdzie reszta wyrazu.