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

Błędy w programie wyświetlacza LED [BASCOM]

online77 10 Sty 2011 21:19 1473 4
REKLAMA
  • #1 8988039
    online77
    Poziom 10  
    Witam

    Przepisałem program tablicy świetlnej z wyświetlaczem matrycowym LED z książki "Programowanie mikrokontrolerow AVR w języku BASCOM" i wyskakuje sporo błędów, których nie potrafię skorygować. Jestem początkujący i myślałem, że z przepisaniem nie będzie problemów, tym bardziej, że poprzednio napisany program na ten wyświetlacz działał, ale jednak wystąpiły problemy. Wydaje się to troche dziwne, ponieważ jest to w końcu książka dla początkujących. Zamieszczam kod żródłowy, proszę o pomoc lub ewentualną korekcję.

    $regfile = "m8def.dat"
    $crystal = 8000000
    
    Config Pind.0 = Output
    Config Pind.1 = Output
    Config Pind.2 = Output
    Config Pind.3 = Output
    Config Pind.4 = Output
    Config Pind.5 = Output
    Config Pind.6 = Output
    Config Pinb.0 = Output
    Config Pinb.1 = Output
    Config Pinb.2 = Output
    Config Pinb.3 = Output
    Config Pinb.4 = Output
    Config Timer0 = Timer , Prescale = 256
    
    Declare Sub Tablica_sw(byval Tekst As String ,
                            Byval Szybkosc As Byte)
    
    Declare Sub Pobr_kol_z_tab
    Declare Sub Przepisz
    Declare Sub Wysl_zn
    
    On Timer0 Mult_wysw_matr
    
    Dim Znak As String * 1
    Dim Nr_kol As Byte
    Dim Kod_zn As Byte
    Dim Kol_zn As Byte
    Dim Kol(5) As Byte
    Dim I As Byte
    Dim J As Byte
    
    C1 Alias Portb.0
    C2 Alias Portb.1
    C3 Alias Portb.2
    C4 Alias Portb.3
    C5 Alias Portb.4
    
    Enable Interrupts
    Enable Timer0
    Load Timer0 , 94
    Do
        Tablica_sw "*Bascom AVR*" , 100
    Loop
    End
    Sub Tablica_sw(byval Tekst As String ,
                   Byval Szybkosc As Byte)
    
       Local D1 As Byte
       For I = 1 To 5
          Kol(i) = 255
       Next I
       D1 = 0 Len(tekst)
       For J = 1 To D1
          Znak = Mid(tekst , J , 1)
          Kod_zn = Asc(znak)
          For I = 1 To 5
             Call Pobr_kol_z_tab
             Waitms Szybkosc
             Call Przepisz
          Next I
          Kol(5) = 255
          Waitms Szybkosc
          Call Przepisz
       Next J
       For I = 1 To 4
          Kol(5) = 255
          Waitms Szybkosc
          Call Przepisz
       Next I
    End Sub
    Sub Pobr_kol_z_tab
       Select Case I
       Case 1:
          Kol(5) = Lookup(kod_zn , Kol1)
       Case 2:
          Kol(5) = Lookup(kod_zn , Kol2)
       Case 3:
          Kol(5) = Lookup(kod_zn , Kol3)
       Case 4:
          Kol(5) = Lookup(kod_zn , Kol4)
       Case 5:
          Kol(5) = Lookup(kod_zn , Kol5)
       End Select
    End Sub
    Sub Przepisz
       Kol(1) = Kol(2)
       Kol(2) = Kol(3)
       Kol(3) = Kol(4)
       Kol(4) = Kol(5)
    End Sub
    Sub Wysl_zn
       Select Case Nr_kol
       Case 0:
          Kol_zn = Kol(nr_kol + 1)
       Case 1:
          Kol_zn = Kol(nr_kol + 1)
       Case 2:
          Kol_zn = Kol(nr_kol + 1)
       Case 3:
          Kol_zn = Kol(nr_kol + 1)
       Case 4:
          Kol_zn = Kol(nr_kol + 1)
       End Select
       Portd = Portd And &B10000000
       Kol_zn = Kol_zn And &B01111111
       Portd = Portd Or Kol_zn
       End Sub
       Mult_wysw_matr:
          Load Timer0 , 94
          Set C1
          Set C2
          Set C3
          Set C4
          Set C5
          Call Wysl_zn
       Select Case Nr_kol
       Case 0:
          Reset C1
       Case 1:
          Reset C2
       Case 2:
          Reset C3
       Case 3:
          Reset C4
       Case 4:
          Reset C5
       End Select
       Incr Nr_kol
       If Nr_kol = 5 Then
          Nr_kol = 0
       End If
    Return
    
    Kol1:
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 107 , 109 , 29 , 73 , 127 ,
    Data 127 , 127 , 107 , 119 , 127 , 119 , 127 , 125 , 65 , 127 ,
    Data 94 , 61 , 115 , 13 , 97 , 127 , 73 , 79 , 127 , 127 , 119 ,
    Data 107 , 127 , 95 , 89 , 64 , 0 , 65 , 0 , 0 , 0 , 65 , 0 ,
    Data 127 , 125 , 0 , 0 , 0 , 0 , 65 , 0 , 65 , 0 , 78 , 63 , 1 ,
    Data 3 , 1 , 28 , 15 , 60 , 127 , 43 , 127 , 111 , 126 , 127 ,
    Data 125 , 0 , 113 , 113 , 113 , 119 , 103 , 0 , 127 , 125 , 0 ,
    Data 127 , 96 , 96 , 113 , 96 , 119 , 96 , 118 , 111 , 97 , 99 ,
    Data 97 , 110 , 103 , 110 , 127 , 127 , 127 , 119 , 119
    
    Kol2:
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 15 , 0 , 85 , 27 , 54 , 47 , 99 ,
    Data 62 , 119 , 119 , 122 , 119 , 124 , 123 , 58 , 94 , 60 , 62 ,
    Data 107 , 46 , 86 , 56 , 54 , 54 , 73 , 74 , 107 , 107 , 62 ,
    Data 63 , 54 , 59 , 54 , 62 , 62 , 54 , 55 , 62 , 119 , 62 , 126 ,
    Data 119 , 126 , 95 , 111 , 62 , 55 , 62 , 55 , 54 , 63 , 126 ,
    Data 125 , 126 , 107 , 119 , 58 , 0 , 75 , 62 , 95 , 126 , 63 ,
    Data 106 , 118 , 110 , 110 , 106 , 64 , 90 , 119 , 110 , 126 ,
    Data 123 , 62 , 111 , 119 , 110 , 107 , 107 , 119 , 106 , 1 ,
    Data 126 , 125 , 126 , 117 , 122 , 108 , 119 , 127 , 62 , 119 , 99
    
    Kol3:
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 6 , 127 , 107 , 0 , 119 , 42 , 31 , 93 ,
    Data 93 , 65 , 65 , 121 , 119 , 124 , 119 , 54 , 0 , 58 , 46 , 91 ,
    Data 46 , 54 , 55 , 54 , 54 , 73 , 73 , 93 , 107 , 93 , 58 , 48 ,
    Data 59 , 54 , 62 , 62 , 54 , 55 , 54 , 119 , 0 , 62 , 107 , 126 ,
    Data 103 , 119 , 62 , 55 , 58 , 51 , 54 , 0 , 126 , 126 , 113 ,
    Data 119 , 120 , 54 , 62 , 96 , 62 , 63 , 126 , 95 , 106 , 110 ,
    Data 110 , 110 , 106 , 55 , 90 , 111 , 32 , 110 , 117 , 0 , 115 ,
    Data 123 , 122 , 106 , 73 , 0 , 73 , 85 , 85
    
    Kol4:
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 15 , 0 , 85 , 108 , 93 , 127 , 62 ,
    Data 99 , 119 , 119 , 127 , 119 , 127 , 111 , 46 , 126 , 54 , 22 ,
    Data 0 , 46 , 54 , 47 , 54 , 53 , 127 , 127 , 62 , 107 , 107 , 55 ,
    Data 62 , 59 , 54 , 62 , 93 , 54 , 55 , 54 , 110 , 62 , 1 , 93 ,
    Data 126 , 95 , 123 , 62 , 55 , 61 , 53 , 54 , 63 , 126 , 125 , 126 ,
    Data 107 , 119 , 46 , 62 , 75 , 0 , 95 , 126 , 111 , 106 , 110 ,
    Data 110 , 118 , 106 , 63 , 90 , 111 , 126 , 33 , 110 , 126 , 111 ,
    Data 111 , 110 , 107 , 115 , 111 , 106 , 126 , 125 , 125 , 126 ,
    Data 117 , 122 , 102 , 62 , 127 , 119 , 99 , 119
    
    Kol5:
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 107 , 91 , 92 , 122 , 127 , 127 ,
    Data 127 , 107 , 119 , 127 , 119 , 127 , 95 , 65 , 127 , 78 , 57 ,
    Data 123 , 49 , 121 , 31 , 73 , 67 , 127 , 127 , 127 , 107 , 119 ,
    Data 79 , 65 , 64 , 73 , 93 , 99 , 62 , 63 , 80 , 0 , 127 , 63 , 62 ,
    Data 126 , 0 , 0 , 65 , 79 , 66 , 78 , 57 , 63 , 1 , 3 , 1 , 28 , 15 ,
    Data 30 , 127 , 43 , 127 , 111 , 126 , 127 , 112 , 113 , 125 , 0 ,
    Data 115 , 95 , 65 , 112 , 127 , 127 , 127 , 127 , 112 , 112 , 113 ,
    Data 119 , 96 , 119 , 125 , 125 , 96 , 99 , 97 , 110 , 97 , 110 ,
    Data 127 , 127 , 127 , 119 , 119
  • REKLAMA
  • #2 8988152
    Ture11
    Poziom 39  
    Spróbuj tego:
    wprowadziłem drobne zmiany, zły układ kiektórych nawiasów i jedno zero, które trafiło się chyba przypadkiem.

    $regfile = "m8def.dat"
    $crystal = 8000000
    
    Config Pind.0 = Output
    Config Pind.1 = Output
    Config Pind.2 = Output
    Config Pind.3 = Output
    Config Pind.4 = Output
    Config Pind.5 = Output
    Config Pind.6 = Output
    Config Pinb.0 = Output
    Config Pinb.1 = Output
    Config Pinb.2 = Output
    Config Pinb.3 = Output
    Config Pinb.4 = Output
    Config Timer0 = Timer , Prescale = 256
    
    Declare Sub Tablica_sw(byval Tekst As String , Byval Szybkosc As Byte)
    
    Declare Sub Pobr_kol_z_tab
    Declare Sub Przepisz
    Declare Sub Wysl_zn
    
    On Timer0 Mult_wysw_matr
    
    Dim Znak As String * 1
    Dim Nr_kol As Byte
    Dim Kod_zn As Byte
    Dim Kol_zn As Byte
    Dim Kol(5) As Byte
    Dim I As Byte
    Dim J As Byte
    
    C1 Alias Portb.0
    C2 Alias Portb.1
    C3 Alias Portb.2
    C4 Alias Portb.3
    C5 Alias Portb.4
    
    Enable Interrupts
    Enable Timer0
    Load Timer0 , 94
    Do
        Tablica_sw "*Bascom AVR*" , 100
    Loop
    End
    Sub Tablica_sw(byval Tekst As String , Byval Szybkosc As Byte)
    
       Local D1 As Byte
       For I = 1 To 5
          Kol(i) = 255
       Next I
       D1 =  Len(tekst)
       For J = 1 To D1
          Znak = Mid(tekst , J , 1)
          Kod_zn = Asc(znak)
          For I = 1 To 5
             Call Pobr_kol_z_tab
             Waitms Szybkosc
             Call Przepisz
          Next I
          Kol(5) = 255
          Waitms Szybkosc
          Call Przepisz
       Next J
       For I = 1 To 4
          Kol(5) = 255
          Waitms Szybkosc
          Call Przepisz
       Next I
    End Sub
    Sub Pobr_kol_z_tab
       Select Case I
       Case 1:
          Kol(5) = Lookup(kod_zn , Kol1)
       Case 2:
          Kol(5) = Lookup(kod_zn , Kol2)
       Case 3:
          Kol(5) = Lookup(kod_zn , Kol3)
       Case 4:
          Kol(5) = Lookup(kod_zn , Kol4)
       Case 5:
          Kol(5) = Lookup(kod_zn , Kol5)
       End Select
    End Sub
    Sub Przepisz
       Kol(1) = Kol(2)
       Kol(2) = Kol(3)
       Kol(3) = Kol(4)
       Kol(4) = Kol(5)
    End Sub
    Sub Wysl_zn
       Select Case Nr_kol
       Case 0:
          Kol_zn = Kol(nr_kol + 1)
       Case 1:
          Kol_zn = Kol(nr_kol + 1)
       Case 2:
          Kol_zn = Kol(nr_kol + 1)
       Case 3:
          Kol_zn = Kol(nr_kol + 1)
       Case 4:
          Kol_zn = Kol(nr_kol + 1)
       End Select
       Portd = Portd And &B10000000
       Kol_zn = Kol_zn And &B01111111
       Portd = Portd Or Kol_zn
       End Sub
       Mult_wysw_matr:
          Load Timer0 , 94
          Set C1
          Set C2
          Set C3
          Set C4
          Set C5
          Call Wysl_zn
       Select Case Nr_kol
       Case 0:
          Reset C1
       Case 1:
          Reset C2
       Case 2:
          Reset C3
       Case 3:
          Reset C4
       Case 4:
          Reset C5
       End Select
       Incr Nr_kol
       If Nr_kol = 5 Then
          Nr_kol = 0
       End If
    Return
    
    Kol1:
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 107 , 109 , 29 , 73 , 127 ,
    Data 127 , 127 , 107 , 119 , 127 , 119 , 127 , 125 , 65 , 127 ,
    Data 94 , 61 , 115 , 13 , 97 , 127 , 73 , 79 , 127 , 127 , 119 ,
    Data 107 , 127 , 95 , 89 , 64 , 0 , 65 , 0 , 0 , 0 , 65 , 0 ,
    Data 127 , 125 , 0 , 0 , 0 , 0 , 65 , 0 , 65 , 0 , 78 , 63 , 1 ,
    Data 3 , 1 , 28 , 15 , 60 , 127 , 43 , 127 , 111 , 126 , 127 ,
    Data 125 , 0 , 113 , 113 , 113 , 119 , 103 , 0 , 127 , 125 , 0 ,
    Data 127 , 96 , 96 , 113 , 96 , 119 , 96 , 118 , 111 , 97 , 99 ,
    Data 97 , 110 , 103 , 110 , 127 , 127 , 127 , 119 , 119
    
    Kol2:
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 15 , 0 , 85 , 27 , 54 , 47 , 99 ,
    Data 62 , 119 , 119 , 122 , 119 , 124 , 123 , 58 , 94 , 60 , 62 ,
    Data 107 , 46 , 86 , 56 , 54 , 54 , 73 , 74 , 107 , 107 , 62 ,
    Data 63 , 54 , 59 , 54 , 62 , 62 , 54 , 55 , 62 , 119 , 62 , 126 ,
    Data 119 , 126 , 95 , 111 , 62 , 55 , 62 , 55 , 54 , 63 , 126 ,
    Data 125 , 126 , 107 , 119 , 58 , 0 , 75 , 62 , 95 , 126 , 63 ,
    Data 106 , 118 , 110 , 110 , 106 , 64 , 90 , 119 , 110 , 126 ,
    Data 123 , 62 , 111 , 119 , 110 , 107 , 107 , 119 , 106 , 1 ,
    Data 126 , 125 , 126 , 117 , 122 , 108 , 119 , 127 , 62 , 119 , 99
    
    Kol3:
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 6 , 127 , 107 , 0 , 119 , 42 , 31 , 93 ,
    Data 93 , 65 , 65 , 121 , 119 , 124 , 119 , 54 , 0 , 58 , 46 , 91 ,
    Data 46 , 54 , 55 , 54 , 54 , 73 , 73 , 93 , 107 , 93 , 58 , 48 ,
    Data 59 , 54 , 62 , 62 , 54 , 55 , 54 , 119 , 0 , 62 , 107 , 126 ,
    Data 103 , 119 , 62 , 55 , 58 , 51 , 54 , 0 , 126 , 126 , 113 ,
    Data 119 , 120 , 54 , 62 , 96 , 62 , 63 , 126 , 95 , 106 , 110 ,
    Data 110 , 110 , 106 , 55 , 90 , 111 , 32 , 110 , 117 , 0 , 115 ,
    Data 123 , 122 , 106 , 73 , 0 , 73 , 85 , 85
    
    Kol4:
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 15 , 0 , 85 , 108 , 93 , 127 , 62 ,
    Data 99 , 119 , 119 , 127 , 119 , 127 , 111 , 46 , 126 , 54 , 22 ,
    Data 0 , 46 , 54 , 47 , 54 , 53 , 127 , 127 , 62 , 107 , 107 , 55 ,
    Data 62 , 59 , 54 , 62 , 93 , 54 , 55 , 54 , 110 , 62 , 1 , 93 ,
    Data 126 , 95 , 123 , 62 , 55 , 61 , 53 , 54 , 63 , 126 , 125 , 126 ,
    Data 107 , 119 , 46 , 62 , 75 , 0 , 95 , 126 , 111 , 106 , 110 ,
    Data 110 , 118 , 106 , 63 , 90 , 111 , 126 , 33 , 110 , 126 , 111 ,
    Data 111 , 110 , 107 , 115 , 111 , 106 , 126 , 125 , 125 , 126 ,
    Data 117 , 122 , 102 , 62 , 127 , 119 , 99 , 119
    
    Kol5:
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 ,
    Data 127 , 127 , 127 , 127 , 127 , 107 , 91 , 92 , 122 , 127 , 127 ,
    Data 127 , 107 , 119 , 127 , 119 , 127 , 95 , 65 , 127 , 78 , 57 ,
    Data 123 , 49 , 121 , 31 , 73 , 67 , 127 , 127 , 127 , 107 , 119 ,
    Data 79 , 65 , 64 , 73 , 93 , 99 , 62 , 63 , 80 , 0 , 127 , 63 , 62 ,
    Data 126 , 0 , 0 , 65 , 79 , 66 , 78 , 57 , 63 , 1 , 3 , 1 , 28 , 15 ,
    Data 30 , 127 , 43 , 127 , 111 , 126 , 127 , 112 , 113 , 125 , 0 ,
    Data 115 , 95 , 65 , 112 , 127 , 127 , 127 , 127 , 112 , 112 , 113 ,
    Data 119 , 96 , 119 , 125 , 125 , 96 , 99 , 97 , 110 , 97 , 110 ,
    Data 127 , 127 , 127 , 119 , 119


    program dał się skompilować.

    Na przyszłość, jak masz błąd, to kliknij na niego dwa razy, to program Ci go wskaże :-)


    Pozdrawiam.
  • REKLAMA
  • #3 8988318
    online77
    Poziom 10  
    Niestety po podłączeniu następuje krótkie mignięcie całej matrycy (5x7). A jak znaleźć błąd to wiem tylko doświadczenia w tym temacie tyle, że i tak nie potrafie tego naprawić mimo licznych prób ;p
  • REKLAMA
  • #5 8989136
    online77
    Poziom 10  
    Super dzięki, teraz już muszę do tego dojść.
REKLAMA