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

Listing 8.7 bascom Problem

martheew 26 Gru 2009 19:13 1249 5
REKLAMA
  • #1 7438716
    martheew
    Poziom 11  
    Witam chciałem uruchomić program z Książki do Bascoma AVR listingu 8.7 a jestem nowy w te klocki przepisane jest idealnie i wywala mi błąd przy kompilacji mógłby mi ktoś zerknąć na to co jest tronfem POZDRAWIAM :)
    Listing 8.7 bascom Problem

    
    $regfile = "m8def.dat"
    
    $crystal = 1000000
    
    Config Portd = Output
    Config Pinb.0 = Output
    Config Pinb.1 = Output
    Config Pinb.2 = Output
    Config Pinb.3 = Output
    Config Timer0 = Timer , Prescale = 256
    
    
    Declare Sub Pobr_znaku(cyfra As Byte)
    
    On Timer0 Mult_wysw
    
    
    Dim A As Byte , B As Byte , C As Byte , D As Byte
    
    Dim Nr_wysw As Byte
    
    Dim Kr1 As Bit , Kr2 As Bit , Kr3 As Bit , Kr4 As Bit
    
    Dim Wart As Byte
    
    W1 Alias Portb.0
    W2 Alias Portb.1
    W3 Alias Portb.2
    W4 Alias Portb.3
    
    Enable Interrupts
    
    Enable Timer0
    
    Load Timer0 , 125
    
    Do
    A = 1
    
    B = 2
    
    C = 8
    
    D = 9
    
    Set Kr2
    
    Set Kr4
    
    Wait 5
    D = 10
    
    C = 10
    
    Reset Kr4
    
    Reset Kr2
    
    Wait 5
    Wart = 35
    
    
    Wart = Makebcd(wart)
    
    
    A = Wart And &B00001111
    
    
    
    Shift Wart , Right , 4
    
    
    B = Wart
    
    Wait 5
    Loop
    End
    
    Sub Porb_znaku(cyfra As Byte)
    
    If Cyfra < 10 Then
    
    Portd = Lookup(cyfra , Kody7seg )
    
    Else
    Portd = 0
    
    End If
    End Sub
    
    
    Mult_wysw:
    Load Timer0 , 125
    
    Set W1
    Set W2
    Set W3
    Set W4
    Select Case Nr_wysw
    
    Case 0:
    Cal Pobr_znaku(a)
    
    Portd.7 = Kr1
    
    
    Reset W1
    Case 1:
    Call Pobr_znaku(b)
    
    Portd.7 = Kr2
    
    Reset W2
    Case 2:
    Call Pobr_znaku(c)
    
    Portd.7 = Kr3
    
    Reset W3
    Case 3:
    Call Pobr_znaku(d)
    
    Portd.7 = Kr4
    
    Reset W4
    
    End Select
    Incr Nr_wysw
    
    If Nr_wysw = 4 Then
    
    Nr_wysw = 0
    End If
    Return
    
    Kody7seg:
    
    'Kody cyfr
    Data &B00111111 , &B00000110 , &B01011011 , &B01001111 , &B01100110
    Data &B01101101 , &B01111101 , &B00000111 , &B01111111 , &B01101111
    
  • REKLAMA
  • REKLAMA
  • #3 7438759
    martheew
    Poziom 11  
    tak widzę ale gdzie to mam zmienić bo jakaś zaćma ze się tak wyrażę :(

    Dodano po 2 [minuty]:

    Były kolega taki miły zmienić kod i wkleić go bez błędu naprawdę będę wdzięczny

    Dodano po 42 [sekundy]:

    bo naprawdę nie widzę gdzie te błędy są
  • REKLAMA
  • #4 7438794
    Wojtek75
    Poziom 24  
    A niech tam święta są :)
    prosze:
    $regfile = "m8def.dat"
    
    $crystal = 1000000
    
    Config Portd = Output
    Config Pinb.0 = Output
    Config Pinb.1 = Output
    Config Pinb.2 = Output
    Config Pinb.3 = Output
    Config Timer0 = Timer , Prescale = 256
    
    
    Declare Sub Pobr_znaku(cyfra As Byte)
    
    On Timer0 Mult_wysw
    
    
    Dim A As Byte , B As Byte , C As Byte , D As Byte
    
    Dim Nr_wysw As Byte
    
    Dim Kr1 As Bit , Kr2 As Bit , Kr3 As Bit , Kr4 As Bit
    
    Dim Wart As Byte
    
    W1 Alias Portb.0
    W2 Alias Portb.1
    W3 Alias Portb.2
    W4 Alias Portb.3
    
    Enable Interrupts
    
    Enable Timer0
    
    Load Timer0 , 125
    
    Do
    A = 1
    
    B = 2
    
    C = 8
    
    D = 9
    
    Set Kr2
    
    Set Kr4
    
    Wait 5
    D = 10
    
    C = 10
    
    Reset Kr4
    
    Reset Kr2
    
    Wait 5
    Wart = 35
    
    
    Wart = Makebcd(wart)
    
    
    A = Wart And &B00001111
    
    
    
    Shift Wart , Right , 4
    
    
    B = Wart
    
    Wait 5
    Loop
    End
    
    Sub Pobr_znaku(cyfra As Byte)
    
    If Cyfra < 10 Then
    
    Portd = Lookup(cyfra , Kody7seg )
    
    Else
    Portd = 0
    
    End If
    End Sub
    
    
    Mult_wysw:
    Load Timer0 , 125
    
    Set W1
    Set W2
    Set W3
    Set W4
    Select Case Nr_wysw
    
    Case 0:
    Call Pobr_znaku(a)
    
    Portd.7 = Kr1
    
    
    Reset W1
    Case 1:
    Call Pobr_znaku(b)
    
    Portd.7 = Kr2
    
    Reset W2
    Case 2:
    Call Pobr_znaku(c)
    
    Portd.7 = Kr3
    
    Reset W3
    Case 3:
    Call Pobr_znaku(d)
    
    Portd.7 = Kr4
    
    Reset W4
    
    End Select
    Incr Nr_wysw
    
    If Nr_wysw = 4 Then
    
    Nr_wysw = 0
    End If
    Return
    
    Kody7seg:
    
    'Kody cyfr
    Data &B00111111 , &B00000110 , &B01011011 , &B01001111 , &B01100110
    Data &B01101101 , &B01111101 , &B00000111 , &B01111111 , &B01101111
  • REKLAMA
  • #5 7438798
    Fredy
    Poziom 27  
    No już chyba bardziej podane na tacy nie możesz mieć.
    Nie widzisz że masz literówki ?
  • #6 7438800
    martheew
    Poziom 11  
    dziękuje ci bardzo temat zamykam
REKLAMA