Ściagnij sobie jeden z tych plików pomocy, uruchom, wybierz indeks wpisz "dim" klinij wyświetl i tyle, prościej sie nie da :) Dodano po 5 Sorry kolego, dim to nie tablica tylko deklaracja zmiennej, przepraszam za wprowadzenie w błąd Dodano po 6 teraz się temu przyjrzałem i okazuje się że dobrze pamietam. Dim moze być deklaracja singlowej zmiennej bądź...
... BASCOM nie obsluguje tablic bitow... Bascom-AVR obsługuje tablice bitów , jednak z pewnymi ograniczeniami a)Tablica nie większa niż 256 bitów. b)index/numer bitu , MUSI być zmienną , choć właściwie niekoniecznie MUSI :D Piotrek
W Bascomie tylko tablice jednowymiarowe, ale możesz przeszukiwać je z przesunięciem. Pamiętaj o dostępnej pamięci, bo tablica 10000 pozycji pewnie nie wejdzie w up... Pocztaj jeszcze o strukturze DATA.
Toż Ci piszę, że tablice wielowymiarowe to abstrakcja - i tak są mapowane do tablic 1W (wektorów). Wektor o długości 16 elementów, możesz równie dobrze traktować jako tablicę 2W o wymiarach 4 x 4 - wzór na przeliczenie indeksów 2W na 1W podałem w poprzednim poście. Dim Tablica(16) As Byte Dim X As Byte Dim Y As Byte Dim N As Byte Dim I As Integer...
Kwarc wstaw w obu przypadkach nawet 16MHz. Baudrate jest zależna w zasadzie od jego dzielnika niż od kwarcu. Nie szalej też z dużą szybkością bo błędy mogą wyskoczyć, zacznij od 4800 bps. Połączenie po UART masz zrobić sprzętowo! Timer niech ci obsługuje multiplexing, główna pętla programu sprawdzanie czy w UART coś przyszło i przepisywanie do tablicy....
nie wiem po co ci takie cos.... ja bym zrobil tablice dim tablica(16) as integer tablica(1)=11 'to co ma sie pojawic zamiast 1 tablica(2)=22 tablica(3)=33 B = Getkbd() a wywolywac np.tablica(B) i przypisywac do C. no nie wiem,chyba tak ... pozdrawiam
dim urx_bufor(5) as byte dim urx_licznik as byte dim urx_odebrano as bit ... urx_licznik=1 'to jest potrzebne dla bascom'a bo tablice zaczynaja sie od 1 a nie 0 enable interrupts ... przerwanie_urx: if urx_licznik<5 then urx_bufor(urx_licznik)=udr incr urx_licznik end if if udr=13 then set urx_odebrano 'odebano ENTER if udr='T'...
Tworzysz zmienną sting * 20 i tworzysz tablice byte(20) adresujesz je tak samo i poleceniem lcd chr(byte(a)) stawiasz znak z wybranego miejsca ze stinga.
Coś w ten deseń chociaż żeby to przetłumaczyć toczka w toczkę to najlepiej by było użyć Config Base = 0. Wtedy tablice mogą się zaczynać od indeksu zero czyli można by wpisywać do Delays(0) - Delays(Steps-1) a tak tego nie masz. Tutaj może nawet nie jest potrzebny warunek If I > 1 bo to chyba w Arduino jest po to by nie było mnożenia I * 4 + 1 bo...
Jak nie rozumiesz całości to ciężko będzie to tak w kawałkach tłumaczyć bo w drugiej funkcji jest wskaźnik na tablice z danymi. Trzeba pobrać adres tych danych u Ciebie i trudno się wypowiadać nie widząc całości. Mam dużo swoich spaw i też nie bardzo mam czas się oderwać. Najlepiej ściągnij jakąś biblioteke do obsługi LCD z Forum Bascom i zobacz jak...
To działa! No i mówiłem. W pliku mają być krzaki!!! ;) Jak i czym przerobiłeś dane? Nie uwierzysz. BASCOMem. BASCOM skompilował to, czyli przerobił dane testowe na binarne (oczywiście po małych przeróbkach to skompilował). A Ty wiesz jak możesz zrobić? Umieść tą tablice w programie. Skompilować program. I w pliku BIN (nie HEX!) odnaleźć ten fragment....
http://obrazki.elektroda.pl/4630645200_1... Witam Jako że od długiego czasu czytam to forum i korzystam z informacji na nim zawartych postanowiłem dodać też coś od siebie. Oto jedna z moich wielu konstrukcji (mam w planie zamieścić ich tutaj nieco więcej). Z przyjemnością prezentuję animowana tablice reklamową LED. Postaram się kolejno...
no i nadal nie wiem..... napisałem program: dim wyj as byte do wyj=lookup(X,tabela) loop end tabela: data 0,1,2,3,4,5,6,7,8,9 return i pod X wstawiałem kolejne liczby, kompilowałem, i symulowałem i wychodzi mi tak... f(0)=8 f(1)=149 f(2)=0 f(3)=1 f(4)=2 f(5)=3 f(6)=4 f(7)=5 f(8)=6 f(9)=7 i nie wiem dlaczego tak sie dzieje :/
Najprościej skorzystać z gotowych funkcji. W Bascomie 51 jest funkcja MAX. Działa ona na zmiennych typu Byte. W Bascomie AVR funkcja ta działa na zmiennych Word. Więcej info w helpie do Bascom-a. Jeśli musi to być koniecznie Integer, można zastosować jakąś konwersję typu Word na Integer lub napisanie własnej funkcji, co nie powinno być trudne.
Można sprawdzać czy string zawiera "+CCLK:" [syntax=vbnet]Helpb = Instr(Somestring , "+CCLK:") If Helpb > 0 Then Helpb = Helpb + 6 Helpstr = Mid(Somestring , Helpb) 'odetnij +CCLK: End If[/syntax] Potem w samym stringu mozna szukać spacji lub przecinka poprzez CHARPOS i sprawdzać czy > 0 albo zrobić tablice stringów i na tym SPLIT dzieląc przecinkiem...
(...) ' 5 Data 250 ' 6 Data 131 ' 7 Data 251 ' 8 Data 219 ' 9 Wstępna ocena dostępnych informacji W kodzie widzimy dwa liczniki (Liczba_ok i Liczba_nok) zadeklarowane jako zmienne typu Word, a także tablice na cyfry (Cyfra_ok i Cyfra_nok) jako typ Byte. Z punktu widzenia zakresu wartości samych liczników (od 0 do 999) nie powinno to powodować błędów...
Tablice najlatwiej porównać bezpośrednio. Z tego co mi wiadomo to to nie można liczyć wyznacznika z tablicy do tego potrzebna jest macierz kwadratowa a tablica na pewno nią nie jest. Jeśli sprecyzujesz problem dokładnie to mogę Ci napisać funkcje ale w C przerobienie jej na BASCOM'a nie powinno być trudne
Witam. if a() = b() then jakieś tam instrukcje end if Taki warunek porówna tylko pierwsze elementy tablicy.
W zasadzie nie znam Bascom-a, ale podejrzanie wygląda mi to, że argument Segment tej funkcji nie jest zadeklarowany jako tablica, a jednak odwołujesz się do niego jako tablicy.
Nadeszła chyba pora zapoznać się , z Bascom-owym helpem :D Dim Adres As Word Dim Pozycja As Byte Do For Pozycja = 0 To 5 Adres = Lookup(pozycja , Tablica) Next Loop Tablica: Data 1% , 10% , 100% , 1000% , 10000% , 65535% Teraz będzie dobrze :?: Piotrek
Specjalnej funkcji to nie ma, ale nic nie stoi na przeszkodzie napisać kilka linijek które to zrobią. Np. w pętli for next z użyciem mid()
Przed Tobą długie i wnikliwe czytanie pomocy jak definiowane, i jak obsługiwane są tablice w BASCOM.
Projektuje uklad w ktorym PC (VB6) bedzie wysylalo tablice do atmegi 32. Tablice wysle z VB6 w nastepujacy sposob: Dim tArray(1 To 5) As Byte Dim vntBuffer As Variant tArray(1) = 100 tArray(2) = 101 tArray(3) = 102 tArray(4) = 103 tArray(5) = 104 vntBuffer = tArray msComm.Output = vntBuffer moje pytanie jest jak to wrzucic do tablicy spowrotem w bascom?
Bascom umożliwia stworzenie tylko 254 bajtowe tablice ;/. Na pewno...??? Tablica może mieć 16bit adresowanie!
Odwrotnie: 0101-0000. A przelicz na piechotę albo w kalkulatorze obsługującym system binarny (czyli na przykład w kalkulatorze z Windowsa). Dodano po 2 A w sumie to nie musisz przeliczać. Możesz napisać: LCD Chr(&B01010000)
tablica jest odpowiedni zadeklarowana, a bascom automatycznie inkrementuje wzkaźnik w tablicy, więc polecenie: Bd(1) = 1wread(9) powoduje, ze pierwszy odczytany bajt ląduje w Bd(1), kolejny w Bd(2), aż ostatni (dziewiąty) w Bd(10) Czyli to że na samym początku definjuje tablice z dwoma elementami typu Byte w niczym nie przeszkadza aby wpisać do tej...
Bascom jest tak beznadziejny, że adresuje tablice od 1 a nie od zera. To by jednak dawało przesunięcie o jeden a nie 2.
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...
BASCOM obsługuje tablice z indexem Integer 6553x sztuk:>
super działa :))) Jeszcze mimo Świeta zaciekawiła mnie jedna rzecz. Mam tablice o wielkości 20bajtów pod adresem 700hex o nazwie Dane. Dim Dane(20) As Byte At 1792 Overlay Odwołuję się do niej później po adresie komendą lds r16, $0700 ; adres oczywiście zmienny w zależności od potrzebnej komórki W jaki sposób zapisać nazwę aby kompilator nie wyrzucił...
Wartość w poleceniu lookup to jest właśnie adres wiec nie kumam w czym problem. przeskaluj adc z 0-1023 na 0-90 i potem wywołuj zmienna=lookup(adc,tablica)
Witam a nie lepiej do tej pracy zastosować kalendarz :) z zegarkiem RTC przecież wiadomo gdzie będzie słońce i kiedy wystarczy wpisać odpowiednie tablice :)
To odpowiedź już chyba masz w projekcie był inny wyświetlacz jak go zmienili poprawili program . Musisz zrobić osobne tablice dla setek i jedności i drugą dla dziesiątek i tysięcy i poprawić program tak żeby w zależności od słupka korzystał z odpowiedniej tabeli , albo poprawisz połączenia i przy tej okazji przestanie działać program z Jabela .
Zatem masz 32 komórki po 32 bajty, dajmy na to tablica(a, b) . Pomnożyć to daje 1024. Teraz definiujesz tablicę tablica(1024) i jak chcesz wyliczyć położenie danej komórki - wykonujesz obliczenia: 32*(b-1) + a i masz jakby dwuwymiarową tablicę.
Powinno być: [syntax=basic4gl]Printbin Send(1) ; 3 ' wyślij 3 elementy tablicy Send(), zaczynając od pierwszego elementu tablicy.[/syntax]
No właśnie, nie wiem czy tak to sie nazywa ale staram sie już pare dni zastąpić tablice zrobioną na wewnętrznym EEPROMie ATMEGI na taką która była by w 24cXX Program pisany w BASCOM np. Do tej pory robiłem to tak. Dim Dane(500) as Eram Word Dim X as Word, Z as Word potem w programie bylo tak Z = Dana(X) lub Dana(X) = Z Teraz chce zrobić tak żeby to...
EDIT: Dobra wszystko sobie dopracowałem, ale nie wiem jak to ująć w jednej tablicy?? Jakbyś mógł wyjaśnij mi mniej więcej jak działają te tablice ;] Ile miałeś czasu na ten wąż w BASCOM 8051 ? Tablice działają bardzo prosto, masz zbiór zmienny o zadeklaarowanym typie w przypadku BASCOM od 1 do n i możesz się odwołać do konkretnego elementu np tab(1)=x...
Czyli układ działa? To znaczy wyświetla na wszystkich kolumnach. Co do wyświetlanych symboli musisz od nowa napisać wszystkie tablice
Próbowałem zadeklarować tablice z odczytu przez i2c z czterech kanałów i użyć potem funkcji "avg" ale niechciało to ruszyć ( w wersji 2.11 bascom demo) ,chciałbym spróbować wypełniać tablice (powiedzmy z 10 pomiarów ) wartościami odczytanymi z 1 kanału co x ms,jak wartość odczytać i wyświetlić- wiem , ale jak wypełnić tablice aby ją potem mozna było...
Mam jeszcze jedno pytanie, potrzebuje wstawic tablice w asm TAB: DW10000 DW1000 DW100 DW10 DW1 I dostaje tylko " Error 106 : Unknown assembler command [DW 10000] Jesli jest to tablica DB to Ok, a DW nie :? ehh....
chyba normalne, ze nieda sie dima zainicjowac, bo w tiny12 niema ramu a tablice zmiennych sa w ramie
robiw, RLE realizuje wiele programow graficznych, wystarczy zaznaczyc stosowna opcje, chyba nawet GIMP to ma, wiec niczego nie trzeba pisac. W dodatku zapisujesz to potem jako plik naglowkowy c, usuwasz z niego C-specyficzne rzeczy i zamieniasz na tablice bajtow, co pewnie Bascom lyknie. Sa tez inne wygodne narzedzia, ale skoro sobie wybrales Bascoma.......
Zrób tablice z wartością końcową dla 60 wartości, będzie szybciej niż liczyć na piechotę! Bascom powinien liczyć tangens funkcji, ale przecież to mały AVRek, a wartości jest tylko 60
No dobra - a co jeśli wynik będzie miał "środkową" wartość inną niż 300? O ile dobrze patrzę to Twój kod bazuje na powyższej tablicy gdzie wartości, które mnie interesują mieszczą się w zakresie 250 - 350. A co jeśli będą inne wartości? Dodano po 8 Wolałbym to zrobić inaczej. Mając tablice jak powyżej segreguję wartości od najmniejszej do największej....
Jeśli porównujesz rozmiar kodu to porównaj też funkcjonalność... ciekawe, czy program w Bascomie ma te wszystkie fonty co ten w C. Najwięcej miejsca zajmują w tym programie własnie tablice fontów i obrazków.
Możesz zdefiniować tablice 8-elementową ładować do niej dane i wysyłać poleceniem Printbin . [syntax=basic4gl]Dim Bufor(8) As Byte ' tablica 8 elemetowa .............. Printbin Bufor(1) , 8 ' wyślij 8 bajtów zaczynając od Bufor(1)[/syntax]
Tak tylko ze w bascomie takie obliczenie zje ci z 20-30 % pamieci !!! Lepiej zrob sobie tablice z wartoscami i potem na podstawie napiecia odczytuj stezenie.... Dodatkowo bascom cholernie dlugo liczy takie obliczenia. Zdecydowanie nie polecam
Zrób tablice 1x4, tak abyś zapamiętał/przyporządkował że 1 komórka to alarm1_L, druga - alarm1_H itd. Masz zmienna "menu" więc niech ona pokazuje indeks w tabeli jakie jest aktualne to menu. Np. Menu=2 to wiadomo że chodzi o alarm1_H. W nastawach edytujesz tylko te komórki tablicy na które wskazuje ci "menu". Np. tablica "parametry" - a to co chcesz...
Ile problemów robi adresowanie tablic w Bascomm od 0? Tyle co użycie dyrektywy CONFIG BASE=0 ... w MATLABie tablice też są indeksowane od 1. Jakoś nie bardzo widzę problem w tym jaki indeks ma pierwszy element tablicy. Co to zmienia czy ma 0, 1 czy 123? Jak jest przenośność C a jako Basic? Dałem konkretny przykład, w C kilka godzin roboty, w Basic...
Tak właśnie to wyczytałem, zmieniłem nawet tablice na VOLATILE i też nie pomogło :( Ale teraz mam 202 przerwania w sumie czyli już jakiś postęp, a ma być 256 na obydwu zboczach , 128 na opadającym
bascom tablice tablice ascii bascom tablice zmiennych bascom
funkcja bridge swiatla diodowe sterowanie klapami
podłączyć wentylator łazienkowy
Jak zewrzeć przewody w termowyłączniku chłodnicy? Styczniki Legrand - jakość, trwałość i opinie