http://www.elektroda.pl/rtvforum/topic14...
Zobacz http://wiki.mcselec.com/bavr/CONFIG_SING...
Ja zrobilem tak: licz = 789 Setki = Licz / 100 Temp = Licz Mod 100 Dziesiatki = Temp / 10 Jednosci = Temp Mod 10 Reset Wysw3 Liczba = Lookup(jednosci , Znaki) Waitms 3 Set Wysw3 Reset Wysw2 Liczba = Lookup(dziesiatki , Znaki) Waitms 3 Set Wysw2 Reset Wysw1 Liczba = Lookup(setki , Znaki) Waitms 3 Set Wysw1 i dziala bez problemu
Myślałem o czymś takim :) Dim Ax(7) As Byte , X As Byte , Pozycja As Byte Dim Suma As Long Config Debounce = 100 ' lub ... jak kto woli ;) Poz Alias P3.7 Zmien Alias P3.5 Star Alias P3.1 Pozycja = 1 Cls Do Locate 1 , 1 Lcd "wprowadz liczbe" ; Pozycja Locate 2 , 1 For X = 1 To 7 Lcd Ax(x); Next X Debounce Poz , 0 , Incrpozycja...
Read Zmienna Portc.0 = Zmienna.0 Portc.1 = Zmienna.1 Portb.0 = Zmienna.2 Portb.7 = Zmienna.3 ...
Witam Potrzebuję zaokrąglić liczbę zmiennoprzecinkową do liczby całkowitej (do późniejszego wyświetlenia na wietlaczu LED (rozbijanie liczby na pojedyncze cyfry działa poprawnie). Do tego celu wykorzystałem funkcję Round. Zgodnie z instrukcją Bascoma należy zrobić to tak: [syntax=vbnet] dim A as Long, B as Long A=Round(B) [/syntax] Rozumiem, że gdyby...
Jeden problem rozwiązany Jak zrobić zmienny waitms... Zerknąć do Help-a i tam przeczytać , że argumentem funkcji Waitms jest Byte , czyli maksymalna wartość to 255. Jeśli dokładność odmierzanego czasu może być PI * OKO , to skorzystać z dobrodziejstwa , jakim jest Subroutine(Arg) lub Gosub To Label .Jeśli chcemy osiągnąć w miarę dużą dokładność , to...
Dokładnie, poza tym to wcale nie musi być zmienna w EEPROM, SRAM przecież przez WD nie jest ruszany. Więc o ile Bascom ma coś takiego jak nieinicjalizowane segementy pamięci to zmienną można trzymać w SRAM i inkrementować po odczytaniu statusu z MCUCSR.
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....
Zamiast wysyłać przez RS232 binarnie - co często przy przesyłaniu większych porcji danych przez początkujących będzie się kończyło samymi problemami - to nie łatwiej ci zamieniać przesyłane liczby na stringi a po odebraniu ze stringów na liczby. Dzięki temu twoja ramka będzie mogła być po ludzku zakończona znakiem ENTER a co za tym idzie wszystko co...
Po prostu zrób zmienną np: liczba=&B101101100----- twoja liczba zmienna9=liczba.0------- najmłodszy bit tej liczby zmienna8=liczba.1------- i tak dalej
Witam "integer" nie jest zmienną tekstową. Integer przyjmuje watrtość liczby całkowitej w zakresie od- 32768 do +32767 Integer nie zapisuje ułamków.
To w takim razie teraz cytat z helpa Bascom'a: Rozdział: Podstawy języka BASCOM BASIC Eksponent jest zapisany jako liczba 8 bitowa ze znakiem w kodzie U2. Jeśli najbardziej znaczący bit jest ustawiony (eksponent > 128) to eksponent jest traktowany jako ujemny. Bit znaku określa znak liczby przechowywanej w zmiennej. Wartość 0 oznacza liczbę dodatnią,...
Widzę, że moderatorzy posprzątali zwyczajowy hejt na Bascoma :D Niestety przy okazji usunięto też ważną informację. Rzeczywiście potrzebujesz instrukcji VAL https://wiki.mcselec.com/bavr/VAL do zamiany reprezentacji tekstowej liczby na wartość liczbową. W drugą stronę, jeśli chcesz wysłać zmienną WORD do komputera możesz zrobić to wprost. Bascom sam...
Nie ma maksymalnej liczby tylko możliwości piszącego program . Jeżeli to są początki przygody z Bascom'em to pozostań przy jednej pętli Do..Loop . A jeżeli nie kompiluje to zaremuj wszystko co w pętli i dopiero krok po kroku dodawaj nowe linie kodu tworzące logiczną całość , cały czas kompilując ( sprawdzając poprawność kodu ) . Nigdy nie pisz programu...
MUSISZ zmienić na: [syntax=vbnet]Dim R As Byte Dim G As Byte Dim B As Byte[/syntax] Przepraszam bardzo, praktycznie już zapomniałem języka Bascom :(. Lecz jeśli tylko będę mógł udzielić pomocy, postaram się to zrobić.
Zapis koloru w postaci HEXa, to po prostu konwersja liczby z systemu dziesiętnego na szesnastkowy. Np. kolor jasny zielony: rgb(173,255,47) == #ADFF2F
Error 10:Wrong type(bit,byte,integer,word,or string) Linia przy której Bascom protestuje , ma za zadanie zmienić znak zmiennej T2 , na przeciwny.To co przechodzi w BascomAVR , nie działa na Bascom8051-fakt.Każdy , kto chce pisać jakiekolwiek programy na uP czy uC , nie może być z algebrą na bakier :D 2 przykłady: If T2 < 0 Then T2 = T2 * -1 lub...
Kłania się po prostu - najprostsza matematyka ;) masz np liczbę 123 i chcesz wyodrębnić poszczególne cyfry żeby je po kolei wrzucić na wyświetlacz LED 1. dzielisz liczbę 123 przez 100 - resztę z dzielenia odrzucasz i pozostanie ci cyfra odpowiedzialna za setki czyli 1 - prawda ? ;) 2. odejmujesz od liczby 123 liczbę 100 - bo wyżej już wykonywałeś dzielenie...
a po co masz incr i decr enkoder? bascom jak juz to sam zwieksza i zmniejsza te liczby jak krecisz enkoderem http://avrhelp.mcselec.com/index.html?en... zajrzyj moze pomoze
W sumie można, lecz autor chciał mieć format byte, domyślam się że potrzebne to mu było do wyświetlania liczby na wyświetlaczach siedmiosegmentowych. Jeżeli tak, to Ciekawy jestem czy autor korzysta z lini Data i instrukcji lookup(), czy może z select case?
Kolego mikroprocesor jest na tyle szybki że jak ty naciśniesz przycisk to on zdąży kilka razy zwiększyć zmienną A. Spróbuj w pętli ustawień wstawić jakieś opóźnienie np. 1 sekundę. Zobacz jak się zmieni działanie programu. Nie masz tez ograniczonej zmiennej A. Trzymając przycisk możesz sobie zmieną A zwiększyć lub zmiejszac że może przyjąć wartości...
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...
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...
CRC8 liczy CRC z określonej liczby bajtów danych. Checksum liczy sumę kontrolną ze stringa. Czyli nie dość że działa na innych parametrach, to jeszcze to nie to samo (CRC <> suma kontrolna). Ja bym zrobił tak: W nadajniku liczysz CRC. W odbiorniku też liczysz CRC i sprawdzasz czy zgadza się z tym któro było policzone w nadajniku. Tyle. Licz co...
BASCOM może mieć problemy z odjęciem od liczby 65536 zmiennej Word lub Integer. To po pierwsze. Więc zastosuj zmienne typu Long. W dodatku stosując offset (wartość odniesienia) nawet zoptymalizowanie programu nie pozwoli zastosować zmiennych dwubajtowych, bo niektóre wyniki będą miały wartości większe od 65535 (lub inaczej: dodatnie wartości mogą wyskoczyć...
Więc tak potrzebuje wyświetlić liczbę w formacie x.x. I nie wiem jak to zrobić próbowałem tak iż daną liczbę mnożyłem razy dziesięć zaokrąglałem do liczby całkowitej funkcją round a następnie robiłem dzieliłem na dziesięć ale na wyświetlaczu lcd i tak pojawiało mi się kupę liczb po przecinku w formacie x.x00000001 lub podobne x.x999999991. Jak to zrobić...
mówiąc o postaci HEX miałem na myśli 2 liczby w zapisie szesnastkowym, np: E1 99, które znajdziesz w prawie każdym programie zapisującym fusebity (w MkAvrCalculatorze są to 2 pola na górze z tymi liczbami zapisanymi fioletową czcionką). Co do CKOPT, odznacz go. Przydaje się on zaznaczony przy większych kwarcach (16MHz i więcej), tutaj lepiej, żeby był...
[syntax=basic4gl] $regfile = "m644pdef.dat" $crystal = 16000000 $baud = 9600 $hwstack = 64 $swstack = 64 $framesize = 64 'konfiguracja pinow wyswietlacza LCD; inicjalizacja wyswietlacza Config Lcd = 20 * 4 Config Lcdpin = Pin , Rs = Portc.2 , E = Portc.3 , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 Cursor Off Noblink Cls Dim Wart_adc...
. Zamierzam zrobić tak by mogli wprowadzić korektę (jeśli będzie potrzebna) i zapisać w eeprom. czy to dobry pomysł? Jakoś tak; $Crystal=12000000 Config Timer1 = Timer , Prescale = 8 On Timer1 Inter_1mS Inter_1mS: Counter1 = Counter1 + Licznik (64036 - wychodzi z obliczeń, że da to 1ms) /tu odliczę sobie 103/ Błednie to rozumujesz, albo błednie podałeś...
No dobra , będzie łopatologicznie. Na zdjęciu , które sam wkleiłeś powyżej , są 4 rzędy "okienek" , które można zaznaczyć(pojwi się taki ptaszek) lub odznaczyć(puste okienko). Ciebie interesują 2 środkowe rzędy czyli fuse bits.I teraz legenda: *-okienko zaznaczone O-okienko nie zaznaczone Po prawej stronie każdego rzędu, znajduje się liczba w formacie...
Pierwsza sprawa - po Bascomie nie masz się co spodziewać optymalnego programu, to raczej język do zrobienia czegoś na szybko i bez większej znajomości programowania. Niestety, do poważniejszych zadań nadaje się w zasadzie tylko C. Druga sprawa - pewnie jest tak - w C, kiedy tylko zadeklarujesz zmienną, kompilator i tak ją usunie, jeśli jej nie używasz....
Witam Jeśli dobrze rozumiem zdanie: "na zmienienie wartości string odczytanej z eeprom na zwykły tekst" masz na myśli zamianę liczby (zapisanej w kodzie ASCII ?) na jej odpowiednik znakowy. Program, który wykorzystałeś bazuje na kodach ASCII znaków, (komentarz przed tabelą znaków Fontlookop), dlatego też po mojemu niepotrzebnie stosujesz zapis: Czytaj_str...
Witam! Zgadza się, funkcja Rnd() powoduje generowanie liczb pseudolosowych według pewnego określonego algorytmu. Aby uzyskać liczby "bardziej" losowe, oraz inną sekwencję liczb po każdym restarcie układu można zmienić podstawę generatora funkcji pseudolosowej. Dim ___rseed As Word ___rseed = Wartosc Jako Wartosc można podstawić wyjście przetwornika...
Dzisiaj akurat potrzebowałem rejestru HC595 do rozszerzenia liczby wyjść użytecznych. Poniżej fragment kodu w bascomie. Przypisane nazwy odpowiadają katalogowym. Zmienną Portx traktujemy jak zwykły 8 bitowy port wyjściowy. Kod z pod etykiety 'obsługa rejestru' wstawiamy w pętli głównej programu, aby rejestr był na bieżąco odświeżany. [syntax=basic4gl]...
Witam, Mam zapytanie, Mam klawiaturę 6 przycisków połączonych do jednego wejśća analogowego A.0 Pytanie brzmi, jak W Bascom napisać program żeby wiedział który przycisk naciśąlem Takie klawiatury zbudowane są zazwyczaj z pewnej liczby oporników, przyciskanie klawiszy powoduje jakieś zmiany ich wypadkowej rezystancji. Musisz zbudować dzielnik składający...
'do liczby 1536 trzeba by jeszcze coś dolożyć, na wykonanie instrukcji Zasadniczo nie trzeba nic dokładać, bo wartość timera jest inkrementowana sprzętowo od razu (w kolejnym cyklu maszynowym). Czyli już w trakcie obsługi przerwania. Jeżeli obsługa timera zmieści się w 255 cyklach maszynowych, to zmieniany jest tylko młodszy bajt timera - czyli w procedurze...
To nie Bascom jest przyczyną tylko źle napisany program ;). 1. odczyt timera1 16bit odbywa się po przez rejestr pomocniczy TEMP, ten rejestr jest też używany przez inne procedury i funkcje i jeśli jest użyty to właśnie niszczona jest wartość High timer1 bo ona tam jest wpisana gdy używasz komendy. wpisując tak timer1 do tablicy możesz gubić High timer1....
Jak gorzej z programem, skoro Bo chyba nie mówisz o kodzie do PWMa? Tosz to 1 linijka kodu Mamy cię nie namawiać na PLL, sprzężenia zwrotne i głowice sterowane cyfrowo - ok, ale dalej nie rozumiem istoty problemu. Potrzebujesz przecież zwykły DAC. Może jeden kanał, może dwa. Czy ten DAC zbudujesz w oparciu o DPWM, czy o dedykowany scalak, z sprzężeniem...
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,ma liczyć litry tak jak dystrybutor . Dodano po 2 Nie wiem w jaki sposób dodawac litry do zmiennej po przekroczeniu okreslonej liczby impulsów z przepływomierza to co znalazłem to liczone wszystkie w czasie a tu chyba chodzi o przepełnienie licznika Czas tu nie ma znaczenia! Użyj dowolny timer w charakterze licznika (Counter), i tak jak sugerowano...
Pytana do układu: 1. P1 i P2 podciągnięte do plusa za pomocą rezystorów? Bo w programie nie masz "włączonego" wewnętrznego podciągnięcia? Jeden z twoich problemów to: Po naciśnięciu guzika zmniejszającego wartość spada ale dzieje się to bardzo powoli tak jak by układ się przycinał na czas odczytu temp. nie dziw się ponieważ w funkcji Odczyt_t podczas...
Wydaje mi się, że najpierw powinno być „uruchomione” odliczanie tych 0,1 sek, wyzwalane pierwszym pikiem z „paczki”. Potem trzeba odczekać te 0,1 sekundy na zanik „szumów” i zacząć zliczanie w czasie 0,9 sek. Ilość zliczonych pików podzielona przez czas da mi częstotliwość. Wynik ma się utrzymywać na wyświetlaczu...
NA "setki" "dziesiatki" i "jednosci" NIE WIEM JAK ZROBIC, zeby przy malych predkosciach (ponizej 10km/h) wartosc na wyswietlaczach byla zmieniana co 1 sekunde (4xtimer1) Dim Speed As Byte ' Prędkość Dim Tmp As Byte Dim I As Byte Dim Index As Byte Dim Mmv as Byte *** Rozbicie na 3 cyfry *** Dim Cyfry(3) As Byte Speed = 147 ' W Polsce to zakazane...
http://obrazki.elektroda.pl/8267947700_1... Ponad 20 lat temu jako amator hobbysta budowałem proste układy elektroniczne. Studia i styczność z informatyką spowodowały, że porzuciłem hobby pod nazwą "składanie elektroniki" na rzecz "składanie programów komputerowych". W bieżącym roku (2011) dzięki uprzejmości kolegi Jacka.M, który okazał...
Dziękuję za zainteresowane. Tak , grafiki będą wyświetlane zawsze w tym samym miejscu, na pełnym ekranie o formacie 240*128. Bitmapy jakie konwertowałem są monochromatyczne 1 bitowe. Rzeczywiście rysuję je ręcznie, piksel po pikselu (masakra) . Jeśli jest możliwość abym nie musiał ich konwertować to by było idealnie gdyż mogę sobie na bieżąco zmieniać...
Witam. Z definicji liczba instrukcji w obsłudze przerwania powinna być minimalna, by mogło się ono maksymalnie szybko wykonać. Tymczasem w przypadku mojego programu liczba instrukcji w obsłudze przerwania była stosunkowo duża. By wybrnąć z tego problemu zamierzam w przerwaniu ustawić flagę która oznacza, że przerwanie zostało wygenerowane, natomiast...
Witam. Pytanie jak w temacie. Jak wylosowac liczbę z przedziału 0-9 w bascom? Pozdrawiam Soohy_tm
Coś takiego: $regfile = "m8def.dat" $crystal = 8000000 Config Portd.0 = Output Portd = &B11111111 Config Portb.0 = Input Portb = &B00000000 Declare Sub 7 7: Portd = 00011100 Return Do Call 7 Waitms 300 Portd = 00000000 Waitms 300 Loop End Chciałem że by program wyświetlał mi na wyświetlaczu pojedynczym lcd cyfrę 7, odczekał a potem żeby...
Przecież w u32 też się nie zmieści. ps. Zamiast Long możesz użyć Dword ale to i tak za mało na liczbę z Twojego wyliczenia.
Witam Chciałbym z liczby np. 34 Uzyskać dziesiątki i jedności Robię sobie coś takiego: Dim A As Byte , B As Byte , Wart As byte Wart = 34 Wart = Makebcd(wart) A = Wart And &B00001111 Shift Wart , Right , 4 B = Wart I w zmiennej A mam jedności a w zmiennej B mam setki. Chciałem sobie teraz zrobić tak z liczbami większymi od 99(liczby 3 cyfrowe)...
Witam. Mam zapisaną liczbę binarną w postaci "String * 14" i próbuje ją zamienić na dec. Próbowałem komendą binval, ale niestety liczba wynikowa może przyjąć wartość max 255 czyli (bajt), a moje wartości będą w granicach 10000 do 14000(dec). Ma ktoś jakiś pomysł ? Pozdrawiam.
Witam, Aktualnie programuję robota samojezdnego w Bascom'ie, i doszedłem do momentu, w którym mając 3 zmienne typu Byte (Var1, Var2 i Var3), muszę znaleźć "środkową" liczbę... Chodzi mi o to, że np. mając liczby: 86, 42, 230, Bascom na końcu, w zmiennej Var4, poda mi "środkową" liczbę z tych trzech, czyli w tym wypadku 86... Aktualnie uczę się programowania...
Witam! Mam tu taki kawałek kodu: Dim Tick_time As Single Dim Length As Single Dim Mps As Integer Dim Fps As Integer Dim Fff As Single Dim Tick_count As Integer Dim Czas As Single Tick_time = 0.000096 Czas = Tick_count * Tick_time Mps = Length / Czas Fff = Length / Czas Fff = Fff * 10 Fps = Fff / 3 Tick_count = 0 Cls Lcd Mps Lcd " m/s " Lowerline...
Witam. Mam w zmiennej bitowej jakąś liczbę z zakresu 0-60, np. 34. Czy można tą liczbę rozbić na 2 cyfry - przypisując do pierwszej zmiennej bajtowej cyfrę 3, a do drugiej 4? Czy są jakieś instrukcje w Bascomie, czy muszę to robić za pomocą SELECT CASE: Select case liczba ... case 34 Cyfra1=3 Cyfra2=4 .... End select
Witam Mam dwie zmienne np: a=25 b=5 i jak to zapisać w bascomie aby: c=25,5 potem zrobić coś takiego: d=(25,5-12,3)*10 już sam nie wiem jak to zrobić :( próbowałem z instrukcją const ale nie chciała działać i cały czas miałem błąd nr. 222 Pozdrawiam
Witam Napisałem program który zlicza impulsy z przycisku ale nie chce mi wyświetlać wyniku, wyskakuje taki komunikat: Error : 35 Line :30 3 parameters expected a to jest ten program: Dim J As Byte , D As Byte , S As Byte , T As Byte Dim Wynik As Byte Config Portb = 255 : Portb = &B11111111 Config Portd = &B1111100 : Portd = &B1111111 Cls Do...
Jak polaczyc dwie 8 bitowe liczby w jedna 16 bitowa ? Mozna to zrobic za pomoca operatorow logicznych AND lun OR ? Przyklad: pierwsza liczba 8 bitow np (a7,a6,a5,a4,a3,a2,a1,a0) druga liczba 8 bitow np (b7,b6,b5,b4,b3,b2,b1,b0) wynik 16 bitowy ma wygladac tak: a7,a6,a5,a4,a3,a2,a1,a0,b7,b6,b5,b4,b3,b... z gory dzieki za pomoc Ps musze to zrobic...
Witam Szanownych Kolegow... Czy posiada ktos moze opracowana procedure dodawania liczb calkowitych (wprowadzanych z klawiatury) w Bascom? Liczby sa 2 cyfrowe. Poczatkowa liczba jest zero. jesli mam operacje dodawania, wynik jest zwiekszany i zapamietany, podobnie z odejmowaniem... Bardzo prosze o pomoc.
Witam Właśnie próbuję stworzyć sobie menu (jak w telefonach) pozycja pod pozycją. Wyobraziłem sobie, że pierwsza "warstwa" menu będzie miała przypisane wartości jedynkowe, druga dziesiątki, trzecia setki. Przy powrocie do poprzedniego menu, potrzebuję podzielić wartość numeru menu przez 10 i pozbyć się reszty dziesiętnej. Wykombinowałem to w ten sposób:...
bascom dzielenie liczby bascom liczby całkowite bascom wyświetlanie liczby
oporność głośnik volvo silnika tecumseh ustawienie zaworów
głośnik modelarski zmywarka hisense
BMW X3 E83 2.0i N46B20B - brak przyspieszenia i szarpanie Lokalizacja modułu PTCU w Mercedesie W213 220d