Integer to nie jest zmienna tekstowa. Sprawdź w helpie jaki zakres ma ten typ zmiennej.
C znam troche, juz od paru lat staram sie przeskoczyc cos nie daje rady. W c integer jest 1 bajtowy i mam czujnik ktory podaje mi dawne w takiej postaci. Bascom ma zmienna integer ale 2 bajtowa i to ten problem. Teraz chcialem zrobic tak ze dane z czujnika beda zapisywane do zmiennej typu byte i pozniej bedzie to przeliczane czy to jest wartosc ujemna...
Pewnie za zmienna integer podstawiasz zmienna word
Witam, Mam pytanie... Jak zamienić zmienną Integer na Single w Bascom AVR?? Pytam, ponieważ muszę użyć funkcji: X = Fusing(ds1 , "#.##") a zmienna ds1 mam typu integer. Pozdrawiam A.
Dlaczego pokazuje -1 na wyświetlaczu a nie np 255 jak jest dla zmiennej typu Byte. Bo Integer to zmienna ze znakiem, FFFF to właśnie -1. Byte jest zmienną bez znaku (zawsze dodatnią). Dwubajtowa zmienna bez znaku to w Baskomie "Word". Na wyświetlaczu po resecie będzie wówczas 65535. 2. Czy taki zapis eeprom będzie poprawny przy pierwszym sprawdzeniu...
:) Komenda mod to taka reszta z dzielenia czyli: zmienna = liczba mod 4 zmienna - miejsce gdzie zostanie wpisana reszta z dzielenia liczba - zmienna która jest dzielona przez 4 (w miejsce 4 możesz wstawić inną liczbę lub zmienna) Dodatkowo w Bascomie są dwa rodzaje dzielenia znak / i \ pierwszy (/) używamy do dzielenia z resztą (w przypadku zmiennej...
Proponuję wprowadzić opóźnienie w pętli.
' Funkcja musi być zadeklarowana przed jej pierwszym użyciem ' ponieważ kompilator musi wiedzieć jaki jest rozmiar danych ' przesyłanych do funkcji i jaki jest jej typ wyniku ' Funkcja musi mieć zdefiniowany typ wyniku, tu Integer Declare Function Test(byval Liczba As Integer , Tekst As String) As Integer ' określenie byval przed nazwą oznacza,...
Ja bym zrobił to tak mam zmienną "a" typu single np potem dziele ją przez 10 a = a / 10 potem przepisuje ją do zmiennej typu np integer np "b" , ktora to automatycznie odcina, zostawia mi tylko liczby całkowite a potem znów mogę ją przepisać do a lub innej a = b zienną typu single można by potraktować tylko jako pomocniczą do obliczeń ale są zapewne...
Myślę, że jest to naturalne. Zmienna typu Long zajmuje 4 bajty a Integer tylko 2. Nie da się ciężarówki zaparkować w garażu dla malucha. W helpie jest informacja, że można dokonywać konwersji typów. Oto fragment: Dim I As Integer, S As Single S = 100.1 'przypisujemy liczbę zmiennoprzecinkową I = S 'ta instrukcja zmieni liczbę typu single na Integer...
Stwórz tablicę za pomocą: Dim Zmienna(5) As Byte 'lub Word, Integer, Long, Single, Double... Przed zapisem aktualnej wartości do Zmienna(1), przesuń wartości z 1, 2, 3, 4 o jeden indeks (na 2, 3, 4, 5). Pamiętaj aby zrobić to tak, by nie "zamazać" wartości przy przesuwaniu. Potem zapisujesz aktualną wartość do Zmienna(1) i masz komplet, który...
Nie zmienia, bo masz błąd w innym miejscu. Dokładnie to miałem na myśli-że błąd jest gdzieś indziej. Zastanów się, co oznacza nazwa trybu CTC (?) – w ang. jest to ‘Clear Timer on Compare’ (pol. - wyzeruj zawartość licznika/timera, gdy jego zawartość jest równa wyznaczonej z góry i ustalonej, bądź to wyliczonej jakiejś wartości w zmiennej...
zapis writeeeprom zmienna , adres odczyt readeeprom zmienna , adres Musisz pamiętać ile bajtów zajmuje zmienna którą zapisujesz i o taką wartość zwiększyć adres przy zapisie / odczycie następnej zmiennej Jeśli zmienne typu Byte , adres zwiększasz o 1 Jeśli zmienne typu Word , adres zwiększasz o 2 Jeśli zmienne typu Integer , adres zwiększasz o 2 Jeśli...
..i jak zadeklarować zmienną "Ile_wpisow", jezeli zmienna ta może osiągnąć większą wartość niż 255 ?? Integer ?
Usuń znaczek hash i nazwę zmiennej umieść w nawiasach klamrowych. Będzie odwołanie do pamięci, a nie ładowanie stałej. Oczywiście pisze o tym w pomocy, ale szukać się koledze nie chce. :bad-words: Można uzyskać dostęp do zmiennej umieszczając jej nazwę w nawiasach klamrowych { }. By mieć dostęp do bajtu MSB zmiennych Integer/Word, należy użyć formy:...
Mozna to zrobic tak : Wszystkie zmienne musza byc tego samego typu czyli integer zmienna początkowa to "liczba" tysiac= liczba/1000' wyswietlanie tysiecy sto = liczba Mod 1000 sto = sto / 100' wyswietlanie setek dziesiec = liczba Mod 100 dziesiec = dziesiec / 10' wyswietlanie dziesiatek jeden = liczba Mod 10 ' wyswietlanie jednosci
Przetwonnik zlicza napięcia tylko do 2047, pokazując ujemne napięcie nie ma znaku minus i wartość, tylko np 65320. Czyli przetwornik zwraca wyniki w kodzie U2. Tam nie ma znaku minus. Jest za to przesunięcie poziomu. Najprościej mówiąc, zastosowanie takiej funkcji do konwersji: Napiecie = Zmierz1 * 256 Napiecie = Napiecie + Zmierz2 da Ci złe wyniki....
Witam ponownie. W bascom-owskim helpie jest wzmianka iż zmienna (w Twoim przypadku Il) była typu INTEGER lub WORD. pozdrawiam.
$crystal = 14745600 Czy oprócz podłączenia takiego kwarcu ustawiłeś odpowiednie fuse bity? Następna rzecz to nie musisz robić resetu 1wire. Największy błąd polega na tym że nie czytałeś helpa bo gdybyś to zrobił to dowiedziałbyś się że zmienna do której zapisujesz ilość urządzeń koniecznie musi być typu WORD lub INTEGER. Na koniec radzę ci skorzystać...
Niestety za mało danych. Nie podałeś najważniejszego: częstotliwości kwarcu! Ponadto: - zmienna Wewn jakiego jest typu Integer/Word/Long? - zmienna Pin to typ Bit czy inny?
zdefiniuj zmienna jako integer lub long - w tym momencie nie pamietam bo popilem:)
inny pomysł A as integer (albo LONG ) for A = 1 to ....... ( dowolna wartość z zakresu integer / long ) wait 1 next pętla for ... next może być zawarta w oddzielnej procedurze
Hej! Zobaczcie jak ja to robię, może komuś sie to przyda: 'Powiedzmy ze zmienna Liczba(single) wynosi 22.62555426 Temp = Int(liczba) ' dzieki temu poleceniu odcinam czesc setna czyli ' zmiennej Temp(byte) przypisuje liczbę 22 Liczba = Frac(liczba) ' dzieki temu poleceniu odcinam czesc ' dziesiętną czyli zmiennej Liczba(single) przypisuje ' liczbe 0.62555426...
Jest to kod z Pana Wiązani być może nieudolnie przerobiony. Oryginał ma tak: Dim licz_8ms As Byte Incr Licz_8ms If Licz_8ms = 125 Then ............. I to działa, czyli ja nie mogę używać liczby stałoprzecinkowej . No dokładnie. To działa tylko dla Byte (i podobnych). Chociaż typ danych Single mówi, iz może przyjmować wartości stało i zmiennoprzcinkowe....
super , dziękii za pomoc , a jeszcze jedno pytanie: to samo , tylko , że z przypisana zmienną np potega "x" i wykonuje "x" * "x" Deklaracja (przed pierwszym użyciem w kodzie): Declare Function Potega( Byval X As Integer) As Integer Definicja (na końcu programu) Function Potega( Byval X As Integer) As Integer Potega = X...
Można użyć zmiennej jako adres, ale trzeba ją podstawić tam gdzie adres. A Ty podstawiasz tam gdzie dana. To po pierwsze. Po drugie zmienna adresu ma być typu Byte/Word/Integer a nie String.
Witam TEMP as integer If TEMP = X then cos tam If TEMP = Y then coś tam Przy czym X to TEMP minimalna , Y to max. Jesli zastosujesz zmienna typu integer to masz dwa warunki do okreslenia TEMP max i TEMP min. Pozdrawiam
Nie znam BASCOM'a Ilu bitowa jest zmienna typu integer? Czy przypadkiem nie 16 (bo tyle ma zwyczajowo przy implementacji na uC 8 bitowe, a takim jest włąsnie '51)? To jeżeli ma 16 bitów to jak chcesz do niej wpisać 131071? Jak chcesz mieć program zajmujący mało miejsca w pamięci to go napisz w asemblerze, w ostateczności w C.
Witam Mam następujący problem: używając polecenia $eeprom lub $eepromhex tworzę pliki z wartościami które chcę wgrać do eeprom problem jest w tym, że podczas kompilacji w tych plikach nie są zapisywane poprawnie wartości np 500 (zmienne integer). Po przejrzeniu skompilowanych plików widać, że zapisywany jest tylko młodszy bajt. Natomiast w samym programie...
Proponuje dodać dodatkową zmienną pomocniczą której zadaniem będzie pamiętanie że program zaczął działać nie jestem pewien tego rozwiązania z bascomem miałem doczynienia dość dawno temu ale możesz spróbować tego $regfile = "attiny25.dat" $crystal = 4000000 Config Portb.3 = Output 'przekażnik Config Portb.2 = Input 'włącznik typu microswitch...
Chodzi o to ze do zmiennej typu integer nie zapiszesz liczby zmiennoprzecinkowej. Co chcesz pozniej z ta zmienna robic?
to zmienna *10 i do integera nastepnie funkcja str i format fusing to jest to czego sie unika w bascomie ;)
cóż chylę czoło przed bascomem i odmiennością od C, jednak jakby nie patrzeć jeśli zacząć np. cykliczne powiększanie od najmniejszej wartości do największej wyjdzie na to samo czyli 65535 kolejnych operacji zwiększania :)
próbowałem tak: Właściwie to tez powinno działać bezproblemowo. Jeśli x większe od 500 wtedy sprawdza czy nie przekracza 5000. Jeśli tak to wychodzi z warunku i tyle... Może coś masz zamieszane z ta zmienna.... Nie może ona być typu Word lub Integer?
Jeśli chcesz wyświetlić bez miejsc po przecinku to rzutuj zmienną cisn na jakąś zmienna typu Integer lub Word. Zdefiniuj ją na przykład Dim cisn_int as integer i nastepnie napisz cisn_int= cisn I wyświetl bez fusing. Bascom to nie jest prymitywny język. Jest bardzo dobrym narzędziem do pisania nawet skomplikowanych programów.
Kod wydaje się sprawować prawidłowo. Przecinek jest względny. Operacje na zmiennych z przecinkiem są męczące dla mikrokontrolera. Jesli nie jest to konieczne to należy ich unikać. Zauważ że sam DS nie wysyła Single tylko Integer. Każda zmienna z jednym miejscem po przecinku pomnożona przez dziesięć da liczbę całkowitą. Tutaj przecinek jest "wirtualny"...
Może spróbuj przesunąć przecinek: zmienna x 10 lub 100 Wykonać obliczenia np na byte (jeśli wynik mniejszy od 255) lub na word/integer Potem z powrotem przesuń przecinek. Pozdrawiam.
$crystal = 8000000 'częstotliwość kwarcu $baud = 38400 Dim Zmienna As Byte , Zmienna2 As Integer Dim Ignorowane As Byte , Id As Byte , Dane As Byte Dim A As Byte , B As Byte 'Config Serialin = Buffered , Size = 20 Zmienna = 5 Do Waitms 500 Cls Lcd Id ; " " ; Dane ; " " ; Zmienna ; " " ; B Inputbin Id , Dane , Zmienna ,...
Witam, mam taki problem... ostatnio zacząłem uczyć się bascoma i teraz probuje go zmusic do tego, by z cyfr odczytanych z klawiatury matrycowej (zalozmy, ze przechowuje je np zmienna Cyfra typu Byte) stworzyc liczbe (np. Liczba typu Integer)... W C bym ja zapisal do tablicy i w odwrotnej kolejnosci pomnozyl przez kolejne potegi 10-ki a potem dodal......
Przepraszam że nie odpisuje ale mam sporo pracy. Przyjrzałem się programowi widzę że za dużo rzeczy robisz w przerwaniu od INT2. Procedurę "Oblicz" przerzuć do pętli głównej, uwarunkuj wejście do niej tym że nastąpiło przerwanie od INT2. Na koniec procedury "Oblicz" skasuj flagę od wejścia w przerwanie od INT2 i trzeba przeniesc tam zerowanie flagi...
' Trzy przyciski kolejno .... (TSA ;) ' wersja bez przerwań i Timera czas_a as integer ' zmienna czasowa A czas_b as integer czas_c as integer we_a alias pinx.1 ' wejście A we_b alias pinx.2 we_c alias pinx.3 wy_a alias Py.1 ' wyjście A wy_b alias Py.2 wy_c alias Py.3 stan_a as bit ' stan układu monostabilnego A: 0 - czeka, 1- liczy stan_b...
juz czesciowo wiem mam problem ze zrozumieniem tego: T = makeint ( Odczyt(1) , Odczyt(2) ) to chyba zamiana tych zmiennych na zmienna typu integer, nie wiem i to: T = abs(t) tego nie rozumie a zmienne odzczyt1 i odzczyt2 chyba moga byc typu byte
W bascomie i ASM trzeba najpierw ustalić gdzie znajduje się zmienna temperatury. Potem w bascomie użyć funkcji peek i poke(zajrzyj do helpa) Lepiej użyć w tym przypadku High() , Low() . Dim X As Integer Dim Xhigh As Byte , Xlow As Byte X = &H1122 Xhigh = High(x) Xlow = Low(x) End' zajmuje 78 bajtów i nie trzeba znać adresu zmiennej integer Dim X As...
Dim zmienna2 As Eram Integer At 10 Dim zmienna3 As Eram Integer At 20 Dim zmienna4 As Eram Integer At 30 Dim zmienna5 As Eram string * 10 At 40 dim zmienna as integer do gosub zapis gosub odczyt loop zapis: zmienna2 = zmienna return odczyt: zmienna=zmienna2 return zapis_text: zmienna5= " czesc " return i analogicznie odwrotnie......... na początek wystarczy,...
no i wiecie co się okazuje??? że bascom avr, w przeciwieństwie do 8051, nie umie łączyć zmiennych różnych typów u mnie zmienna przecinek byłą typu byte, wystarczyło ją zmienić na integer (czyli taki sam typ jak całości temperatury) i wszystko działa twórcy bascoma zrobili to chyba spejalnie, żeby zająć jak najwięcej miejsca w pamięci RAM :( :| dzięki...
Dodaj warunki po inkrementacji i dekrementacji Przy zwiększaniu IF LICZ > 2 THEN Licz=2 Przy zmniejszaniu IF LICZ < 1 THEN Licz=1 Tylko zmienna licz nie będzie typu integer, by nie było problemów przy sprawdzaniu warunku jeżeli Licz przypadkiem zejdzie poniżej zera.
1. a czy sprawdziłeś to co podałem Ci jako możliwe przyczyny? Bo moim skromnym zdaniem to jest powód problemów, i jestem skłonny dziwić się, czemu to zadziałało na mega32... 2. sprawdź sam timer, daj w nim np. za każdym razem zwiększanie zmiennej o 1 (np. utwórz dim zmienna as integer) i wyświetlanie jej na lcd - jeśli będzie się zmieniać to znaczy,...
Do konwersji łańcucha na zmienną numeryczną wykorzystaj funkcje VAL lub HEXVAL . Mając już adres zmiennej, możesz użyć instrukcje INP do pobrania wartości. [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 80 $swstack = 80 $framesize = 80 Declare Sub Show_byte(byref Adres As String) Declare Sub Show_word(byref Adres As String) Declare...
Kolego tera nie działa mi ustawianie godzin a zrobiłem to tak deklaracja:[syntax=vbnet] Declare Function Ustaw(byref Godziny As Byte , Byref Minuty As Byte , Sekundy As Byte) As Integer Declare Sub Znak(cyfra As Byte) 'deklaracja tablicy stałej do wyświetlania cyfr i znaków na wyświetlaczu 7 seg Declare Sub Czytaj 'deklaracja funkcji bez parametru do...
Program jest zle napisany. Jezeli deklarujesz zmienna(x), to w kodzie piszesz zmienna(x)= wartosc Albo poprostu zadeklaruj: Dim X As Eram Integer Dim Y As Eram Byte Dim X As Eram Integer Dim X2 As Integer Dim Y As Eram Byte Dim Y2 As Byte X = 9999 Y = 100 Readeeprom Y2 , Y Readeeprom X2 , X Print Y2 Print X2 Pobaw sie symulatorem w BASCOMIE. Do tego...
Witam!! Mam problem dotyczacy komendy WAIT!! Otoz zalezy mi aby czas czekania uC byl zadawany z zewnatrz..... w zwiazku z tym zastosowalem procedure: T1 Alias Pind.0 T2 Alias Pind.1 T3 Alias Pind.2 T4 Alias Pind.3 T5 Alias Pind.4 Sub Pobierz_czas T = 0 If T1 = 1 Then T = T + 1 If T2 = 1 Then T = T + 2 If T3 = 1 Then T = T + 3 If T4 = 1 Then T = T +...
Jeśli 1 bajt to A a 2 to B to trzeba je "skleić" poprzez MAKEINIT i następnie przesunąć o 4 bity w prawo. Dim Zmienna as Integer Zmienna = MAKEINT(B , A) Shift Zmienna, Right , 4 (Mam nadzieję, że nie pomyliłem zmiennych)
juz chyba rozumiem co jest grane po prostu drukuje ci 48 w dziesietnej a odbiera i pokazuje tobie w char bo dziesietnie 48 = char "0" w helpie masz jak zamienic char na dec. Dodano po 8 zmienna = STR( x ) gdzie: zmiennazmienna typu String do której wpisany będzie wynik działania funkcji, xdowolna zmienna lub stała, poddana konwersji. ________________________________________...
Przetestuj ten. Tak go poopisywałem, że aż mi się nie podoba :D [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 40 $swstack = 16 $framesize = 32 '# wyświetlacz Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Cls '# timer ' 8000000Hz(8MHz)/256(Prescaler)=...
Tak się dzieje jak stosujesz instrukcje Gosub, program idzie do procedury a tam znowu stosujesz Gosub i w tej na koncu nieszczęsne Retrurn. Program idzie w "krzaki" bo przepełniasz stosy i nadpisujesz w pamięci Ram zmienne. Poczytaj o procedurach i funkcjach w pomocy Bascoma, użyj Declare Sub a potem Sub: i END SUB. Stosuj też deklaracje ramki i stosu...
Zmieniłem typ zmiennej z Byte na Integer i działa :D A i mam jeszcze jedno pytanie. Spotkałem się ze zmienną WORD której wartości mieszczą się w granicach 0-65535. Nie jest to aby zmienna LONG ?
Witam ! Przesylam uartem sobie zmienna single(4bajty) a w drugim procku ją odbieram, dostaje 4 bajty ktore nie mam pojecia jak wbic do zmiennej single i jak to zrobic najszybciej. Probowalem uzywac SHIFT Zmienna, left ale dziala to tak jak powinno jedynie na zmiennych: byte, integer, word, long. bede wdzieczny za pomoc. Pozdrawiam !
No niestety BASCOM tak ma. Zdaje mi się że takie obliczenia kiedyś działały (operacje na integer a zwracanie wyniku do Byte). Widocznie od którejś nowej wersji już nie działają. No to będziesz musiał zrobić tak: [syntax=basic4gl]Dim Stopnie As Integer 'Stopnie musi być typu Integer Do Ds_i1 = 305 '************ Obliczenia temperatury Stopnie = Ds_i1...
Zamieniłem adresy i jest OK. Niestety zmienna musi być typu Byte ( próba zapisu typu Integer o wartości 266- po odczycie wyświetla 5 ), czyli zostaje pomysł z dodawaniem jest konieczny, ale się sprawdza, chyba, że ktoś ma inny.
Cześć, Przedstawiam problem: w poniższym programie, gdy nastąpi 2razy przerwanie INT0, to zmienna limit bedzie wynosić 400. Jeżeli zmienna minuty dojdzie do 400 powinno się zatrzymać. Jednak zmienna Minuty dochodzi tylko do 255 tak jakby była zadeklarowana jako Byte, a nie jako Long. Dlaczego? Zmienna Sekundy jeżeli się przestawi z 2 na mp 400 liczy...
Witam. Zadeklarowałem 10 elementową zmienną tablicową typu Integer. Do każdego wiersza w tablicy, zostaje przypisana odpowiednia wartość: np. zmienna(1) = 321 zmienna(2) = 692 itd... W jaki sposób mogę wskazać, który element tablicy ma największą wartość? Dla tablicy 10 elementów można rozpisać warunki If...Then, jednak dla tablicy zawierającej np....
... pytanie czy zmienna typu Word, poprawnie obsłuży odczyt z 1-wire i porównanie? W zakresie temperatur dodatnich, może być WORD, ale jako że DS1820 "koduje" wartość temperatury typem INTEGER, to takiego typu należałoby użyć.
$regfile = "m8def.dat" 'Procek ATMEGA8 $crystal = 1000000 '1MHz - Kwarc 1MHz Dim A As Integer Config Lcd = 16 * 2 Dim Zmienna As Bit Dim Setki As Integer Config Lcdpin = Pin , Db4 = Portb.6 , Db5 = Portb.7 , Db6 = Portd.5 , Db7 = Portd.7 , E = Portd.2 , Rs = Portd.0 Zmienna = 0 A = 0 Setki = 0 Cls Locate 1 , 1 Lcd "L " ; A Locate 2 , 1 Lcd "x100 " ;...
scal sobie te dwa bajty w jedna zmienna. T = Makeint(mbt , Sbt) T = T * 10 T = T / 16 Oczywiscie zmienna T jest typu integer W tym momencie masz liczbe 3 cyfrowa z ulamkiem ale bez kropki. Czyli 24,5 stC jest zapisane jako 245 Wystarczy odpowiednio powycinac cyferki do multipleksu wlaczyc kropke na wysiwetlaczach i gotowe.
Witam Chciałem przesłać wynik obliczeń który jest zmienną typu Integer. Ale wcześniej muszę do zmienić na Byte i wtedy dopiero mogę wysłać. Zmienna Integer jest z zakresu 990 - 1115 ( wartość ciśnienia ). W układzie odbiorczym muszę ją z powrotem złożyć ( do wyświetlania na LCD i zapisu na SD ). Próbowałem coś takiego: Dodano po 1 Już mam: [syntax=basic4gl]...
Witam ogarnąłem już dużo na temat programowania w bascom, tylko mam kolejny problem, mianowicie chciałbym zaprogramować obsługę serwa pilotem nadającym w RC5 lecz gdy połączę obsługę rc5 i serwa mam takie błędy i nic nie działa: Duplicate Label [_SYSTEM_TO_ISR Duplicate Label [_SYSTEM_TO_ISR_EXIT Pojedynczo programy działają ok. Rc5+ servo (nie działa)...
Jesli chodzi Ci o rozkladanie na setki, dziesiatki i jednosci to sprobuj tego: Dim Liczba As Integer Dim Pomocnicza As Integer Dim Setki As Byte Dim Dziesiatki As Byte Dim Jednosci As Byte Liczba = 852 Setki = Liczba / 100 Pomocnicza = Setki * 100 Liczba = Liczba - Pomocnicza Dziesiatki = Liczba / 10 Pomocnicza = Dziesiatki * 10 Liczba = Liczba - Pomocnicza...
Coś w tym stylu: zmienna i - integer zmienna lampy - tablica bool ze stanem lamp for i od 1 do 8: if lampy[i] == true: wyświetl "lampa nr i włączona" czekaj 2s Jeśli masz oczekiwanie zrobione na przerwaniach, to trzeba by coś takiego: przerwanie co 2s: do: i = i+1 while (lampy[i] != true) and (i<=8)...
Dziękuje bardzo. Teraz kompilator nie daje błędu. A Powiedz aby odebrać tą tablicę w urządzeniu odbiorczym deklaruje zmienną: [syntax=basic4gl]Dim Send(3) As Integer[/syntax] później odbieram ją po uart: [syntax=basic4gl]Inputbin Send(1),6[/syntax] 6 bo zmienna integer ma dwa bajty (tak pisze help) i później już wyłuskuje poszczególne zmienne z tablicy:...
Kurcze - ja niedlugo chce zaczac pisac prace inzynierska w C a tu widze, ze basic mi sprawia klopoty :) Zrobilem teraz tak, jak jest ponizej i dziwny objaw jest: Config Portb = &B11111111 Portb = &B11101111 Config Portd = &B1111100 Portd = &B1111111 Dim Temp1 As Byte , Ktory As Byte , Temp2 As Byte Dim Odczyt(2) As Integer , T As Integer...
Przetestuję i zobaczę, ale dla częstotliwości zegara taktującego atmegę równej 16MHz to powinno dość krótko chyba trwać. Zobaczę i zmierzę w praktyce. Szczerze mówiąc nie wiem, ile będzie trwało. Nie wiem też, jak to skompiluje Bascom. Najlepiej sprawdź. Tablicę można zrobić, tylko do tablicy nie mogę wpisywać wartości Single, a zmienna całkowita Integer...
No więc już pisze: 1) chcąc ułatwić pisanie wstawek jest w bascomie coś takiego: zamiast pisać adres zmiennej można napisać jej nazwe w nawiasie klamrowym. wszystko ok ułatwia to sprawe. Dim var As Bit SETB {var} Jest jedno ALE. spróbuj zadeklarować inną zmianną niż BIT lub BYTE. Przy odwołaniu do niej przez nawias kompilator nie wyświetki błędu tylko...
a czy to bedzie dzialac gdy do vv bede wpisywal zmienna ktora wczesniej sobie zadeklarowalem w programie ?? tz dim a as integer .... vv=a czy to musi bys bezposrednio z jakiejsc lini ? a i jeszcze jedna sprawa w jakim formacie te dane sa zapisywane bo pozniej chce je odczytywac na zwyklym PC o ile jest to mozliwe
Rozwiązałem ten program, błędy wynikały z mojej nieuwagi. Teraz mam problem z wyświetlaniem, próbuję korzystać z tego warunku, ale nic to nie daje: [syntax=vb] Dim Wart_int2 As Integer 'dosałem nową zmienną integer Wart_nap2 = Str(wart_int2) 'przepisałem zmienną Wart_nap2 string na zmienna Wart_int2 integer Case 1: Locate 1 , 1 Lcd " " ; Chr(5) ; "...
No tak :/ jeszcze jest Integer :D już mam, dla potomności: [syntax=basic4gl] Do 'Odbierz znak po znaku Kod = Inkey() Dane = Dane + Chr(kod) Port = Left(dane , 3) Stan = Right(dane , 4) Wartosc = Val(stan) Sprawdz = Val(stan) 'dodana zmienna Integer If Port = "red" Then Rgb = 1 If Port = "gre" Then Rgb = 2 If Port = "blu" Then Rgb = 3 'Zapisz w Dane...
Witam. Chciałbym zapytać o poprawność mojego kodu: $regfile = "m8def.dat" $crystal = 12000000 Config Servos = 1 , Servo1 = Portd.1 , Reload = 10 Config Portd = Output Enable Interrupts Dim Zmienna As Integer 'Nasze "odchylenie" serwa Zmienna = 150 'Czas trwania impulsu będzie wynosić 'Zmienna*Reload=1500us (1,5ms) Do Servo(1)...
Można wyświetlać temperaturę w podmenu "wybór_Ds" ale trzeba zmienić cały program. Chyba nie jest tak trudno zapisać sobie cztery ID czujników i wiedzieć później który gdzie przypisać. Najlepiej osobno podłączać każdy czujnik i na naklejce na kablu przy czujniki zapisać jego ID. Wiedząc gdzie jakie jest ID czujnika można już mu w podmenu przypisać odpowiednią...
teraz działa, ale jest inny problem Zmienna I2 jest zaokraglana do jedności i nic mi nie daja dzięsiate części stopnia chodź jest wyświetlana jedno miejsce po przecinku, tak wyglada wyświetlanie: I2 = I2 * 10 I2 = I2 / 16 If I2 > 0 Then Ss = Str(i2) Ss = Format(ss , " 0.0") Locate 1 , 9 Lcd Chr(2) ; Ss ; Chr(0)...
Witam Chciałem oprócz samej temperatury mieć również obliczoną średnią. Dane są w postaci bajtowej ( bajt dziesiątki/jednostki + bajt tego co po przecinku. Więc dodaje osobno wartości przed przecinkiem, osobna zmienna wartości po przecinku, mnożę pierwszy razy 10 i dodaje to co po przecinku, później dzielę przez dwa. Napisałem coś takiego: [syntax=vbnet]...
możesz użyć zmiennej tymczasowe do przechowania stanu pinu w przerwaniu i w następnym przerwaniu sprawdzać czy zmienna jest taka sama jak stan pinu czy nie, jesli jest inna to znaczy że pin zmienił stan. Spróbuj przy tym pokombinować skoro sam chcesz dojść do rozwiązania. Co do zerowania zmiennych to najprościej zrób tak zmienna=0 i masz ją wyzerowaną....
Dziękuję za odpowiedź. Czy mógłbyś napisać to samo ale z komentarzem do każdej linii ? Nie wiem, czy dobrze rozumiem idee Timera. Enable Interrupts ---- uruchamia przerwania Enable Timer0 ----- uruchamia Timer0 On Timer0 Przerwanie_co_1s ---- nazwa programu, który obsługuje przepełnienie timer0 Dim T1 as Integer ---- zmienna typu Integer dla pierwszego...
Witam Dziękuję za szybką odpowiedź. To może opiszę dokładnie. W programie mam zadeklarowaną zmienną(INTEGER). W toku działania programu z zewnątrz zostaje jej nadana wartość dziesiętna na przykład 1000 (tysiąc). Ja chcę, aby została ona potraktowana jako &H1000, czyli jako wartość podana w kodzie heksadecymalnym (rzeczywiście , potrzebuję tego do wyświetlania),...
W sumie z buforem to chciałem oszczędnie, jeśli chodzi o pamięć. Dane można wysyłać przez Printbin, a odebrać przez Inputbin. Nadając zmienną integer funkcją Printbin wysyłasz 2 bajty. Nagłówkiem może być jakiś bajt, nic nie przeszkadza żeby stworzyć sobie jakiś format przesyłania danych ;). nagłówek bajt X zmienna 1 long zmienna 2 word zmienna 3 byte...
A nie kłują Cię w oczy takie powtarzające się zapisy : "If Pind.0 = 0 And Pind.1 = 0 Then". Jeśli taki warunek występuje zawsze to powinieneś go zapisać raz na początku subów Up i Down, czyli każdą akcje ująć w tym jednym Ifie ;) Drugim nieoptymalnym rozwiązaniem jest porównywanie wartości Byte z Integer. Widzę dlaczego zmieniłeś zmienne dla kolorów...
...trwa ponad 20 sekund. Policzmy. 1 obieg pętli, to 63 takty * 250000 / 8MHz = 1.96875 S A skąd u Ciebie się wzięło 20 :?: Dalibóg ... wiem - zmienna Impulsy , to u Ciebie DOUBLE , a przecież wystarczy LONG lub inne rozwiązanie :-P Wystarczy word albo integer. $crystal = 8000000 Dim Impulsy As Word Impulsy = 25000 Do If Impulsy = 0 Then Exit Do End...
Witam! Moj problem polega na tym, ze program, ktory kompilowal sie bez problemu w wersji 1.11.8.5 (chyba cos takiego), nie kompiluje sie w wersji 1.11.9.8. Wywala takie bledy: Error : 213 Line : 223 String expected for assignment [STR(T)] , in File : L:\bascom\moje programy\TIDv3.2.bas Error : 31 Line : 223 Invalid...
Moze to glupie pytanie, ale czy jest mozliwosc podpiecia takiego zwyklego LCD z kalkulatora do procka 89C2051.....chodzi o to zeby byly uzywane dwie cyfry, chce zrobic taki prosciutki timer i program napisac w bascomie, przykladowo: dim a as integer dim b as integer for a=0 to 99 b=99-a wait 1 xxx next a end w polu xxx potrzebuje cos co wyswietli mi...
i ku memu zdziwieniu, na lcd wartosci pom1 i pom2 wzrastaja 'rownomiernie'(a w wedlug mnie tylko pom1 powinna pokazywac sie zwiekszana) nie wazne czy wywoluje gosub'em, call'em czy zwiekszam bezposrednio w ciele funkcji. Help wpomina o przekazywaniu parametrow przez adres wiec dlaczego Pom2 tez sie zwieksza ? No raczej niema w tym nic dziwnego, Pom1...
mam problem chcialem adresowac zewnetrzna pamiec eeprom komunikacja i2c (twi) sa tam 2 adresy ktore musza miec 8 bitow (1 byte) chcialem zrobic tak gdy adress2 przekroczy 255 to zwiekszy sie adress1 jak to zrobic? myslalem nad zrobieniem jednej zmiennej 16 bitowa (2 byte'y = 1 word) ktora bede dzieli na 2 czesci. ________________________________________...
Witam. czy ktoś może mi powiedzieć jak zrobić tablicę zapisywaną w pamięci programu pozwalającą na ładowanie więcej niż 256 bajtów. Chodzi mi o tablicę tego typu: B = Lookup(adres , dane) Dane: Data 0,1,2,3 .... potrzebuję taką tablice dość sporej długości ( kilka kilobajtów) dopóki zmienna adres zadeklarowana jest jako byte wszystko działa jak tylko...
W raporcie masz mapę zmiennych w SRAM. Sprawdź jaka zmienna lub string jest przed SS1. Jeżeli jest to string, to może za mało bajtów jest przydzielonych. ----------------------------------------... Variable Type Address(hex) Address(dec) ----------------------------------------...
zgodzę się z Cyberdarem że w opóźnieniu może być wartość (1..255) ale wielkiego błędu przez to nie bedzie i powinno dalej działać tyle że po prostu opóźnienie będzie krótsze (z 500 zrobi się 244 chyba), podobnie ma się sprawa z przypisaniem wyniku z dadego kanału do zmiennej long (4 bajty), tu zupełnie by wystarczyła zmienna integer, ale to nie będzie...
Analiza cudzego programu to koszmar :) Kilka uwag: - zmienne "leweprzod" i pozostałe daj typu WORD, ponieważ ADC zwraca wartość 0-1023, więc po co tam pakować Integer - zmienna A spokojnie jako BYTE - spróbuj użyć aliasów zamiast "reset portb.0" dajesz "reset lewyprzod", możesz wówczas zrezygnować ze zmiennych bitowych np. LP, bo to sobie odczytasz...
Witam Piszę program która ma przypominać o wydarzeniach w danych dniach roku Otrzymuje z rtc zmienne typu Dim Sekundy As Byte Dim Minuty As Byte Dim Godziny As Byte Dim Dzientygodnia As Byte Dim Dzien As Byte Dim Miesiac As Byte Dim Rok As Integer Mam pytanie jak scalić zmienne Dzien i Miesiac do formaty daty np. DD.MM ? Aby je później porównać z datą...
1) Możliwe że zmienna T ci się przepełnia, spróbuj ją zmienić z integer na word 2) Unikaj ułamków, np 23.58 lepiej wymnożyć przez 100, wykonać działania i na samym końcu podzielić przez 100 niż działać na przecinkach. Staraj się nie używać ujemnych liczb. 3) Zrób drugą wersję tego programu - przyklej z obecnego absolutne minimum i obserwuj działanie....
napisałem jak podałes , program skompilował sie ale nie działa :(:(:( mógłbys to sprawdzić czy cos nie pomyliłem :) do testów wystarczy by przełaczał sie co 2 sek i wyłaczał po 10 sek $crystal = 8000000 $regfile = "m8535.dat" Dim T1 As Integer ` czas zał /wył w sek Dim T2 As Integer ` czas całk w sek T1 = 2 ` zmienna zał/wył w sek T2 = 10` zmienna całk...
Witam Nie mam pomysłu jak wykonać warunek gdzie: "Jeżeli zmienna Temperatura ulegnie zmianie to przejdź do podprogramu Wyswietlanie" Chciałbym aby LCD był odświeżany tylko wtedy, gdy się zmieni temperatura. Zamieszczam kod jak to wygląda teraz $regfile = "m8def.dat" $crystal = 8000000 $hwstack = 32 ' default use 32 for the hardware stack $swstack...
Jest taka fajna funkcja MID tyle że działa na łańcuchach tekstowych. Czyli Twoją zmienną liczbę trzeba zamienić na zmienną tekstową. A następnie rozebrać na poszczególne kolejne pojedyncze cyfry. Przedstawia to poniższy program w Bascom'ie: Dim A As Integer Dim C As String * 1 Dim D As String * 1 Dim E As String * 1 Dim F As String * 1 Dim Z As String...
Może być tak: $regfile = "m32def.dat" $crystal = 8000000 Config Portc.0 = Output Config Portc.1 = Output Set Portd.5 Dim X As Integer Dim Y As Integer Dim Flaga_1 As Bit Declare Sub Program_1 Y = 100 '---------------------------------------... Do If Pind.5 = 0 Then Waitms 100 If Flaga_1 = 1 Then If X =...
Shift pozwala szybko dzielić lub mnożyć tylko przez kolejne potęgi dwójki czyli, żeby się nie rozpisywać ograniczę się do bajtu :2,4,8,16,32,64,128 i 256 Ten Shift tam nie musi zostać. Umieściłem go tam bo liczba przez którą Ty dzieliłeś była potegą dwójki :D Shift Zmienna, Right, 1 ' podzieli ją przez dwa Sgift Zmienna, Right, 4 ' podzieli ją przez...
zmienna integer integer bascom ujemne zmienna bascom
sonda hydrostatyczna satelita astra hotbird ustawić przetwornica xenon działać
Custom ROM na Qilive Q 3-24: Jak zainstalować? John Deere Sante - brak kontrolek i nie odpala