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" ;
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]
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...
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.
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]
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...
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ę...
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...
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
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...
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,...
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...
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...
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...
_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
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_...
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
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...
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...
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:("...
Ł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...
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...
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....
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...
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 '************************...
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...
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...
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...
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...
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)...
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...
Również nie jestem Bascomowcem ale być może moje uwagi okażą się cenne. Po instrukcji Print "{008}5r", dane jest 10 ms opóźnienia. W tym czasie slave mógł już przesłać wszystkie swoje dane - a master jeszcze nie rozpoczął nasłuchu. Inną sprawą jest to, że 100 obiegów pętli w procedurze Odczyt_zn może trwać krócej niż transmisja jednego znaku przez UART...
bascom print rs485 print bascom bascom instrukcja print
uszkodzić czujnik podajnik satel sabotaż sygnalizator t370hw03 matryca
thomson 40fe5606 bosch 0538201041
Renault Clio 1.2 2017 – dymienie z wydechu, biały, niebieski lub czarny dym, diagnostyka Jak sprawdzić logowania na Messengerze?