Bascom ma symulator, w którym możesz sobie patrzeć jak ci się zmienna zwiększa. Języki nie przestrzegają ściśle reguł zapisu matematycznego.
Nie wiem dokładnie czy bascom dokonuje konwersji typu string na byte w tym może być problem. Spróbuj zmienna nm zadeklarować jako 'byte' może pomoże.
Składnia: rezultat = LOW( zmienna ) Przeznaczenie: Zwraca młodszą cześć (bajt MSB) podanej zmiennej. gdzie: rezultatzmienna do której zapisana będzie młodszy bajt zmiennej, zmiennazmienna której młodsza część ma być określona.
Do komunikacji z układem można wykorzystać instrukcje I2csend i I2creceive , po wykonaniu w zmiennej Err jest kod błędu: [syntax=basic4gl]I2csend 112 , &B00010000 ' I2csend adres układu, wartość I2creceive 113 , Zmienna ' I2creceive adres układu, zmienna[/syntax]
Dim Zmienna As Eram Long Używasz tego jak zwykłej zmiennej.
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...
Małe pytanko a obsługa wyświetlania multipleksowanego jest wykonana w przerwaniu czy w pętli programu po ustawianiu zmiennej F4ms? EDIT: Nie rozumiem, zapis do eepromu wykonuje się 20 razy (zmienna Autoret = 20)
Nie ma potrzeby ustawiać adresów zmiennych "na sztywno". Ponieważ Bascom dla zmiennych wielobajtowych , stosuje zapis typu Little Endian to kod może wyglądać tak: Dim Zmienna As Word Dim Zmienna_lo As Byte At Zmienna Overlay Dim Zmienna_hi As Byte At Zmienna+1 Overlay I nie obchodzi nas pod jakim adresem znajduje się Zmienna , bo kompilator zadba o...
Najprościej to użyć overlay w sram. Single to 4 bajty w pamięci. dim zmienna_single as single dim bajt1 as byte at zmienna_single overlay dim bajt2 as byte at zmienna_single+1 overlay dim bajt3 as byte at zmienna_single+2 overlay dim bajt4 as byte at zmienna_single+3 overlay Potem zapisujesz bajty do eeprom, odczytujesz kiedy chcesz i masz wynik w single.
Czy jeżeli w Bascomi-e, w przerwaniu, ............ ......... czy zapis będzie trwał, a procesor w tym czasię będzie już wykonywał inne rozkazy? Zapisywana jest zmienna bajtowa. Wpis wartości zmiennej do EEPROM nie odbywa sie samoczynnie, jak powiedzmy przesączanie wody przez lejek(!). Tego wpisu dokonuje processor; nie ma tam pośrednika (chyba jedynie...
NIE wolno robić czegoś takiego żeby zmienna co chwile była zapisywana do EEPROM-u dlatego że on ma określoną ilość zapisów minimum 100.000 / + . Ja bym si polecił jakiś SRam na i2C albo SPI z podtrzymaniem bateryjnym może być nawet zegar RTC PCF8583 . Co do karty i komunikacji z PC tu [url=http://www.dharmanitech.com/2009/01...
Zajrzałem do skompilowanego pliku i widzę że kompilator w ogóle nie używa tu R2 i R3 więc mi je zostawił ;) Od pewnego czasu w Bascom do rejestrów można się odwoływać prosto z kodu. Ciekawe którą wersję Bascom masz. Pewnie znowu schody... U mnie program się kompiluje na 96% [syntax=vbnet] $regfile = "attiny13.dat" $crystal = 9600000 $hwstack = 16 $swstack...
Miałem na myśli podłączenie 3-przewodowe, mój błąd bo nie sprecyzowałem. W wersji 'S20 z tego co pamiętam nie ma możliwości zapisu do Configa.
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...
Przejrzystosc w kodzie przede wszystkim. :D Pozniej latwiej jest zlokalizowac ewentualne bledy i samo poruszanie sie w kodzie jest znacznie latwiejsze. W kazdym razie wracajac do tematu to ja osobiscie nie lubie etykiet wiec wolalbym to rozwiazac np. w ten sposob: Sub Czytaj_id_klucza() 'tutaj wstawiasz kod odczytu End Sub i pozniej tylko: Call...
Witam, Proszę o podpowiedź jak zapisać zmienną typu single, konkretnie wartość np. 1.23458 do komórek pamięci eeprom. Chodzi o zapis w Bascomie. Jeżeli wpiszę dim zmienna as single zmienna= 1.23458 Writeeeprom zmienna , 1 to przy odczycie Readeeprom zmienna , 1 na lcd ukazuje się 1.234580037
No właśnie jeśli w programie przed pętlą główną nadam wartości zmiennym w eeprom np. zm_eeprom = "jakis tekst" to po resecie program wystartuje od nowa i zapisze z powrotem wartości początkowe w programie do eeprom ? W takim przypadku, po każdym resecie zmienna będzie nadpisywać nową ( taką samą ) zawartością. Jeżeli przewidujesz 1 reset co kilka dni,...
Witam. Jak zapisuje się dane do eeprom w avrgcc? W bascomie wystarczyło zadeklarować zmienną jako zmienna typu ERAM, później zapis w programie wyglądał tak: zmienna_eeprom = zmienna analogicznie odczyt: zmienna=zmienna_eeprom Czy da się posługiwać zmiennymi tak jak powyżej w avrgcc? Wiem, że można użyć min.: eeprom_write_byte ( *adres, val) - zapisuje...
To wiele wyjaśnia. Spróbuj tak ;) [syntax=vbnet]$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 64 $swstack = 16 $framesize = 64 $baud = 9600 Config Lcd = 16x2 Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.6 , Db7 = Portb.0 , E = Portb.4 , Rs = Portb.5 Cursor Off : Cls Dim K1 As Byte Dim K2 As String * 20 Dim Id As String *...
Mam pewnien problem. W c jest taka zmienna jak integer (int). Jesto to zmienna 1 bajtowa w procesorach 8 bitowych, moze przyjmowac wartosci od -128 do 127. W bascomie nie ma takiej zmiennej. Wiadomo nie jest trudno napisac odpowiedni program, ktory by mi to przeliczal. Tym bradziej, ze bede i tak musial zastosowac bascomowa zmienne typu integer/long,...
Gdybym opisał program wszystko stałoby się oczywiste :D Użycie IF ELSE bez END IF zawsze warte jest omówienia bo potem nikt nie może się doliczyć END IF :D Chodzi o to że jeśli tylko jedna instrukcja jest od jakiegoś warunku zależna to można ją zapisać w jednej linii. Jeśli z powodu jakiegoś warunku musza juz być zmienione dwie zmienne lub wykonać się...
Deklarujesz jakąś zmienną, która "pomieści" znaki wszystkich zmiennych Dim S As String * 200 S=zmienna1 Zamieniasz zmienna2 na stringa zmienna1=str(zmienna2) i sklejasz całość s=s+zmienna1 'lub s=s+" "+zmienna1 s=s+zmienna3 Powinno zadziałać też s=zmienna1+" "+str(zmienna2)+" "+zmienna3
Z tym, że tablice musiałbym wcześniej wpisać w program, a mi chodzi o to, by "uczyć" tego robota danego zadania. Jeśli zmieniłbym odległośc punktu A od B i znowu postawił przeszkode, w którą by robot uderzył, to wtedy ponownie musiałby zapamiętać nową trase. Przy czym jeśli działałbym w obrębie pamięci RAM, kasowałbym ją po prostu resetem zasilania....
Wyboru samego separatora dokonuje się w pliku Config_AVR_dos.bas zmieniając stałą "Const Cvariableseparator = 44 " Jednak w tym wypadku chyba musisz użyć podręcznej zmiennej tekstowej, połączyć to sobie i wysłać na końcu jako jedna zmienna bo w innym przypadku zawsze wstawi separator. [syntax=vbnet]Dim Helpstr As String * 10 , Word1 As Word , Word2...
Przeczytałem to co jest wyżej napisane i... nie rozumiem co chcesz zrobić :) Co to znaczy: Potrzeba mi zapamiętać max. 4 liczby które będą następować po sobie dość szybko jednak Atmega potrafi je zdekodować bo jak dobrze się przypatrzę to liczby się zmieniają dobrze, i więc właśnie niech ktoś podpowie, co dopisać by procesor zapamiętał liczby i ustawił...
Komenda Print nie wyświetli ci zmiennej na lcd :) 'Program wykonujący zapis do pamięci EEPROM Sub Write_eeprom(byval Adres As Byte , Byval Value As Byte) I2cstart I2cwbyte Addressw I2cwbyte Adres I2cwbyte Value I2cstop Waitms 10 End Sub 'Program wykonujący odczyt z pamięci EEPROM Sub Read_eeprom(byval Adres As Byte , Value As Byte) I2cstart...
Do odbioru kodu Rc5 nie jest potrzebny Eeprom. Chyba że to nowa sprawa ? która Ciebie interesuje. odczyt z eepromu - Readeeprom zmienna , 1 zapis do eepromu - Writeeeprom zmienna , 1 te rozkazy dotyczą eepromu wbudowanego w ATtiny2313
Zrób tak: Dim Temp As Byte Dim Reserved As Eram String * 8 Dim Zmienna As Eram Byte Dim Status As Eram Byte If Status <> 123 then Reserved = "Reserved" Zmienna = 100 'Ustawienie wartości po programowaniu Status = 123 End If Temp = Zmienna 'Odczyt zmiennej z EEPROM'u do RAM Temp = Temp + 22 'Modyfikacja Zmienna = Temp 'Zapis nowej wartości...
Zmienna typu word jest dwubajtowa , więc nie ma możliwości bezpośredniego zapisu do komórki 1bajtowej. Spróbuj najpierw ją podzielić na dwa bajty i wtedy zapisywać. Powodzonka. Waldek.
Tak sobie przypomniałem trochę i stan rejestru nie powinien być pobierany. Tylko od razu zapis bo SBR robi And że zmienna. Nie sprawdzałem co bascom tłumaczy pod komenda set Ale po mojemu to... Set trrc1b.7 Równa się asm SBR tccr1b , 0b10000000
A przypadkiem twoja zmienna "adres" to nie jest zmienna typu byte ? w takim przypadku liczy tylko do 255, a ty dodałeś 248 + 16 = 264.
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),...
Siemka! A ja mam troszkę inną propozycję dla Ciebie. Nie zapisuj numerów czujników w pamięci programu. Poza tym lepiej jest mieć uniwersalny termometr gdzie jak uszkodzi się jeden czujnik, to z łatwością można zastąpić go innym. Zadeklaruj sobie takie zmienne: dim dsid(40) as eram byte ' zmienna tablicowa (EEPROM) dla 5 czujników dim...
Wykorzystaj funkcję Toggle. Jeśli zmienna nazywa się np. A to zapis Toggle A.3 zmieni na wartość przeciwną tylko bit 4 tej zmiennej
Różnica taka, że AVRy mają odczyt danych w innym rejestrze niż zapis. Kiedy czytasz z PORTD to odczytujesz to co wcześniej tam sam zaisałeś. Proponuje manuala i troszecczke go zwiedzić...
ok a jak teraz ułożyć te dane do zapisu i odczytu po I2C mając taki kod [syntax=basic4gl]I2cstart 'warunek startu I2cwbyte Adres_save 'wyślij adres układu I2cwbyte 8 'wyślij adres w pamięci EEPROM I2cwbyte zmienna A 'wyślij daną I2cwbyte zmienna B I2cstop 'warunek stopu Waitms 50 'czekamy 10mS ponieważ EEPROM potrzebuje czasu na zapisanie danych w pamięci...
Tak dla sprostowania na początek: zasadniczo to co ja napisałem jest bardzo podobne do pomysłu kolegi "hunterhouse"- napisaliśmy odpowiedź prawie w jednym czasie :-) Nie żebym się tu powtarzał czy coś w tym rodzaju. Powiedzmy dla przykładu, że masz 1 na Pinach 2 i 3 a na pozostałych 0, wtedy zmienna "Stan" wyniesie 2+4=6 (dla każdej konfoguracji jest...
Język nie jest ważny. Polega to na odpowiednim ustawieniu sygnałów na wejściach LCD czyli sterowania rejestru Port. Jak wrócę z pracy to wstawię tu kod napisany w C dla zwykłego LCD ( z lekkim tłumaczeniem). Może uda się to przerobić na Bascom. Wtedy uzyska się dostęp do czasów. Do tego czasu spróbuj wyssać procedurę inicjacji z noty katalogowej. P.S....
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.
Nie po przedrostku tylko: Dim Eliczba as ERAM byte Co do zaś zanikania danych z komórki 0 to jest to dawna sprawa, a przy tym musi być spełnione kilka warunków by doszło do takiego zdarzenia. W dodatku możesz przecież ręcznie wskazać gdzie będzie zapisana twoja zmienna za pomocą At przy deklaracji zmiennej jako pierwszą zmienną bajtową,lub zadeklarować...
A jaki może być schemat - rezystory podciągające do + od SCL i SDA , i na Piny oznaczone SCL i SDA . Atmega32. Problem wygląda tak że - Daję kod z zapisem do eepromu zmiennej , (właśnie teraz np. zmienna jest w epp. Potem kasuję kod z uP i daję kod z odczytem z eepromu - i NIC - wyświetla 0 albo 255.
Nie możesz "przekierować" pinu. Przypisanie przerwania zewnętrznego jest hardwareowe. Generalnie wszystko zależeć będzie od tego jak masz skonstruowaną główną funkcję. Jeżeli stosujesz w niej co rusz jakieś opóźnienia to będzie lipa, ale jeżeli cała główna funkcja wykonuje się szybko, bez zbędnych opóźnień to wtedy bez problemu w głównej pętli analizujesz...
jesli koledze chodzi tylko o zapis i odczyt z rejestrow to nie ma zadnego problemu wystarczy jedynie uzyc zwykledo assemblerowego mov. np. chcesz zapisac do rejestru r0 ze zmiennej to piszesz mov r0,{zmienna} a przy odczycie odwrotnie mov {zmienna},r0
Witam, potrzebuje pomocy kogos kto pomoglby mi przy wstawce asemblerowej, caly program jest w BASCOM AVR a zalezy mi na szybkosci akurat przy funkcji zapisu i odczytu. A wiec tak ze wzgledu na uklad polaczen na plytce zamienilem linie portu: D7>D0 D6>D1 D5>D2 D4>D3 D3>D4 D2>D5 D1>D6 D0>D7 Zamieniony port to PB, zmienna z ktorej zapisuje/czytam to "Datlo"...
Help BASCOM-a mówi : ERAM Most AVR chips have internal EEPROM on board. This EEPROM can be used to store and retrieve data. In BASCOM, this data space is called ERAM. An important difference is that an ERAM variable can be written for a maximum of 100.000 times. So only assign an ERAM variable when it is needed and not in a loop Co oznacza że raczej...
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...
Witam Z tego co pamietam to by cokolwiek zapisac i odczytac z epromu nalezy podac tez adres komorki pamieci . W BASCOMIE to wyglada chyba tak : Writeeprom Tekst ,adres a potem odczytujemy Readeeprom Tekst ,adres AT90S2313 ma 128 bajtow pamieci EEPROM, wiec jest 128 komorek jedno-bajtowych komorek pamieci. Stad adres : 0-127 Nie wiem jak wyglada sprawa...
http://obrazki.elektroda.pl/3089511800_1... Witam, dziś prezentuje swój bezprzewodowy termometr pracujący na częstotliwości 433 MHz. Urządzenie składa się z nadajnika i odbiornika. Nadajnik odczytuje temperaturę pieca C.O. i wysyła ją do odbiornika. W odbiorniku mamy możliwość ustalenia górnego i dolnego progu załączenia alarmu, który...
:) 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...
W taki/przedstawiony/ nawet poprawiony sposób szybko wykończysz pamięć bo ma ona ograniczoną ilość zapisów. W Tiny85 z kilkoma nogami to dużego ruchu nie ma, ale nawet tu są sposoby lepsze i gorsze. Jednym z lepszych byłoby po każdym naciśnięciu przycisku odliczanie Timeout`u i dopiero , na przykład, po trzech sekundach od nieaktywności przycisku zapis...
Nie można poprosic uC, żeby w tym czasie zajął się czymś niepotrzebnym (czym?) ale równie obciążającym? Procesor nie wie co jest potrzebne - robi co mu programista nakazał kodem programu (czasem nieświadom co nakazał :-)). Po drodze od programisty do kodu maszynowego (czyli tego co wykonuje procesor) jest jeszcze kompilator i miewa wbudowane opcje...
...Ps. Tak, już dla ścisłości to skoro do tej pory nie używałem tej pamięci to czas to zrobić. A przy okazji to czy zmienną typu STRING też tak samo łatwo tam zapiszę...? To działa ze zmienną dowolnego typu :D Ijeszcze jedno podejście do tematu.. Napisałem kod z uwzględnieniem Twoich uwag Piotrek tzn: Dim x As Eram Single Kod się skompilował i jest...
EEPROM jest zapisywany przy programowaniu, gdy użyjesz dyrektywy $EEPROM. Polecenie DIM zmienna as ERAM Byte jest instrukcją dla µC (jest zapisywane w pamięci Flash) która tworzy zmienną w EEPROM.
Dostępne w wersji>= 1.11.6.8 Skopiowane z pomocy (sin() - taksamo): Funkcja cos() Przeznaczenie: Zwraca wartość kosinusa kąta podanego w radianach. Składnia: zmienna = COS( liczba ) gdzie: zmiennadowolna zmienna typu single, do której wpisany będzie wynika działania funkcji, liczbaliczba której wartość kosinusa należy obliczyć. Opis: Wszystkie funkcje...
Tablice wielowymiarowe to albo albo tablice tablic, albo specyficznie numerowany wektor... tablic tablic w BASCOMie nie zrobisz, ale wektor jak najbardziej. zamiast: int tablica[n][n]; tablica[x][y] = zmienna; możesz pisać: int[n*n] tablica; tablica[x*n+y] = zmienna; To jest oczywiście zapis w składni C++, w BASCOMie tablicę deklarujesz tak: Dim tablica...
Dużo lepsze myślę bedzie np: Kod: If Tow = 1 And PINC = &b00001000 Then Port c w ATmedze8 ma tylko 7 pinów. Sprubuję najpierw pomysłu kolegi alien_audio. Dodano po 5 Zmienna TOW jest jedynką tylko podczas trzymania przycisku, na Q1-Q4 zatrzaskuje się kod binarny aż do naciśnięcia następnego. Chodzi o to żeby mikrokontroler przełączał 6 wyjść niezależnie,...
Zapis po puszczeniu przycisku jest napisany poprawnie, problem był z tym, że przyciski są dwa, a była jedna zmienna pomocnicza, dodanie drugiej dla każdego przycisku rozwiązało problem. A odnośnie tego podciągania transoptora, to tak może zostać czy usunąć dajmy na to podciąganie zewnętrzne? Któryś jest lepszy/pewniejszy w przypadku transoptora?
Totalnie nie rozumiem w czym masz problem. Zrob plytke, staraj sie pierw obsluzyc ten czujnik, nastepnie opanuj lcd!!! Dajesz tu kod przez kogos napisany i sie pytasz czy jest ok? Jak autor tego kodu napisal, ze dziala to tak pewnie jest. A sam zapis temepratury jest do zmiennej, pozniej po prostu wyswietlasz ta zmienna na lcd.
Ja robię to np tak: Lcd "Zapis danych !!!" Writeeeprom Hist , 1 Writeeeprom T_pompy , 2 Writeeeprom Hist_pompy , 3 a odczytuję tak: Rem * * Odczyt Konfiguracji * * Readeeprom Hist , 1 Readeeprom T_pompy , 2 Readeeprom Hist_pompy , 3 Jak narazie działa bez problemu, nie wiem do końca czy jest to poprawne użycie tej funkcji. Nie należy zapisywac pierwszego...
Witam, Ważna uwaga: typ long jest całkowity, nie ma części ułamkowej, trzeba użyć single lub double. Mała wskazówka z helpów (polski ubogi pełny po angielsku w programie) Pamięć ERAM. Większość procesorów serii AVR posiada wbudowaną pamięć EEPROM. Pamięć ta może przechowywać dane nawet po wyłączeniu zasilania. Jak podaje producent nawet do 10 lat. Pamięć...
Niestety zapis: zmienna=2bajty_mlodsze+2bajty_starsze*65... przy kompilacji wywietla error 177 : Illegal operation a jak zapisze to w taki sposób: zmienna=2bajty_starsze * 65535 zmienna=zmienna+2bajty_młodsze to gubi jeden bajt i tak zamiast podać liczbe 89431 która była zapiasna wcześniej do eeproma to podaje 89430. Można by za każdym razem dodawać...
Te deklaracje (gdyby Kolega otworzył choćby na moment manuala) to deklaracje łańcuchów znakowych (tekstów) a liczby po gwiazdce oznaczają maksymalną długość napisu + 1 (znak zerowy zakończenia tekstu), czyli np. w zmiennej Tekst1 można zapisać maksymalnie 9 znaków. Oczywiście na tekstach NIE MOŻNA dokonywać operacji matematycznych. Jedyne co można robić...
To akurat nieprawda. Tutaj to taka histereza bo nie porównujemy czy jest mniejsze czy nie, tylko do dwóch różnych wartości . (W Zajete oblicza Prog_gorny a w Wolne na odwrót) Niestety ten zapis jest jednak nieefektywny bo za każdym IF`em zmienna musi być ponownie załadowana do rejestrów celem porównania. Jeśli jest to ta sama zmienna to efektywniej...
A czy przy takim zapisie: [syntax=vb] Case 2: Locate 1 , 1 Lcd " " ; Chr(5) ; " Nap" Locate 2 , 1 Lcd Wart_nap2 ; "V " End Select Return[/syntax] Będzie mi się odświeżała zmienna Wart_nap2 ? Tak aby wynik z napięcie był odświeżany co 100ms (zmienna obliczana w przerwaniach) Jeśli nie to jak to najlepiej rozwiązać ?
Niestety to nie działa, gdy inkrementacja zmiennych "przesunięcie1 i 2" się zeruje po osiągnięciu len(x) w warunku if...then w głównej pętli, cały napis z Bufor_text zanika i tworzy się na nowo. BASCOM domyślnie indeksuje od 1, dlatego z zerem źle działało. Zmienić 0 na 1 , >= na > i powinno być ok. Dodatkowo można poprawić warunek dla Left , bo teraz...
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,...
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...
Mam pytanko co do zapisu eeprom . Mam do zapisu cztery zmienne [syntax=basic4gl]'''''''''''''''''''''''... Readeeprom Cena , 1 ' zmienna typu string Readeeprom Waga , 8 'zmienna typu string Readeeprom Z , 16 ' zmienna typu word Readeeprom Przep , 24 ' zmienna typu word ''''''''''''''''''''''''''''''''zapis...
W bascomie rzeczywiście prosto gdyż mozna dać cos takiego: zmienna.zmienna_pomoc=p3.2, a w asm gorzej bo taki zapis nie przejdzie. Mało tego polecenie setb tez nie akceptuje adresu jako zmienna (rejestr czy cokolwiek) tylko wartość stała. Myślałem nad tym i chyba tylko rrc lub rlc i "wsówanie" bitów poprzez flagę C. Innego sposobu narazie nie widze.
google naprawde nie gryzie : $regfile = "m128def.dat" $crystal = 14745000 $baud = 115200 'set the baud rate for the first hardware UART. $baud1 = 9600 'set the baud rate for the second hardware UART. Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0 Config Com2 = Dummy , Synchrone = 0 , Parity...
BASCOM 8051: //ZAPIS I2Cstart I2Cwbyte 160 //adres pamieci na magistrali dla zapisu I2Cwbyte //H adres I2Cwbyte //L adres I2Cwbyte(7); //przykladowy bajt danych I2C_stop(); //ODCZYT I2Cstart I2Cwbyte //adres pamieci na magistrali dla zapisu I2Cwbyte //H adres I2Cwbyte //L adres I2Cstart I2Cwbyte 161 //adres pamieci na magistrali dla...
Dim V As Eram Byte 'zmienna V będzie umieszczona w EEPROM Dim B As Byte 'zmienna będzie w pamięci SRAM B = 10 V = B 'można normalnie korzystać z takich zmiennych B = V 'na przykład odczytać zapisana wcześniej daną albo tak Dim B As Byte WriteEeprom B , 0 'zapis do pamięci EEPROM to ci wrzucilem z helpa... powiedz czy czy ci sie przydalo albo jak to...
witam zaczynam zabawę z obsługą kart SD i mam problem. używając poniższego kodu (oczywiście biblioteki Config_MMC.bas CONFIG_AVR-DOS.Bas są dołączone) Dim S As String * 30 S = "czterdziesci osiem" Open "test.txt" For Append As #1 Write #1 , S Close #1 lub Dim S As String * 30 S = "czterdziesci osiem" Open "test.txt"...
1. a od kiedy to zmienna byte przechowuje wartości od 0 do 131000 ? 2. a cio to?: Goto Mode1 Mode1: Const Adresw = 174 Const Adresr = 175 Goto Szukanie_folderu a) stałe są stałe i nie ważne czy umieścisz je w takim ifie, czy nie i tak nie zmienisz ich wartości b) zapomnij o goto... to da się rozwiązać pętlą... i paroma warunkami... goto się w takich...
up, pamiec 24xx oraz max232 bedzie chyba najlepszym rozwiazaniem. mozesz zapisac wszystkie nr kart i przyporzatkowac im nr 0-255 (co zajmie jeden bajt) date i godzime mozesz zapisywac w postaci ilosci sekund ktore uplynely od 01-01-2000 (w bascomie jest zmienna typy long - 4 bajty, ktora zapisuje czas w ten sposob),takze zapis do eepromu zajmie 5bajtow....
Pozwolę sobie umieścić post pod postem żeby wiadomość dotarła do zainteresowanego. Jeszcze lepszym wyjściem dla takiego zegara będzie zastosowanie dedykowanego rezonatorka 32768Hz (32,768KHz) Wartość 32768 to w zapisie binarnym dokładnie piętnaście bitów. Jeśli więc Timer będzie zliczał generowane impulsy to po 32768 uzna że mineła sekunda :D Bascom...
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......
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.
Tak, tylko wtedy do pliku zapisywane są w cudzysłowach... A w dokumentacji avr-dos jest przykład i w im podana zmienna typu word. [syntax=basic4gl] Dim S as String * 10 , W as Word S="hello" : W = 100 OPEN "test.txt" For OUTPUT as #1 WRITE #1, S , W CLOSE #1[/syntax] The file content will look like this : "hello",100 Use INPUT to read the values from...
Napisałbym to pewnie inaczej, ale tutaj masz "tłumaczenie na Bascom" tego co zapisane było w C. W Bascom każda zmienna jest inicjowana na początku wartością 0 W C inicjujesz zmienną i nadajesz, albo nie, jej wartość i to jest to : static uint8_t i=0; Po prostu I As Byte i I = 0 I jest indeksem dla numeru bajtu w buforze. Wykrzyknik w C to zaprzeczenie....
Więc aktywować warto bo nie zaszkodzi a może pomóc. Rozumiem, że jak aktywuję BODEN i BODLEVEL dla AT32 to reset zostanie uruchomiony po obniżeniu napięcia poniżej 4V - dobrze wyczytałem? Swoją drogą to chciałbym jeszcze podpytać odnośnie dwóch rzeczy - dotyczy programowania w Bascom. 1. Kwestia wear leveling przy zapisie do eprom w Bascom - zupełnie...
Nie analizowałem programu dogłębnie ale widzę w nim INPUT. Jak dobrze pamiętam INPUT zatrzymuje program. Dane przychodzące należy sprawdzać za pomocą: [syntax=basic4gl]zmienna = ISCHARWAITING() 'lub zmienna = ISCHARWAITING( #kanał )[/syntax] Funkcja zwraca wartość 1 gdy w buforze transmisji sprzętowego układu UART znajduje się oczekujący znak. (Z drugiego...
Witam Mam taki programik który zapisuje do pamięci eeprom dane. Jedna paczka zawiera pięć zmiennych. Takich paczek mam na razie 20 i dosyć mocno zwalnia mi program nie mówiąc o wielkości pliku w mikrokontrolerze. Może znacie jakieś kruczki aby to skrócić. Pozdrawiam dim a1 as eram byte i tak dalej z a2 a3 dim b1 as eram byte i tak dalej z b2 b3 dim...
witam! chce zrobić zapis do pamićcie eeprom 24c512 "podobno są takie" Chodzi konkretnie o to aby zapisywać ciąg znaków takich jak: R260120071330100 na końcu tego stringu będzie znak powortu karetki enter Z260120071345100 na koncu tego stringu będzie znak powortu karetki enter ale ten enter nie jest tak ważny jak to żeby mi te dane program napisamy w...
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...
upss naraz wałkuję dwa tematy o SD, stąd nieporozumienie. u mnie taki kod działa na kwarcu 8 MHz $regfile = "m32def.dat" $crystal = 8000000 $baud = 9600 ' predkość transmisji $hwstack = 128 ' rozmiar stosu sprzętowego $swstack = 128 ' rozmiar stosu $framesize = 128 ' rozmiar ramki '********************* Deklaracja podprogramów Declare Sub...
Witam, zrealizowałem program oraz układ który wyświetla napisy na czterech wyświetlaczach 7-segmentowych. W programie napisy chciałem umieścić w pamięci eeprom a następnie z niej odczytywać. Niestety po załadowaniu programu układ działa tak że zapalają się wszystkie wyświetlacze (bo na początku są wszystkie zapalone - wyświetlacze 7 seg ze wspólna anoda)...
wielkie dzieki za pomoc, poczatkowo wykonalem przepisywanie danych bit po bicie przy zastosowaniu pętli ale widze ze ten sposob jest wiele lepszy :) Pozdrawiam ! Dodano po 23 jeszcze jeden problemik mam, bo w wersji bascoma 1.11.7.4 wywala blad przy "zmienna+1" "zmienna+2" "zmienna+3" czy da sie to jakos obejsc ?? ewentualnie jak sie dowiedziec pod...
Staram sie napisać programik w Bascom, który odczyta mi numery seryjne z termometrów dallasa DS1820 (docelowo 3-4 termometry) ma go zapisać w pamieci eeprom procesora, a nast ma być odczytany. Na końcu użyłem komendę dla wyświetlenia na lcd ale jakoś mi to podejżanie działa ponieważ nie wyświetla mi znaków a tylko jakieś "9". Może źle odczytuje lub...
jak chcesz czytac temp co sekunde to dodaj jedna zmienna, pozniej w petli glownej zrob zapis sekund to tej zmiennej, po czym jak ta zmienna i sekundy sie roznia to wchodzi do nastepnej petli, gdzie odczytuje temperature, a wychodzi jak temperatura jest rozna. W przerwaniach powinno byc jak najmniej rzeczy. Jak bede w domu postaram sie ci dalej pomoc....
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
przedstawiam poni żej listingf w którym podczas kompilacji wywala mi błąd o złym typie zmiennej przy wywołaniu procedury co i jak żle zrobiłem: to 1 problem 2 to ten że to program do obsługii 12 bitowego przetwornika a/d z noty wyczytałem iż odczyt danych następuje wg. schematu: 1 sekwencja startu 2 podanie adresu do zapisu 3 potwierdzenie (slawe) 4...
Mam pytanie o zapis i odczyt z eepromu. jesli chcę zapisać do eepromu liczbę: 1001000001110111110001000011101111 i później ją odczytac, to mam to zrobić na zasadzie każdy bit to jeden adres? Czy może zrobić zmienną string, z eepromu do niej pobrać wszystkie cyfry i po kolei odczytywać z zeminnej string znaki? Żeby uniknąć tego długiego kodu, zrobię...
1. Co minute zapis do eeprom, nie wiem czy to dobry pomysl. Wiesz, ze eeprom posiada mala ograniczona ilosc zapisow? Lepiej dodaj jeszcze warunek, ze jak naprawde minute pozniej ta temperatura sie zmieni wtedy dopiero zapisuje. 2. Ja bym dal odczyt temp w jednym subie po co 2 (tylko miejsce zajmuje), dodatkowo dodal jakas zmienna w zaleznosci od ktorej...
Mam w programie pewne ważne zmienne trzymane w ERAM (ustawiane są one jednorazowo można powiedzieć). Do tej pory robiłem tak, że po restarcie programu przepisuję sobie wartości z ERAM do normalnych zmiennych. Wiem, że ilość zapisów do tej pamięci jest ograniczona, no i oczywiście odpowiednio wolniejszy jest ten zapis. Ale jak jest z odczytem ? Bo sporadycznie...
Witam Przedstawiony zapis powoduje ustawienie zegara i "datownika" na wartości w tejże instrukcji czyli spowodowałeś, że zegar został ustawiony na 14:33:00 a datę na 01/01/2012. Jeśli chciałbyś widzieć zmiany używając tej dyrektywy to napisz: Lcd Date$ ; " " ; Time$ lub Lcd _hour ; _min ; _sec przy czym nie jestem teraz pewien ale, żeby czas...
W takim razie musisz szukać przecinka: zmienna1 = INSTR( tekst , "," ) Otrzymasz położenie 1 przecinka następnie: zmienna2= MID( tekst , start , zmienna1) - czyli ilość znaków do przecinka. I w zmienna2 masz 1 ciąg danych(trzeba go jakoś zapisać do dalszej obróbki), potem ten ciąg usuwasz z tekstu (przyda się też długość całego...
Witam ponownie,ma ktoś może jakiś sprawdzony software'owy patent na odczytywanie znaków z eepromu?Cały problem leży w tym aby zamienić znaki string"abcd..." na ascii i odnaleźć w tablicy znaków w eepromie. Napisałem taki kod: Sub Strlcd(byval Chstr As String) 'wpisanie stringa Local A As Word 'zmienna pomocnicza dopasowujaca wartosc znaku ascii...
Po ustawieniu odpowiedniej wartości zapisz ta zmienną w eeprom za pomocą polecenia "writeeeprom" a podczas włączania przed główna pętlą odczytaj tą zmienną za pomocą polecenia "readeeprom" Dodano po 12 Zapis musisz robić dla zwiększania i zmniejszania i zobacz do helpa jak wygląda składnia poleceń bo readeeprom jest źle. READEEEPROM zmienna , adres
to może nieco inaczej. Ponieważ pewnie masz wolną transmisję to można się pokusić o przerabianie również wejścia w locie(na żywo) bez zapisywania do zmiennej string. Tylko z tym będzie troszkę więcej roboty: do if scon.0=1 then if sbuf<>13 then zmienna=chr(sbuf) scon.0=0 do loop until scon.0=1 if sbuf<>13 then zmienna=zmienna+chr(sbuf)...
zmienna bascom bascom zmienna bascom zapis
elizabeth sanyo światło dyskotekowe silnik mercedes atego temperatura
sprinter podłączenie webasto klimatyzator przenosny
MOSFET jako zabezpieczenie prądowe w wkrętarce akumulatorowej Peugeot 206 1.4 benzyna - zbyt bogata mieszanka paliwa