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.
Żeby układ sam się resetował przy włączeniu zasilania , to opornik dajesz do plusa i kondensator z pinu reset do masy.
Funkcja Wait nie blokuje Watchdog -a, zrób to co zaproponowałeś - Stop Watchdog - Wait - Start Watchdog Pozdrawiam
Konwersje byte->string otrzymuje się przy użyciu funkcji Str. W drugą stronę działa funkcja Val.
To może koledzy mają jakiś inny sposób na zamianę liczby z postaci zmiennoprzecinkowej w całkowitą? No to w końcu chcesz mieć liczbę całkowitą w zmiennej zmiennoprzecinkowej czy liczbę całkowitą w zmiennej całkowitej? Jak to drugie, no to Round: Dim Co2_w As Single Dim Co2_int As Long ... Co2_int = Round(co2_w) Niezgodnie z Helpem BASCOMa,...
Czytałem wprawdzie jakiegoś i tak fajnego PDF'ka autorstwa kolegi Zbigniewa Gibka , i jest tam trochę na te tematy. Jednak tam opisane jest tworzenie własnych procedur które hmmm trzeba deklarować jeszcze samemu w programie głównym. To troszkę ciężko tak działać. A czy zastanawiałeś się w jaki sposób przekazać kompilatorowi czy ma na stos wrzucić jakieś...
Tu taj masz trochę informacji o tej funkcji z Bascom AVR: http://www.forbot.pl/forum/topics49/funk... Zobacz też HELP'a :)
Witam.Czy w pakiecie Bascom AVR zaimplementowane są procedury umozliwiające korzystnie z funkcji trygonometrycznych (funkcja sinus)???
To nie wina procesora ale kompilatora. Procesor nie ma w sobie funkcji getrc5, to jest funkcja bascom, szukaj winy w kompilatorze.
' 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,...
kuuczoo :przecież MES Mariusz dobrze wie jak to robić. Przecież napisał. A Ty mu jedziesz że się pyta o podstawy. On po prostu chce wiedzieć czy w BASCOMie nie ma już gotowej funkcji do tego. Gotowa funkcja jest (o ile można to nazwać funkcją): Dim A As Bit Dim C As Byte B = 255 A = B.3
Dodaj byval na początku przy deklaracji funkcji . Czyli Declare .......(byval kanal As byte) Jak nie rozumiesz działania funkcji - to możesz też przerobić to na podprogram. PS - kolega wyżej mnie uprzedził.
a czy wywołanie funkcji jest ok? Bo mnie chodzi o to aby funkcja liczyła reszte z dzielenia. Nie wiem czy jest ok, bo nie podałeś tej części kodu :) Sprawdź czy działa tak jak zakładałeś.
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.
Funkcja WAITMS nie jest odporna na przerwania. Jeśli masz jakieś to każde wystąpienie przerwania w trakcie WAITMS rozjedzie go. Niezależnie od stabilności tej funkcji, a nie ma powodu, żeby nie była powtarzalna jeśli nie jest przerywane wykonanie przerwaniami, to i tak lepsza praktyką będzie wykorzystanie timera.
Witam Mam taki kod: $regfile = "m328pdef.dat" $crystal = 14745600 $baud = 9600 ' predkość transmisji $hwstack = 128 ' rozmiar stosu sprzętowego $swstack = 128 ' rozmiar stosu programowego $framesize = 128 ' rozmiar ramki Do Locate 3 , 1 Lcd Ss1 ; Chr(0) ; " " Locate 3 , 10 Lcd Ss2 ; Chr(0) ; " " Locate 4...
On będzie się zwiększał o 1 w tym przypadku, bo wartość przesunięcia przekazywana do funkcji też się tak zwiększa. Jeśli jednak np. zacząłbyś przesuwać w prawo to funkcja nie działałaby prawidłowo, poza tym musiałbyś tą wartość zapamiętać poza funkcją dla danego napisu (tak, jak teraz przesuniecie ). Dlatego trzeba to liczyć.
Niepotrzebnie otwierasz i zamykasz kanał przy każdym wysyłaniu. Otwórz kanał przed pętlą a w pętli tylko wysyłaj dane (bez zamykania kanału).
Moze da bascom'owa funkcja uzywa timera
Wszystkie dostępne na rynku, o ile jest dokumentacja. Nie wiem na ile znasz C, ale tam nie ma czegoś takiego jak wbudowana funkcja Lcd("tekst"); Wszystko trzeba sobie samemu napisać (czyli najpierw implementacja komunikacji fizycznej, potem funkcje niższego poziomu - zapalanie, gaszenie piksela lub całego zestawu pikseli, potem funkcje wyższego poziomu,...
Do Reset Portb.1------- tu ustawiasz na wyjscie niskie Wait 1 ------- tu czekasz sekunde Set Portb.1 ---- tu ustawiasz na wyjsciu wysokie Loop -------A TU ODRAZU WRACASZ DO POCZATKU PETLI I TAM ZNOW USTAWIA SIE NA NISKIE End Rozumiesz gdzie jest bład? $crystal = 16000000 $regfile = "m32def.dat" $baud = 9600 Config Portb.1 = Output Do Reset Portb.1 Wait...
Musisz liczyć to logarytmicznie. ...zmienną wszystko jest ok do wartości 0dB = 7 (dec) To akurat fart, bo do wartości "około zera" funkcja idzie w miarę liniowo. Szukaj jak liczyć logarytm w Bascomie (funkcja log).
Jeśli chodzi o ID to chyba najprościej będzie zrobić funkcje i z głównego programu przekazywać do niej ID czujnika, natomiast funkcja będzie zwracać np bit 1/0 OK/ERROR. Podobnie chyba można zrobić z odczytem temperatury.
Użyj funkcji FORMAT to powinno ci załatwić sprawę. Poczytaj o tej funkcji w helpie. Pzdr. A.
Nie wiem konkretnie o co Ci chodzi, ale pewnie rozwiązaniem było by zastosowanie odbioru w przerwaniu co w bascomie jest niezwykle łatwe za pomocą BYTEMATCH. Mam wersje 1.11.9.0 i wspomnianego BYTEMATCH nie ma. Od ktorej wersji bascoma jest w/w funkcja? Zawsze byłem za tym, by najmniej korzystac z gotowych funkcji, a korzystac bezposrednio z rejestrów...
Cześć W załączniku podsyłam Ci formułę obliczeń z której korzystałem oraz arkusze Open Office w którym to wyliczałem. Z jakiegoś powodu (już nie pamiętam) użyłem wtedy Open Office zamiast Excela. Ten arkusz nie otwiera się poprawnie w excelu. Obliczenia wykonane dla 250 kroków, timer 16bit (procek PIC taktowany kwarcem 8MHz). Teraz nie mam Open Offica...
tak jak piszesz reti używasz tylko do powrotów z przerwań, natomiast samo ret do powrotów z funkcji (podprogramów) aby dosyć jasno pisać kod należałoby się trzymać pewnej zasady, o którą czasem wiadomo ciężko ale... .... otóż po tei inicjalizacji robisz tzw pętlę główną (zamkniętą) - występuje ona w każdym języku wyższego poziomu jak Bascom lub C. czyli...
A o funkcjach logicznych słyszałeś? wystarczy and z wartością 0x0F.
Witam Kolego Unreal89. Pracuję pod Bascomem 8051 i nie spotkałem się z funkcją, o której wspominasz. Przejrzałem pliki help'a i tam również nic nie znalazłem. Zainteresowany jestem z jakiego powodu odpada komenda "fusing"? Dla czego pytam? Pozwolę sobie obszerniej skomentować zaprezentowany listing. 1. Termometr DS18B20 przechowuje informacje o temperaturze...
Zauważyłem iż w Bascomie nie ma czegoś takiego jak funkcje i nie wiem czy istnieje coś w stylu zmiennej lokalnej. Przez 8 miesięcy helpa w dodatku w j. polskim nie przeczytać? Hmm... Przeznaczenie: Rozpoczyna treść funkcji użytkownika. Składnia: FUNCTION nazwa [ ( parametr AS typ [, parametr AS typ] ) ] AS typ_rezultatu instrukcje...
Przeznaczenie: Formatuje tekst zawierający liczbę według podanego wzorca. Składnia: rezultat = FORMAT( zmienna , "maska" ) gdzie: rezultatzmienna tekstowa, w której umieszczony zostanie sformatowany tekst, zmiennazmienna tekstowa zawierająca formatowaną liczbę , maskawzorzec formatowania. Przeznaczenie: Zwraca tekstową reprezentacje podanej liczby....
Nie masz za dużo w funkcji obsługi przerwania. Dużo Waitms i jeszcze obsługa LCD. Może przerwania tak szybko nadchodzą, że nie zdąża czasu na wyjście z niego. Funkcja przerwania powinna być krótka
Mam pytanie do kolegi bo nie wiem na jaki procesor chciał podłączyć te przyciski AVR czy 8051 bo jak ten drugi to podana funkcja toggle nie istnieje dla 8051 trzeba zanegować bit portu przy pomocy NOT początek taki sam jak kolega Adamusx podał powyżej tylko w ciele funkcji if musi znaleźć sie zanegowany bit portu na który jest podpięta dioda.
...a tak z innej beczki nie działa taki np zapis: if Scanstrsp(tekst, ":") = "dane" then tylko muszę to robić tak: a = Scanstrsp(tekst, ":") if a = "dane" then czyli w warunku nie można tak użyć argumentu funkcji - szkoda (albo znowu czegoś nie wiem). Za to tak działa ;) a="dana"...
O ile mi wiadomo w Bascom-ie nie ma funkcji tokenizującej (jak np. STRTOK w C++). Musisz sobie napisać funkcję samemu używając funkcji Instr, Mid oraz Len
Witam,jestem świeżym użytkownikiem który zaczyna bawić się bascomem itp... Skoro tak, to wypada zapoznać się z funkcjami jakie oferuje Bascom, czyż nie :?: Sprawdź np. Instr(), Split(), ...
Teraz spłodziłem coś na chacie w bascomie ;-) Może w końcu ta koncepcja ruszy.... uwzględnia drgania styków, działa na innej zasadzie... powinna byc odporna na wszelkiego rodzaju czasy między puszczeniami wciśnięciami itp... w przerwaniu co 10ms sprawdzamy stan przycisku zadziałanie przycisku następuje najwcześniej po 10 jego sprawdzeniach (po 100ms)...
ściągnij z neta Help do bascom w j. polskim tam jest to polecenie ładnie i łopatologicznie opisane, jak wiele innych. Ciekawe lektury pisze też Marcin wiązania (też dostępne w formacie PDF.)
Możliwe że tylko jakiś nowszy BASCOM to obsługuje. Albo chodzi o tą http://www.atmel.com/dyn/resources/prod_... funkcję.
...Co takiego robi ta funkcja czego sie nie da zrobic w bascomie? A gdzie ja napisałem , że się nie da :?: Aby tę funkcję zaimplementować w Bascomie , trzeba znać ciało tej funkcji , a postodawca jej nie "dostarczył" :( Piotrek
Jakie inne funkcje ?? Przecież jako klawiatura matrycowa też mogą spełniać inne funkcje - wystarczy ich odczytać i im je przypisać... Rozwiń temat, bo z Twojego pytania nic nie wynika.
Wróci do funkcji2, ponieważ przerwanie zawiesza dotychczasowe działania, a po zakończeniu jego obsługi wraca do wykonywania przerwanych operacji.
Ksiązka kurs pisania w BASCOM AVR to np. "Programowanie mikrokontrolerów AVR w jezyku BASCOM" Marcin Wiązania BTC. Ksiązka rozpoczyna się od opisu większości funkcji komend BASCOM potem trochę o procku AVR a następnie proste programy obrazujące możliwości AVR i obsługę róznych interfejsów... jest też kilka programów obsługi wyświetlaczy czujników przetworników...
Abstrahując od dyskusji to tablicowana funkcja ma się nijak do funkcji logarytmicznej ;-) Albert
Tak się objawiają uszkodzone czujniki. Sprawdź go jeszcze raz w bascomie. Pozatym masz jakieś dziwne te delay'e czemu używasz funkcji owire_delay przecież masz _delay_ms? Trochę wróżąc z kodu wnioskuje że funkcja delay odmierza 0,25us * przekazany argument. Piszesz w komenarzach że niby ta pętla for + funkcja poniżej jej trwa 470ms. Jak nie przestawiałeś...
Nie testowałem tego z kartami cf, ale z tego co wiem to do ich obsługi pierwotnie była ta biblioteka, więc pewnie sd ma takie niedoróbki, bo u mnie efekt taki sam. A problemy z kartą rozpoznaję z funkcji Initfilesystem()
Łap. Napisałem w przerwie między... Zajmuje połowę mniej niż Twój a działa :D [syntax=vbnet]$regfile = "attiny13.dat" $crystal = 9600000 $hwstack = 8 $swstack = 8 $framesize = 8 Config Portb = &B01110 : Portb = &B10001 Sw Alias Pinb.0 D1 Alias Portb.1 : Set D1 D2 Alias Portb.2 D3 Alias Portb.3 Config Timer0 = Timer , Prescale = 1024 , Clear...
To co mam zrobić? albo nic , albo pogłębić swoją wiedzę była mowa o programowaniu ...... umiesz ? zacznij od nauki programowania kurs Bascoma masz tu http://www.edw.com.pl/ zapoznaj się również z działem cyberob , oraz z tematami budowy robotów na forum
To jest dosyć niewygodny sposób na przesyłanie zmiennych w postaci znaków ASCII i sam się nieco ograniczasz, bo pierwsza zmienna musi mieć zawsze dwa znaki, druga trzy itp... Jeśli chcesz troszkę bardziej uniwersalnie podejść do tematu to przesyłaj wartości zmiennych w ten sposób: PRINT XX,YYY,Z,KKKK czyli każda wartość oddzielona np przecinkiem. Później...
potrzebuje sklecic funkcje typu on_event a raczej on_portx.y_active aby na przyklad po przycisnieciu przycisku (ustawienia stanu wysokiego na ktoryms z wejsc) wykonana zostala konkretna funkcja
Nigdy nie używałem funkcji. Więc nie mam pojęcia jak to zrobić. Czas sie dokształcić, do Bascom jest polska pomoc z przykładami. Jaki problem? Ponadto zamiast funkcji można użyc podprogramu, choć funkcje są wygodniejsze. Ta funkcja musi być solidnie rozbudowane aby przesłać jeden znak. Bzdura, wysłanie znaku, to wysłanie bajtu do sterownika. Wyświetlacz...
Czy ktos ma jakąś gotową funkcje w C coś na styl bascom'owego waitus
Przeszukałem forum przed napisaniem niestety nie znalazłem nic ciekawego :) trochę to dziwne jest, że jest w BASCOM funkcja nadawania w RC6 a nie ma funkcji odbioru...
pamięć ram i pamięć programu nie znajdują się w tej samej przestrzeni. LPM (load program memory) odczytuje z pamięci programu, LD (load data) wczytuje z przestrzeni pamięci. Zmień LPM na LD r16, Z (pomijając mov r16, r0) tak jak napisałem w drugim poście tematu.
Przy zapisie do EEPROMU w Bascomie nie musisz wyłączać przerwań. Funkcja WRITEEEPROM robi to sama, ale READEEPROM już nie wyłącza przerwań :)
W Arduino jest odpowiednia funkcja: delayMicroseconds(10);
Widzę że nikt się nie pali do pomocy, to może ja coś pomogę. Mam dość szybki kod do SD. Jeżeli SD też może być to pomogę. Mogę też rzucić procedurami zapisu i odczytu bloków danych. One w SD i MMC są identyczne (chyba). To jest taka TurboOptymalizacja wysyłania/odbierania po SPI. Odczyt chyba jest blok 512B/1ms.
Nie musiałem liczyć, :) w Wikipedii znalazlem. Z sumą, potęgą i silnią nie ma problemu, więc chyba powinno wyjść. Tylko strasznie dużo kodu to zajmie. Jak już napiszesz to możesz podesłać tu źródło to może da się zoptymaliować.
W procedurze/podprogramie obsługi przycisku wciśniętego zwiększaj zmienną o 1 a w programie głównym, czy też tam gdzie to jest potrzebne, wykonuj program w zależności od tej zmiennej, np. wykorzystując SELECT CASE.
Kolego emarcus namieszałeś mi troszkę z tom funkcją ‘Str2digits’ Ile tomów ma ta funkcja?
Powiem tak: Nie znam się na BASCOMie ale widzę, że END kończy program a dokładnie pustą pętlę w której powinien znajdować się odczyt z przetwornika i wyświetlanie, używając napisanych przez Ciebie funkcji. Przykładowo siała baba mak.../deklaracja zmiennych Do /pętla główna programu wykorzystująca twoje funkcje ODCZYT WYSWIETL Loop END ODCZYT: bla bla...
Funkcja ta zwraca stringa, a ty potrzebujesz liczby
Najprawdopodbniej w tej zmiennej coś jest jeszcze na końcu. Mogą być znaki niewidoczne, np CR lub /i LF. Spróbuj wyświetlić długość tego stringa (w Bascomie chyba funkcja Len) i wtedy bedziesz wiedział czy aby tam jest tylko liczba. Możesz spróbować też konwertować tego stringa po jednej cyfrze, a więc robisz pętlę w której wycinasz fragment stringa...
Jak w temacie, czy można spod bascoma obliczyć wartosć wybranej funkcji trygonometrycznej, dla wybranego kąta a ?
A mi się udało znaleźć. I to na stronie producenta bascoma. Wpisałem w google "bascom getkbd" :) https://avrhelp.mcselec.com/index.html?g... [syntax=vbnet]'-------------------------... 'name : getkbd.bas 'copyright : (c) 1995-2005, MCS Electronics 'purpose : demo : GETKBD 'micro : Mega48...
a w jakim języku programujesz ? Bo np.: w Bascomie jest gotowa funkcja.
Zainteresuj się funkcja Printbin oraz podziel dane na osobne bajty.
Funkcja MID. :) [url=http://avrhelp.mcselec.com/index.ht...
W deklaracji funkcji tylko raz deklarujesz "Byval"
Witam, Czy ktoś z forumowiczów może mnie oświecić jak realizować funkcję logarytmu w Bascomie-8051? Kuba
Jeśli chcesz użyć wyłącznie Incr więc liczenia co 2 nie zrobiśz inaczej niż Incr x Incr x :)
Zamiast podprogramów nie lepiej uzyć funkcji? Można sie posługiwać zmiennymi lokalnymi, nie ma problemu z pokrywającymi sie nazwami. Co do makr, to jak trzeba, jest to uzasadnione to tak, jak nie to funkcje lub podprogramy. Swoja drogą, wywołanie podprogramu jest pewnie szybsze niz funkcji? W kodach Bascom jakie widuję, rzadko pojawiają się funkcje.
No cóż. Wprawa i rutyna (niestety). Zapraszam do nauki. Z uC można 1000000 razy więcej.
Okazuje się, że w Bascomie 8051 nie można zdefiniować własnej funkcji, ta możliwość istnieje dopiero w Bascomie AVR - ciekawostka .. http://avrhelp.mcselec.com/changes_compa... Spróbuj czegos takiego może zadziała ... Declare Sub Klawiatura Dim przycisk As Byte Dim kol1 as Byte Dim kol2 as Byte Przycisk=0 Do Call Klawiatura ' Tu...
Przeoczyłem to. Faktycznie trzeba dac pętlę nieskończoną. #include<avr/io.h> int dane; #define OSC 4 // definicja funkcji opóźniającej void waitms(unsigned char x) { unsigned char a, b; // zmnienne licznikowe for( ; x > 0; --x) // ta pętla zostanie wykonana x-razy for(b = 10; b > 0; --b) // a ta 10 razy for(a...
...właśnie znalazłem chwilkę czasu i ze zdumieniem zobaczyłem, że te biblioteki to nie jakieś pliki binarne ;) tylko tak jak podałeś w przykładzie z tym LCD. hmmmm tylko czy jest gdzieś jakiś opis jak się do tego tak bardziej szczegółowo zabrać? Jakoś nie spotkałem materiałów , o "nazewnictwie" wbudowanych w Bascom'a funkcji/procedur zmiennych czy...
$regfile = "attiny2313.dat" $crystal = 4000000 Config Pind.2 = Input Config Portd.0 = Output Config Portd.1 = Output Config Portd.3 = Output Set Portd.2 Przycisk Alias Pind.2 Dim Sekwencja As Byte Declare Sub Pierwsza Declare Sub Druga Declare Sub Trzecia Enable Interrupts Enable Int0 On Int0 Przycisk_przerwanie Do Loop End Przycisk_przerwanie:...
To bez znaczenia bo i tak wywala sie nawet na 2^2 :) Nie czytasz co piszą inni - stos :D Wklej na początku kodu ... $hwstack = 64 $swstack = 64 $framesize = 64 ... Piotrek
Funkcja RC5Send nie działa na tym mikrokontrolerze , pewnie dlatego że Attiny25 nie posiada 16 bitowego timera :)
Witam serdecznie! używam procesora atmega1280 i przy próbie kompilacji jakiegokolwiek programu z funkcją getrc5() w bascomie pojawia się błąd 202 - czyli funkcja nie obsłgiwana przez procesor... czy jakoś da się uruchomić tę funkcję na tym procesorze? Z góry dziękuję za pomoc
Zapomniałeś umieścić parametrów w nawiasach! Poprawne wyłołanie funkcji to, przykładowo: Wyswietl_bajt(&B00000000)
Witam. Skoro nie masz źródeł to trzeba zrobić wszytko od podstaw. Ciężko będzie to zrobić bez licznika i motoru. Raczej trudna sprawa, chyba że trafisz na kogoś kto już coś takiego przerobił na swoje potrzeby.
Nie wiem jak w BASCOMie to zrobic (kto w ogole pisze programy na procek z 256kB FLASH w tak dziwacznym jezyku?), ale jesli BASCOM wspiera kompilacje pod konkretny adres i odwolania do funkcji przez wskazniki (to mozna zreszta zrobic za pomoca wstawki w assemblerze), to najprosciej te funkcje umiescic pod jakims znanym z programu glownego adresem, przy...
ad1.Split() ad2.Instr(), Varptr(), Inp(), Out(), itp ...W żadnej funkcji nie mam na myśli MID() ... A czym naraziła Ci się ta funkcja, że nie chcesz o niej nawet myśleć :?: :-P
Panowie, to Bascom. Musiałbyś dorwać się do kodów biblioteki w ASM i zobaczyć jaka funkcja w ASM jest odpowiedzialna za reset komunikacji z LCD i jego inicjalizację i ja cyklicznie wywoływać. Bez tego w Bascom będzie ciężko, ewentualnie możesz napisać sam prostą procedurę inicjalizacyjną na podstawie DS sterownika wyświetlacza.
Witam! Chciałbym zrobić urządzenie, które będzie podłączone do linii telefonicznej, i którego zadaniem będzie rozpoznawanie kodów DTMF nasłuchiwanych na linii. Chciałbym, aby urządzenie oparte było na mikrokontrolerze AVR i środowisku BASCOM AVR. Bascom udostępnia gotową funkcję DTMFOUT. DTMFIN nie znalazłem. A może taka funkcja jednak istnieje?
Ja też nic o zmiennej Err nie widzę. PS. Ale ogólnie to funkcja może zwrócić dwa parametry (albo i więcej). Procedura też ;)
Zobacz (krótki) film ile zajęło mi znalezienie Twojego błędu :D Nie wiem czy używasz, ale ja mam włączone numerowanie linii kodu bo to ułatwia zrozumienie komunikatów i warning`ów. Mała literówka :D Co ciekawe po lewej na czerwono warning, że deklaracja się nie zgadza i po kliknięciu za chwilę wszystko na zielono :D To po lewej się włącza - "Code Explorer"...
W tym kodzie jest błąd: Load Timer0 = 250 jest niepoprawnie zapisane bascom nie krzyczy błędem ale ta składnia nie działa. Powinno być Load Timer0, 250 Ta funkcja ładuje do timera wartość 256-wartość, czyli w twoim wypadku 6.
34 podziel przez 10 a zostanie Ci 3. Reszta z dzielenia chyba funkcja Mod da Ci 4.
Zacznij od tego: funkcja wait i pokrewne PRZESTAŁY ISTNIEĆ. Do opóźnień i odmierzania czasu użyj timera i ogólnie poczytaj o timerach.
Sam sobie odpowiedziałeś na pytanie. Jest jeszcze jedna możliwość ale jest nieco niebezpieczna i wymaga aktualnej wersji BASCOMa: funkcja MEMCOPY.
Nie wgłebiajac sie w kod moze zamiast LSR daj LSL i po sprawie. Nie ma '8' bitu chyba.
Nie znam mozliwości w tym zakresie Bascoma. Jedno jednak jest pewne. Każdy program tego typu może działać sekwencyjnie. Oznacza to, że wywoływanie kolejnych procedur w procedurze działać musi. Jest jednak tzw granica zagnieżdzeń. Może ona wynika z możliwości samego kompilatora (programu tłumaczącego - w tym wypadku Twoim nie sądzę aby tak było), albo...
mov DPTR, .Tablica_instrukcji mov A,{instrukcja} jmp (at)A+DPTR Pomijając fakt, że nie mam pewności czy ten kawałek kodu jest poprawny to mam problem ze zbudowaniem tablicy adresów. Pomysł jest dobry, ale wykonanie złe ;), albo zrobisz pomnożysz A przez 2 albo 3 i pod adresem tablica instrukcji zrobisz serie skoków (bliski ma 2 bajty, daleki...
wiesz, zdaje sie że Fix "odrzuca" część ułamkową a round zaokragla (matematycznie - w góre lub dół). to moze powodowac te błędy
Wydaje mi się, że kompilator nie ma problemu z funkcją "mod" (dlatego też dwie ostatnie cyfry się zgadzają), tylko przy dzieleniu zmiennej typu word, dającej zmienną typu byte jako wynik.
Zmiennej lokalnej nie dasz do DMA. Znaczy dać by się dało bo jakiś adres ona tam ma. Przynajmniej w BASCOMie który nie optymalizuje kodu a więc wszystkie dane mieli na pamięci RAM. Tym RAMem jest stos. W każdym razie chodzi o to że zmienna lokalna jest tracona po wyjściu z funkcji. Stos nie znika ale jest wykorzystywany przez coś innego. Więc miejsce...
Wszystko powinno wyjaśnić to: Jeśli w buforze nie ma żadnego znaku funkcja zwraca zero. Można najpierw sprawdzić czy w buforze transmisji znajduje się jakikolwiek znak. W tym celu należy skorzystać z funkcji ISCHARWAITING() . Nie sprawdzasz wogóle czy znak jest w buforze, zatem dostajesz głupoty.
Poczytaj w pomocy o instrukcjach: DATA , RESTORE, READ... To się nie nadaje , ponieważ Restore potrzebuje etykiety , a Read to odczyt sekwencyjny i nie da sie wybrać konkretnego elementu tablicy , tylko trzeba odczytywać kolejno , począwszy od pierwszego elementu. Ale ... Bascom AVR posiada funkcje , za pomocą których można naśladować mechanizm wskaźników...
bascom funkcja bascom funkcja przerwaniu funkcja funkcji bascom
iskry nagrzeje regulacja kontrast wyświetlacz bosch agregat prądotwórczy
zderzak naprawa zderzak naprawa
Renault Maxity 2.5 - Gaśnięcie silnika po rozgrzaniu Aplikacje na Androida jako pilot do Panasonic TX-P42ST50