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

BASCOM: Błąd w kodzie z Nowego Elektronika - konfiguracja pinów i ADC

Damian.Gucio 01 Lis 2006 17:38 1985 9
REKLAMA
  • #1 3176688
    Damian.Gucio
    Poziom 12  
    Posty: 55
    Ocena: 6
    zamieszczam listing ktory przeklepalem zgazety Nowy elektronik:

    $regfile = "m8def.dat"
    $crystal = 800000
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.3 , Db6 = Portd.2 , Db7 = Portd.1 , E = Portd.5 , Rs = Portd.7
    Config Lcd = 16 * 2
    Config Adc = Single , Prescaler = Auto , Reference = Off
    Ddrb = &B00000000
    Ddrc = &B00000000
    Ddrd = &B10111110
    Portc.0 = 1
    Config Pinb.0 = Input
    Config Pinb.1 = Input
    Config Pinb.2 = Input
    Config Pinb.3 = Input
    Config Pinb.4 = Input
    Config Pinb.5 = Input
    Config Pinb.6 = Input
    Config Pinb.7 = Input
    Config Pinc.0 = Input
    Config Pinc.1 = Input
    Config Pinc.2 = Input
    Config Pinc.3 = Input
    Config Pinc.4 = Input
    Config Pinc.5 = Input
    Config Pinc.6 = Input
    Config Pind.0 = Input
    Config Pind.1 = Output
    Config Pind.2 = Output
    Config Pind.3 = Output
    Config Pind.4 = Output
    Config Pind.5 = Output
    Config Pind.6 = Input
    Config Pind.7 = Output
    S1 Alias Pinc.0
    Dim Adc1 As Word
    Dim Adc2 As Word
    Dim Adc3 As Word
    Dim Xadc1 As Byte
    Dim Xadc3 As Byte
    Dim Temp As Single
    Dim Rx As Single
    Dim Volt As String * 8
    Dim Amper As String * 8
    Dim Rx_mem As Byte
    Dim Xword As Word
    Dim Adj As Byte
    Start Adc
    Cursor Off
    Cls
    Lcd "Nowy ele"
    Locate 2 , 1
    Lcd "ktronik"
    Wait 1
    Cls
    Lcd " V & A "
    Locate 2 , 1
    Lcd " Meter"
    Wait 1
    Adj = 0
    Readeeprom Bajt , 3
    If Bajt = 128 Then
    Readeeprom Rx_mem , 1
    Readeeprom Bajt , 4
    Xadc1 = Bajt
    If Rx_mem < 70 Or Rx_mem > 130 Then
    Rx_mem = 100
    Writeeeprom Rx_mem , 1
    End If
    If Xadc1 > 10 Or Xadc3 > 10 Then
    Xadc1 = 0
    Xadc3 = 0
    Bajt = Xadc1
    Writeeeprom Bajt , 4
    Bajt = Xadc3
    Writeeeprom Bajt , 5
    End If
    Else
    Rx_mem = 100
    Writeeeprom Rx_mem , 1
    Xadc1 = 0
    Xadc3 = 0
    Bajt = Xadc1
    Writeeeprom Bajt , 4
    Bajt = Xadc3
    Writeeeprom Bajt , 5
    End If
    Rx_mem = Rx_mem / 1000
    If S1 = 0 Then
    Waitms 40
    Cls
    Lcd " Relase"
    Locate 2 , 1
    Lcd " Button"
    Do
    Loop Until S1 = 1
    Waitms 40
    Cls
    Lcd "Set Rx"
    Volt = Fusing(rx , "#.###")
    Locate 2 , 1
    Lcd Volt
    Do
    If S1 = 0 Then
    Readeeprom Bajt , 3

    If Bajt <> 128 Then
    Bajt = 128
    Writeeeprom Bajt , 3
    End If

    Waitms 40
    Rx = Rx + 0.001
    If Rx > 0.130 Then Rx = 0.070

    Temp = Rx * 1000
    Rx_mem = Round(temp)
    Writeeeprom Rx_mem , 1
    Rx = Rx_mem / 1000

    Volt = Fusing(rx , "#.###")
    Locate 2 , 1
    Lcd Volt

    Do
    Loop Until S1 = 1
    Waitms 40
    End If
    Loop
    End If
    Cls
    Do
    If S1 = 0 Then
    Waitms 40
    Cls
    Lcd " Relase"
    Locate 2 , 1
    Lcd " Button"
    Do
    Loop Until S1 = 1
    Waitms 40
    Cls
    Lcd " Adj"
    Locate 2 , 1
    Lcd "ust"
    Adj = 1
    Xadc1 = 0
    Xadc3 = 0
    Wait 1
    End If
    Xword = 0
    For Bajt = 0 To 49
    Adc1 = Getadc(2)
    Xword = Xword + Adc1
    Next Bajt
    Adc1 = Xword / Bajt
    If Adc1 >= Xadc1 Then Adc1 = Adc1 - Xadc1

    Xword = 0
    For Bajt = 0 To 49
    Adc2 = Getadc(1)
    Xword = Xword + Adc2
    Next Bajt
    Adc2 = Xword / Bajt

    Xword = 0
    For Bajt = 0 To 49
    Adc3 = Getadc(3)
    Xword = Xword + Adc3
    Next Bajt
    Adc3 = Xword / Bajt
    If Adc3 >= Xadc3 Then Adc3 = Adc3 - Xadc3
    If Adj = 1 Then
    Adj = 0

    Xadc1 = Adc1
    If Adc1 > 10 Then
    Cls
    Lcd " Adj E"
    Locate 2 , 1
    Lcd "rror 3"
    Wait 2
    Cls
    Else
    Bajt = Xadc3
    Writeeeprom Bajt , 5
    End If

    Bajt = 128
    Writeeeprom Bajt , 3
    End If
    If Adc1 < 1001 Then
    Temp = Adc1 / 100
    Volt = Fusing(temp , "#.##")
    Else
    Temp = Adc2 / 10
    Volt = Fusing(temp , "#.#")
    End If

    Temp = Adc3
    Temp = Temp / Rx
    Temp = Temp / 1000
    Amper = Fusing(temp , "#.##")
    Locate 1 , 1
    Lcd Volt ; "V "
    Locate 2 , 1
    Lcd Amper ; "A "
    Loop

    End

    co w nim jest nietak mam cala liste bledow :

    Error : 93 Line : 59 Variable not dimensioned [ 0-> 0] , in File : C:\DOCUMENTS AND SETTINGS\DAMIAN.XXX-A8F59D44F93\PULPIT\VA\VA.BAS
    Error : 31 Line : 59 Invalid datatype [ 0] , in File : C:\DOCUMENTS AND SETTINGS\DAMIAN.XXX-A8F59D44F93\PULPIT\VA\VA.BAS
    Error : 31 Line : 60 Invalid datatype , in File : C:\DOCUMENTS AND SETTINGS\DAMIAN.XXX-A8F59D44F93\PULPIT\VA\VA.BAS
    Error : 93 Line : 62 Variable not dimensioned [ 0-> 0] , in File : C:\DOCUMENTS AND SETTINGS\DAMIAN.XXX-A8F59D44F93\PULPIT\VA\VA.BAS
    Error : 31 Line : 62 Invalid datatype [ 0] , in File : C:\DOCUMENTS AND SETTINGS\DAMIAN.XXX-A8F59D44F93\PULPIT\VA\VA.BAS
    Error : 242 Line : 63 Source variable does not match the target variable [ 0] , in File : C:\DOCUMENTS AND SETTINGS\DAMIAN.XXX-A8F59D44F93\PULPIT\VA\VA.BAS
    Error : 46 Line : 71 Assignment error [BAJT: 0 XADC1: 2] , in File : C:\DOCUMENTS AND SETTINGS\DAMIAN.XXX-A8F59D44F93\PULPIT\VA\VA.BAS
    Error : 93 Line : 72 Variable not dimensioned [ 0-> 0] , in File : C:\DOCUMENTS AND SETTINGS\DAMIAN.XXX-A8F59D44F93\PULPIT\VA\VA.BAS
    Error : 31 Line : 72 Invalid datatype [ 0] , in File : C:\DOCUMENTS AND SETTINGS\DAMIAN.XXX-A8F59D44F93\PULPIT\VA\VA.BAS
    Error : 46 Line : 73 Assignment error [BAJT: 0 XADC3: 2] , in File : C:\DOCUMENTS AND SETTINGS\DAMIAN.XXX-A8F59D44F93\PULPIT\VA\VA.BAS
    Error : 93 Line : 74 Variable not dimensioned [ 0-> 0] , in File : C:\DOCUMENTS AND SETTINGS\DAMIAN.XXX-A8F59D44F93\PULPIT\VA\VA.BAS
    Error : 31 Line : 74 Invalid datatype [ 0] , in File : C:\DOCUMENTS AND SETTINGS\DAMIAN.XXX-A8F59D44F93\PULPIT\VA\VA.BAS
    Error : 7 Line : 0 IF THEN expected [ 74] , in File :
    Error : 123 Line : 0 END IF expected , in File :
    czy moglby mi ktos pomoc ? poprawic te bledy?
  • REKLAMA
  • #2 3177705
    cyberdar
    Poziom 31  
    Posty: 1465
    Pomógł: 161
    Ocena: 73
    Witam

    Podobne a właściwie takie same tematy były juz kiedyś poruszane na tym forum. Sęk w tym, że te listingi są właściwie nic nie warte. Najlepiej byłoby napisać wszystko od początku. Często jest tak, że (uważam celowo) zadeklarowano zmienne różnych typów aby nie mozna było zrealizować jakichś obliczeń albo dodano jakieś zmienne, które są w ogóle nie wykorzystane w programie (problem znam z autopsji).

    --
    pozdrawiam
  • REKLAMA
  • #3 3180579
    Damian.Gucio
    Poziom 12  
    Posty: 55
    Ocena: 6
    no wiem ale w tym problem ze ja jestem zielony w tym wszystkim i sam nienapisze programu czy niedaloby sie teg "poprawic" zeby dzialal???
  • REKLAMA
  • #4 3181230
    cyberdar
    Poziom 31  
    Posty: 1465
    Pomógł: 161
    Ocena: 73
    Witam

    Który to jest numer projketu i co to miało robić. Kilka gazet NE mam i mogę rzucić okiem w wolnej chwili.

    --
    pozdrawiam
  • #5 3185603
    Damian.Gucio
    Poziom 12  
    Posty: 55
    Ocena: 6
    wiec jest to Nowy Elektronik grudzień/styczeń 2004/2005
    i jest to zestaw 388-k Uniwersalny V/A do zasilaczy no chyba niemusze tlumaczyc do czego to sluzy
    dziekuje z gory za pomoc i zainteresowanie
  • #6 3194857
    Damian.Gucio
    Poziom 12  
    Posty: 55
    Ocena: 6
    nikt mi niepomoze?nikt sie na tym niezna??
  • #7 3200755
    eP
    Poziom 27  
    Posty: 797
    Pomógł: 115
    Ocena: 21
    Wydaje mi sie ze nie masz zdefiniowanej zmiennej BAJT w programie.

    Napraw to i postaraj sie okreslic do ktorych linii kodu odnosza sie pozostale komunikaty o bledach.
    Mozesz to robic w ten sposob ze wprowadzasz w poblize lokalizowanego wiersza z bledem inny wiersz zawierajacy jakis blad np. nazwe niezdefiniowanej zmiennej i porownujesz sobie listingi z bledami -gdzie sie zmienily numery wierszy i w ten sposob mozesz ustalic wiele wierszy ktore kompilator kwestionuje.
    Sa jednak tez takie bledy ktore trudniej zlokalizowac np. zakonczenie warunku end if lub procedury. Wtedy kompilator moze raportowac blad w zupelnie innym wierszu niz znajduje sie wiersz (lub powinien sie znajdowac) z wlasciwa zawartoscia

    pozdrawiam
  • #8 3205477
    Damian.Gucio
    Poziom 12  
    Posty: 55
    Ocena: 6
    a jak ja zdefinowac?? moglby mi ktos zobaczyc na ten listing i sprawdzic bo ja jestem zielony w tej dziedzinie
  • REKLAMA
  • #9 3207267
    eP
    Poziom 27  
    Posty: 797
    Pomógł: 115
    Ocena: 21
    Damian.Gucio napisał:
    a jak ja zdefinowac?? moglby mi ktos zobaczyc na ten listing i sprawdzic bo ja jestem zielony w tej dziedzinie


    Dim Bajt As Byte

    ale jezeli Kolega jest tak zielony że zmiennej nie jest w stanie sobie zadeklarować to moze lepiej nie zabierać sie za uruchamianie takich programów tylko zacząć po kolei czyli od podstaw ?
  • #10 3212122
    Damian.Gucio
    Poziom 12  
    Posty: 55
    Ocena: 6
    juz sobie poradzilem dzieki za pomoc wszystkim.
    temat uwazam za zakonczony sprzet dziala i jest ok :)

    Moderowany przez And:

    Temat zamykam,
    na przyszłość od dawna istnieje możliwosć samodzielnego zamykania tematów,
    poprostu klikamy ikonkę kłódki. BASCOM: Błąd w kodzie z Nowego Elektronika - konfiguracja pinów i ADC

Podsumowanie tematu

✨ Dyskusja dotyczy problemów z kodem BASCOM opublikowanym w czasopiśmie "Nowy Elektronik" (grudzień/styczeń 2004/2005), dotyczącym konfiguracji pinów i ADC dla mikrokontrolera ATmega8. Autor zamieścił listing programu do uniwersalnego miernika napięcia/prądu (projekt 388-k) i zgłaszał błędy kompilacji oraz trudności z deklaracją zmiennych, m.in. brak definicji zmiennej BAJT. Uczestnicy forum wskazali, że oryginalne listingi z gazet często zawierają błędy, nieużywane zmienne lub niepoprawne deklaracje, co utrudnia ich bezpośrednie użycie. Zalecano samodzielne pisanie kodu od podstaw lub dokładne lokalizowanie błędów kompilatora poprzez porównywanie numerów linii. Podano przykład poprawnej deklaracji zmiennej: "Dim Bajt As Byte". Autor ostatecznie poradził sobie z problemem i potwierdził poprawne działanie sprzętu.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA