Otrzymasz znaki "2" "5" oraz znak Enter. http://www.elektroda.pl/rtvforum/viewtop... A. To Ty, dopiero zauważyłem ;p
...Albo wyrzuciś print albo przerwanie od serial... Albo ... troszkę pokombinować :D Wystarczy że się wie jak działa proc i Bascom ;) W zasadzie wszystko opisał szymtro , więc skupię się na programiku $large $crystal = 11059200 '$regfile = "420.dat" 'DS89c420 $baud = 19200 On Serial Seriall ' odebrany znak Dim Uli As Byte ' odebrano znak...
Po "a" dodaj średnik. Print "a" ;
Ja już za mało pamiętam Bascoma żeby tu podpowiedzieć. Ale na pewno można na własny sposób oprogramować przerwania - tyle że to będzie niejako wyważanie głową drzwi bo z jednej strony Bascom ma fajnie napisaną sprzętową obsługę RS232 tylko trzeba umiec ją wykorzystać. Ale kurczę zaglądam teraz do HELP'a bascoma a tam jak byk masz napisane: Remarks pin...
select-case akceptuje również grupy i zakresy. Fakt, można napisać: switch (wartosc & xxx) ale zasadniczo, case to jedna wartość. BASCOM: select-case, przykład: [syntax=vbnet] Select Case I Case 1 : Print "1" Case 2 : Print "2" Case 3 To 5 : Print "3-5" Case Is >= 10 : Print ">= 10" Case Else : Print "Not in Case statement" End Select [/syntax]
Można to tak zrobić: [syntax=basic4gl]Dim Zdanie As String * 30 Dim Zdanie_array(30) As Byte At Zdanie Overlay Zdanie = "Dzien dobry/Elektrod/" Print Chr(zdanie_array(12))[/syntax]
Możesz zrobić co chcesz byleby polecenie Config 1wire było już po konfiguracjach portu. Co do UARTu to też nie ma znaczenia, bo jeśli Bascom wykryje użycie w kodzie Config Serialin/Serialout lub nawet samo użycie Print to kompiler ustawi je sam automatycznie.
Tak prymitywnie to wyślij to sobie ze spacją i potem podziel otrzymany string szukajac spacji [syntax=vbnet] Print V1 ; " " ; A1 Dim MyArray(2) As String * 5 , M As Byte M = Split(CalyOdebranyString , MyArray(1) , " ") 'podziel szukając spacji Locate 1 , 1 : Lcd MyArray(1) Locate 2 , 1 : Lcd MyArray(2)[/syntax] Radzę też napisać u góry w kodzie : [syntax=vbnet]Config...
Wystarczą dwie instrukcje MAKEINT i SHIFT : [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 1000000 $baud = 2400 Dim A As Byte , B As Byte , C As Word A = &b00110000 B = &B00100000 C = Makeint(b , A) ' z dwóch bajtów zrób słowo Shift C , Right , 5 ' zmienną C przesuń w prawo o 5 bitów Print Bin(a) Print Bin(b) Print Bin(c) End[/syntax]
Cześć. Proszę ten poradnik będzie dla Ciebie pomocny. Czy to już tablica? Gdzie ją umieścić? Tak, to jest tablica. Kompilator sam załatwi sprawę. [syntax=vbnet]$regfile = "m48def.dat" $crystal = 4000000 $baud = 19200 $hwstack = 32 $swstack = 10 $framesize = 40 Dim B1 As Byte , I As Integer B1 = Lookup(2 , Dta) Print B1 I = Lookup(0 , Dta2) Print I End...
Może tak zobacz: $regfile = "m8def.dat" $crystal = 8000000 $BAUD = 9600 dim test1 as String dim test2 as String test1 = "1987" Do Input test2 Print "Wprowadzone haslo:" ; test2 If test1 = test2 then Print "Haslo poprawne" Loop End
Poniżej przykładowe instrukcje wyjęte z programu. Print "ATE0" ; Chr(13) Print "ATD604019159;" ; Chr(13) Print "ATH" ; Chr(13) Wysłanie SMS'a kończymy Print Chr(26); Język programowania to Bascom Telefon Siemens x35 Komunikacja po UART i to, czy będą działać komendy i tryb PDU zależy od telefonu. Wpisz w szukajkę "PDU" a zobaczysz, że jest z czego się...
Wszstko dlatego, iż zmienne typu Single są nieco odmiennie zapamiętywane w pamięci i mają wyjątki (np. NaN, QNaN, SNaN) które nie są liczbami, i każda operacja arytmetyczna z nimi powinna wywołać błąd operacji i jego zgłoszenie - a tego Bascom niestety nie obsługuje (jak i spora ilość innych kompilatorów). Operacja z jawną zamianą znaku jest bezpieczniejsza...
Pulsein zmiennaH , PIND , 1 , 1 'detekcja od "1" Pulsein zmiennaL , PIND , 1 , 0 'detekcja od "0" Wynik = zmiennaH + zmiennaL Print Wynik 'Odczytanie ilości czasu jaki trwał miedzy H+L
Można zrobić tak: $hwstack = 32 $swstack = 32 $framesize = 32 Dim Aa As Double Dim B As Double Aa = 5 Aa = Aa / 6 Print Aa B = Sin(0.2) Print B Do Loop End ...i będzie działać ! Pozdrawiam...
To już załatwia bascom - jest ustawione na Auto. co do sedna, sprawdziłem dziś na swoim układzie kanały 0-7 ADC następującym programem: [syntax=basic4gl] $regfile = "m2560def.dat" $crystal = 16000000 Config Adc = Single , Prescaler = Auto , Reference = Avcc Dim Wart_adc1 As Word Dim Wart_adc2 As Word Start Adc 'AVCC bezpośrednio do 5V, AREF w powietrzu,...
Witam , kiedyś napisałem w bascomie połączeni esp8266 z atmega... to działało :) aż pewnego dnia przestało działać :( Kolega odkopał temat a ja mam nadzieję znalazłem ciekawe rozwiązanie, jest to wsad do esp8266 który w samym kodzie ma obsługę ntp . Działanie proste po połączeniu esp z siecią wifi polecaniami AT wysyłamy zapytanie do esp8266 np : Print...
Tu masz przykład który możesz odpalić w symulatorze Bascom z innymi liczbami. Kod dwukrotnie wywołuje funkcję Podziel_liczbe() tyle że raz liczba ma 321 a za drugim razem tylko 1. Kod ma włączone wygaszanie zer wiodących więc przy jeden napisze tylko 1 z prawej strony a nie 001. https://obrazki.elektroda.pl/6479764500_...
A od czego jest HELP !? "Przeznaczenie: Zwraca określoną liczbę znaków z tekstu począwszy od lewej strony. Składnia: zmienna = LEFT( tekst , il_znaków ) gdzie zmiennazmienna tekstowa, do której przepisane będą skopiowane znaki, teksttekst z którego skopiowane będą znaki, il_znakówilość kopiowanych znaków. Opis: Zobacz także: RIGHT , MID Przykład: Dim...
_chip przechowuje liczbe typu longer opisujaca rodzaj procka... Mozesz zrobic tak ze napiszesz programik dla np mega8 (#include="m8def.dat" )skompilujesz i w symulatorze wykonasz print _chip i juz masz numer procka pod jakim jest mega8, analogicznie rob z innymi
Może coś takiego : Dim Str1 As String * 10 Dim Koniec As Byte Dim Key As Byte Str1 = "" Koniec = 0 Do Key = Waitkey() 'pobieranie znaku, tu z terminala Select Case Key Case 13 : Koniec = 1 ' np. kod ENTER = 13 Case Else : Str1 = Str1 + Chr(key) ' inne znaki dodaje do str1 End Select If Len(str1) = 10 Then Koniec...
No to spróbuj tego: $regfile = "m16def.dat" $crystal = 4000000 $hwstack = 32 $swstack = 32 $framesize = 32 config 1wire= portb.7 Do 1wreset if err=0 then print "PP_ok" ' czy LCD "PP_OK" - co tam masz else print "PP_err" ' j/w endif waitms 500 Loop Napisz o wyniku doświadczenia :D Piotrek
Witam Chciałem zbudowac układ który liczył by 0-9 i wyświetlane to było na siedmiosegmentowym wyświetlaczu... .......... prosze o pomoc i o jakies proste wytłumaczenie moich błędów. myslalem jeszcze o robieniu tego za pomoca rozkazu INC i dodawania tylko nie wiem jak zawartośc rejestru wystawic na wyjscia z gory dziekuje za pomoc pozdrawiam Tu masz...
Tłumaczenie pierwszego kodu. W drugim to wiadomo, że brak biblioteki ;) Mogłem się gdzieś machnąć bo pisałem w przerwie pomiędzy innymi zadaniami. Dodałem tam sobie funkcję b w funkcjach mogę deklarować Local`s które nie są później potrzebne w Global`s. [syntax=vbnet]$regfile = "m2560def.dat" '8K SRAM | 4K EEPROM $crystal = 16000000 $hwstack = 256 $swstack...
Jak wgrasz .hex'a do uC to sie przekonasz, a wtedy jesli nie bedzie dzialac to zadaj pytanie "dlaczego nie dziala?" zamiast "czy to dziala?". A odnosnie tego co juz masz to piszac wyswietlajac dane na LCD w ten sposob: {...} Lcd " T1 'c" Cls If T1 > T2 Then Deflcdchar Print , 4 , 14 , 21 , 4 , 4 , 4 , 4 , 4 ' replace ? with number...
Do $timeout = 1000000 Input "Czekam 100000 Cykli jesli bedzie ich własnie tyle no chyba że wcześniej będzie chr(13):" , zmienna Print "To bede tu :) " ; zmienna $timeout = 0 Input "Tu będę czekał wieczność jeśli nie bedzie chr(13): " , zmienna Print "I tego napisu już nie zobaczysz:("...
Trzeba nauczyć uC jak przekształcać jedno w drugie. Bascomowcy opracowali coś takiego. Sprawdzałem w symulatorze - działa. $regfile = "m128def.dat" $crystal = 8000000 Dim I As Byte Dim J As Byte Dim I1 As Byte Dim J1 As Byte Dim Pdu_len As Byte Dim Smslen As Byte Dim K As Byte Dim K1 As Byte Dim K2 As Byte Dim K3 As Byte Dim K4 As Byte Dim...
Łap bo jak zaczniesz z tym Multimaster to się nigdy z tego nie wygrzebiesz a odkrywasz tu koło na nowo :D Po pierwsze nie zauważyłem wcześniej, że już skonfigurowałeś Serial in 0. Błędem natomiast jest jest używanie Serial out 0 a potem zamiast to wrzucić do bufora to wycinasz po jednej literce ze stringa i nadajesz pojedynczo... Po prostu napisz Print...
wystarczy nieco przejrzeć helpa bascoma: [syntax=basic4gl]Config Adc = Single , Prescaler = Auto 'Now give power to the chip Start Adc 'With STOP ADC, you can remove the power from the chip 'Stop Adc Dim W As Word , Channel As Byte Channel = 0 'now read A/D value from channel 0 Do W = Getadc(channel) Print "Channel " ; Channel ; " value " ; W Incr Channel...
Nie słucha się Ciebie ani Atmegi ponieważ pomiędzy wysyłanymi bajtami wstawiasz<CR><LF> Bascom automatycznie dodaje Enter i znak końca linii kiedy coś Printujesz do portu. Jeśli tego nie chcesz to musisz postawić średnik za wysyłanym wyrażeniem Innymi słowy to teraz wygląda dla modułu tak: https://filmy.elektroda.pl/6_1489582819....
Wykombinowałem coś takiego :), przykład można uruchomić w symulatorze (dane wejściowe np. porta.1): EDIT: poprawiłem mały błąd w przykładzie, bity można nawet kopiować jeżeli port źródłowy i docelowy jest ten sam [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 16000000 $hwstack = 64 $swstack = 64 $framesize = 64 $baud = 57600 Dim Src_port_str As...
A coś takiego? [syntax=vbnet] $regfile = "m8def.dat" $crystal = 8000000 $baud = 9600 Config Portb.2 = Output : Portb.2 = 0 : Pk3 Alias Portb.2 Config Portb.1 = Output : Portb.1 = 0 : Pk2 Alias Portb.1 Config Portb.0 = Output : Portb.0 = 0 : Pk1 Alias Portb.0 Config Portd.2 = Output : Portd.2 = 0 : Led3 Alias Portd.2 Config Portd.1 = Output : Portd.1...
Witam, Jak byś zobaczył do HELPa Bascoma to byś dużo się dowiedział :) $regfile = "m128def.dat" $crystal = 16000000 $baud = 9600 'set the baud rate for the first hardware UART. $baud1 = 9600 'set the baud rate for the second hardware UART. 'when CONFIG COMx is not used, the default N,8,1 will be used Config Pinb.7 = Output Config Com1 = Dummy...
Bascom domyślnie "naciska za Ciebie Enter" przy printowaniu. Jeśli nie chcesz zatwierdzać linii bo na przykład chcesz nadać w tej samej linii jeszcze jakieś znaki lub całe stringi to stawiasz średnik . To wiadomość dla kompilatora że nie ma dodawać Entera. Rozum więc to tak, że w podpowiedzi kolegi Jaca pierwsza linia jest nadawana z enterem a w drugiej...
Witam, wymyśliłem algorytm dla liczb trzycyfrowych, przetestowałem program dla różnych liczb i działa poprawnie... Dim Liczba As Word 'Trzycyfrowa Liczba Dim S As Byte 'Setki Dim D As Byte 'Dziesiątki Dim J As Byte 'Jedności Dim X As Byte 'Zmienna Pomocnicza X Dim Y As Word 'Zmienna Pomocnicza Y Liczba = 176 'Liczba, np. 176 '************************...
kiedyś też się męczyłem i doszedłem do tego $baud = 9600 Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0 Config Serialin = Buffered , Size = 64 Config Serialout = Buffered , Size = 64 Print "COM1 INT : DONE" $baud1 = 9600 Config Com2 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1...
Masz tu prosty, sprawdzony, działający program do sterowania portami. $regfile = "m16def.dat" $crystal = 1000000 ' przelicz u siebie te zera :) Dim B As Byte Config Portb = Output Portb = &HFF Waitms 100 Open "comd.1:9600,8,n,1" For Output As #1 Open "comd.0:9600,8,n,1" For Input As #2 Do B = Inkey(#2)...
Znalazlem jakis stary programik.... odczyt 2 kanalów ADC z częstościa 100 razy na sekunde... Analize pozostawiam Tobie...(podpowiem że Help wszystko wyjaśni) Pozdrawiam $regfile = "m8def.dat" $crystal = 11059200 $baud = 19200 Config Adc = Single , Prescaler = Auto , Reference = Off Config Timer1 = Timer , Prescale = 256 On Timer1 Pomiar Enable...
To nie są problemy Bascoma, w bascomie można wiele rzeczy szybko zrobić, tylko jak ktoś go nie zna to najłatwiej i naszybciej jest na niego psioczyć i wylewać swe żale. ale ok, skoro ty (o ile dobrze zrozumiałem) w jakimś tam przerwaniu wysyłasz coś poleceniem PRINT przez łącze RS232 a następnie w tym samym przerwaniu czekasz na odbiór przez RS232 (waitkey)...
No coś w ten deseń :P Ten reaguje kiedy na końcu pojawi się znak 13 [syntax=vbnet]$regfile = "m644pdef.dat" $crystal = 16000000 $hwstack = 64 $swstack = 100 $framesize = 200 $baud = 38400 $baud1 = 38400 Config Submode = New Open "COM1:" For Binary As #1 Open "COM2:" For Binary As #2 Config Serialin0 = Buffered , Size = 100 , Bytematch = 13 ' from ESP8266...
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...
No dobra. Wywal wszystko na linii Tx telefonu do Rx procesora. Ma być połączenie bezpośrednie. Na drugim kierunku zostaw tak jak masz. Poniżej kod do testów. Powinien działać. [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 16000000 $baud = 19200 Config Lcd = 16 * 2 Config Serialin = Buffered , Size = 100 Enable Interrupts 'Declare Sub Oproznij_bufor...
Mnie zastanawia jedna rzecz, skoro korzystasz z przerwań to po jakiego grzyba tam input? Zobacz jak mozna to rozwiazac: Odebrano: Disable Urxc ' wylaczenie przerwania na czas trwania aktualnego 'Jesli licznik znakow jest mniejszy od maksymalnego rozmiaru bufora to... If Licz_znaki < Max_znakow Then '...zwieksz licznik znakow, do buforu transmisji...
Trzeba by poczytać troszku o RS485. Jeśli chodzi o sprzęt, to w zasadzie masz dwie główne możliwości. Pierwsza to półdupleks, czyli transmisja naprzemienna po tej samej parze przewodów, druga dupleks w układzie czteroprzewodowym (para przewodów od mastera, para do mastera). Dodatkowo korzystnie z punktu widzenia linii może być pociągnięcie między układami...
Jedźmy dalej incr pomiar powoduje zwiększenie zmiennej Pomiar o 1. To był przykładowy podprogram, który za każdym razem kiedy był wywołany instrukcją gosub zwiększał wartość zmiennej - nic prostszego na próbę nie da się wymyśleć. Myślałem bardziej, że za pomocą tego programu sprawdzisz czy to wszystko działa i jak będzie działało to napiszemy coś bardziej...
U góry w kodzie pod deklaracją mikrokontrolera dopisz na wszelki wypadek: http://obrazki.elektroda.pl/3749837100_1... Musisz doprowadzić do tego żeby wysyłane dane wyglądały tak samo jak z komputera. Kod nie wysyła także znaków Enter bo na końcu Print dodany jest średnik " ; " Może wystarczy go usunąć? Próbowałeś? Można napisać krótki...
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...
Niestety Jak dam instrukcję ustawienia bufora to już nic nie odbiera (nadawać nadaje). A włączyłeś przerwania :?: Bez bufora(przerwanie RX) , ciężko dogadać się z fonem :( Właśnie zauważyłem że jak zepnę RX z TX uP (wywale printa z głównej pętli i dam wait na 5sek. ) to odbiór też jest na 3 znaki :/ Czy wiesz jak wygląda transmisja asynchroniczna ,...
Te Waity do diody Led żeby patrzeć czy program się zawiesił nie są szczęśliwym rozwiązaniem dla programowego portu :D Zobacz tak. Dioda błyśnie jak coś odbierze i oczywiście wyśle Ci to drugim portem software`owym. [syntax=vbnet]$regfile = "m328pdef.dat" $crystal = 8000000 $hwstack = 32 ' default use 32 for the hardware stack $swstack = 10 ' default...
Tak wiem że należy odpalić timer na początku i zatrzymać na końcu i odczytać jego wartość.. no nic. Dziękuję za wypowiedzi tak czy inaczej.. Odp. kol. Draco była troche sarkastyczna, bo na tak prostą procedurę nikt, kto ma choć troche rozeznania w tej dziedzinie chyba (!) nie szuka pomocy. Mopzesz to zrobić na kilka sposobów: 1. mierzyc czas metodą...
print bascom rs485 print bascom bascom instrukcja print
naprawa maskownicy mondeo diagnostyczny oznaczenie drukarka
czyszczenie pralki reset błędu pralki bosch
Grzałka do bojlera Kospel 140l z termostatem 75°C – Kospel, Backer, Selfa, Eliko, ceny, gdzie kupić Husqvarna 136 – gaśnie po zdjęciu ssania, czyszczenie gaźnika, regulacja, typowe usterki