, przetłumacz poniższy kod z BASCOM AVR na Arduino Uno: $regfile = "attiny2313.dat" $crystal = 8000000 Dim A As Byte a=0 Config Pind.6 = Output led Alias Portd.6 led= 0 Config Pind.0 = Input Portd.0 = 1 Sw Alias Pind.0 do if a >1 then a=0 if sw=0 then bitwait sw, set incr a End If if a=1 then toggle led waitms 100 else led=0 end if loop end Przekształcanie...
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...
Balu nie wiem co to ddr DDRx jest to rejestr, który służy do określenia kierunku transmisji portu. Input lub Output.
Jeślii masz wolny pin to możesz sobie na nim otworzyć port COM. Taki programik wciągający cztery bajty po serialu zajmuje w Bascom 288 B a to pewnie dlatego że jeszcze musiał się zająć stosem i tablica przerwań co Ty juz pewnie tez masz zrobione więc to by odpadło. Zapisujesz to sobie do Eeproma przy starcie i gotowe. [syntax=vbnet]$regfile = "attiny13A.dat"...
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:("...
Zainteresuj się funkcją Input Capture Unit - opis oraz przykład dla C: http://mikrokontrolery.blogspot.com/2011...
Czy nie lepiej by było zamiast bawić się w pojedyncze znaki odebrać cały tekst hurtem. [syntax=vbnet] Do If Tekst = "Zgaś" Then portc.1 = 0 Elseif Tekst = "Zapal" Then portc.1 = 1 End If Loop End odbierz: Input Tekst Return [/syntax]
Do autora - przyjrzyj się [syntax=vbnet]Config Portd.5 = Output : Dc_wlacz Alias Portd.5 Config Portd.1 = Input : S12_wolniej Alias Portd.1 Config Portd.2 = Input : S11_szybc Alias Portd.2 Config Pina.0 = Output : Kier_lewo Alias Pina.0 Config Pina.1 = Output : Kier_prawo Alias Pina.1 Config Pina.4 = Input : S10_start Alias Pina.4 Config Pina.5 = Input...
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
Zajętość flash`a z 46% na 38% :P Tak bym się nie bawił, ale w Tiny13 to ma znaczenie bo można coś jeszcze upchnąć ahahaha :D [syntax=vbnet]$regfile = "attiny13.dat" $crystal = 9600000 $hwstack=20 $swstack = 8 $framesize = 16 'Declare Sub Zmiana Config Pinb.2 = Input Set Portb.2 Config Portb. 4 = Output Config Servos = 1 , Servo1 = Portb.4 , Reload =...
Witam A u kolegi bascom nie wywala błędów? Port składa się z 8 pinów czyli 8bitów albo bajtu.(portd- portd.0;portd.1;.....do portd.7 czyli 8pinów Więc taki zapis portd.4=255 jest błędny bo jednemu bitowi nie możemy nadać wartości 255 możemy albo 0 albo 1.(a prawidłowo portd.4=1 albo0 ) Taki zapis jest poprawny portc=255 co jest równoważne z 11111111...
Wejście (pin procka PORTB.0) programujesz jako wejście . Ustawiasz wysoki poziom tego wejścia , tak aby naciśnięcie przycisku (zwarcie do masy) wymusiło niski poziom na tym wejściu , wykrywany przez program jako If PINB.0 = 0 Then ' coś do wykonania (naciśnięty przycisk)
Po prostu nie możesz korzystać z instrukcji Input tylko z instrukcji np. Inkey i odbierać 128 bajtów o dowolnej zawartości (nawet bajtów zerowych) Po odebraniu 128 bajtów sprawdzić sumę kontrolną, tak jak pisał kolega mirekk36. Jeśli odebrałeś wysłasz ack spowrotem np. z sumą crc ramki Instrukcja Input się nie nadaje do tego celu. Tylko odbieranie za...
Przy instrukcji Input "odebranie znaku <CR> (kod 13) kończy wprowadzanie danych dla bieżącej zmiennej." A co jeśli znak <CR> nie zostanie nadany? Wtedy program stoi i czeka!
Ja używam takiego kodu - odbiornika. Config LCD dostosuj do swoich potrzeb. Działa na każdym pilocie RC5. Instrukcję Lowerline wyrzuć. [syntax=basic4gl] 'Atmega8 Wyświetlanie z pamięcią i napisem Odczyt RC-5 $regfile = "m8def.dat" $crystal = 8000000 Dim Adress As Byte , Command As Byte , Togglebit As Bit Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4...
...Coś nie tak jest z programem: wykonywana jest cały czas pętla rc51, chociaż nie zwieram nic do masy. Gdybyś zamiast ... Config Portd.2 = Input Config Portd.3 = Input Config Portd.4 = Input Config Portd.5 = Input Config Portb.3 = Output Dim Togbit As Byte , Command As Byte , Adress As Byte S1 Alias Portd.2 S2 Alias Portd.3 S3 Alias Portd.4 S4 Alias...
w każdym uC można zastosować rezystor podciągający , w AVR z powodu dużej rozbieżności wewnętrznych rezystorów jest to zalecane szczególnie jeżeli pin / port pracuje jako wejście MirekCz ma rację nawet nie zauważyłem tego config portx odnosi się dla całego portux , natomiast config pinx.y dla konkretnego pinu portu zastosuj lepiej taki sposób konfiguracji...
... zwracam honor kolego zumek , niestety nie wiedziałem, że w bascomie set portb włącza tylko pull'upa ;) ale z drugiej strony skoro nie ma wyraźnej deklaracji w programie na początku, że port ma być wejściowy to bascom sam tak ustawia niezdefiniowane porty? Standardowo po power-up reset , bity w rejestrach portów(DDRx ,PORTx) są wyzerowane.Dla pewności...
Zmieniłem program na ATmega8 ( bo ATmega16 nie posiadam ) [syntax=basic4gl] '$regfile = "m16def.dat" $regfile = "m8def.DAT" $crystal = 8000000 Config Pind.7 = Input Config Pinc.0 = Output Set Portc.0 Set Portd.7 Do If Pind.7 = 0 Then Portc.0 = 0 Else Portc.0 = 1 End If Loop End [/syntax] wgrałem, program działa dobrze. Bascom DEMO 2.0.7.1
Witam. Można tak: $regfile = "attiny13.dat" $crystal = 1200000 Config Portb.3 = Output Config Pinb.4 = Input set pinb.4 reset portb.3 do if pinb.4=0 then do Set PORTB.3 Wait 1 Reset PORTB.3 Wait 1 Loop end if Loop W pętli odczytujesz stan przycisku i jak będzie niski zacznie migać.
ad 1)Tak. ad 2) Open "comd.0:19200,8,n,1" For Input As #1 Open "comd.1:19200,8,n,1" For Output As #2 ad 3)Trzeba uważać na to , co piszemy w kodzie. Pozdrawiam Piotrek PS Bez "As" tworzy kanał , ale go nie otwiera i ... później mówi sie że Bascom jest do ... :wink:
Napisałem taki program i sprawdziłem go z ATTiny13 (nie mam ATTiny25): $regfile = "ATtiny13.DAT" $crystal = 1000000 Config Pinb.0 = Input Portb.0 = 1 Przycisk Alias Pinb.0 Config Pinb.1 = Output Portb.1 = 1 Led Alias Portb.1 Do If Przycisk = 0 Then Waitms 100 Bitwait Przycisk , set Gosub Praca End If Loop End Praca: Led = 0 Wait 1 Led...
Jak to mówią diabeł tkwi w szczegółach... $crystal = 8000000 $regfile = "m16def.dat" Config Portb = Output Config Pina.1 = Input Do If Pina.1 = 1 Then Reset Portb.6 End If If Pina.1 = 0 Then Set Portb.6 End If Loop End
zrob cos takiego: config pind.7= input config pind.6= input set portd.7 set portd.6 i napisz jaki efekt. albo po prostu zastap te twoje Set Pind.6 Set Pind.7 tym set portd.6 set portd.7 (jak teraz nie bedzie dzialac to zmien jezyk, bo bascom denerwuje :P )
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...
Witam. Mam problem z uruchomieniem Proszę o pomoc co mam dalej robić . Czy problem jest z programem czy z schematem? Problem jest w dalszym ciągu z programem... Widzę że naniosłeś poprawki w programie "hurtem" zamiast analizowac każdą linię konfiguracji pojedynczo(!)... Ta uwaga z poprzedniego postu dotyczyła tylko konfiguracji wejśc Wyjścia , zarówno...
W Bascomie wyglada to tak: Config PORTA = Input PORTA = 255 '(lub &hFF lub &b11111111) Spowoduje to ze port A bedzie portem wejsciowym z podciagnietymi wejsciami do + zasilania. Jezeli w drugiej linijce znajdzie sie zero to wtedy port bedzie w stanie "trzecim" czyli tzw. "plywajacym" czyli nie bedzie podciagniety do niczego. Asembler: ldi r16,0x00 out...
Ja uczyłem sie z pliku pomocy Bascoma, zarówno AVR jak i 51 Co do twojego roblemu to dla AVR miałeś: config P1.0 = input config P2.0 = output to zamień to na: P1.0=1 Jeśli chodzi o P2.0 to w ogóle nic nie pisz. ponadto, nawet i P1.0=1 nie musisz pisać, procesor sam usttawia porty w stan wysoki po zresetowaniu. Tak jest, gdyż porty AVR i 51 różnią sie...
Możesz napisać i cieszyć się funkcjonalnością nie wiedząc o co chodzi ... $baud = predkosc_transmisji Tylko jeśli nie umieści się tej informacji w kodzie i użyje gdzieś Print/Input lub pochodnej to kompilator ustawienia dla $baud bierze z tych zdefiniowanych w IDE. Bascom konfiguruje od razu obydwa piny. Skonfigurowanie ich polega na wpisie do rejestru...
Kod programu: '$tiny $regfile = "attiny13.dat" 'plik z definicjami procesora attiny13 $crystal = 1000000 'częstotliwość taktowania procka 1Mhz Config Portb.0 = Input 'Wejście REM Config Portb.4 = Output 'Przekaźnik GŁOŚNIK Config Portb.3 = Output 'Przekaźnik REM Set Portb.0 Reset Portb.3 Reset Portb.4 Dim Znacznik As Iram Byte Znacznik = 1...
Proszę. Gotowe bo jak widzę kilka If`ów do tej samej zmiennej zamiast Select Case i tym podobne kwiatki... [syntax=vbnet]$regfile = "m32def.dat" $crystal = 11059200 $hwstack = 64 $swstack = 16 $framesize = 64 Const Timeout_time = 8 'x500ms Config Submode = New ' config LCD 2X16 Config Lcdpin = Pin , Rs = Porta.2 , E = Porta.3 , Db4 = Porta.4 , Db5 =...
Raczej: CONFIG PORTx = state CONFIG PINx.y = state gdzie state to INPUT lub OUTPUT Pa Alias Portd.2 Pb Alias Portd.3 Pc Alias Portd.4 Pd Alias Portd.5 popraw na Pa Alias Pind.2 Pb Alias Pind.3 Pc Alias Pind.4 Pd Alias Pind.5
Konfiguracja całego portu B jako wyjście lub wejście: Config Portb = Output ' cały port B jako wyjście Config Portb = Input ' cały port B jako wejście Lub to samo na każdym pinie osobno: Config Pinb.0 = Output ' pin PB0 portu B wyjściem Config Pinb.1 = Output Config Pinb.2 = Output Config Pinb.3 = Output a komenda: pinb.0 = 1 'wysoki stan logiczny pinu...
$regfile = "attiny2313.dat" $crystal = 4000000 Config Portb = Input Portb.0 = 1 Config Portd = Output Portd = &B11111111 Dim Temp As Byte Temp = 1 Do Temp = Temp * 2 If Temp > 80 Then Temp = 1 Portd = Temp Toggle Portd If Pinb.0 = 0 Then Bitwait Pinb.0 , Set End If Waitms 500 Loop End Dodałem znaczniki
Jednoczesny odczyt zawsze był możliwy, np tak: IF pind.1=1 and pinb.1=1 then reset portc.0 zajmuje 26 cykli? Dziadostwo. Gdybyś się BARDZO śpieszył to możesz zrobić tak: [syntax=asm] $asm sbis pind, 1 rjmp wyjdz sbis pinb, 1 rjmp wyjdz cbi portc, 0 wyjdz: $end asm [/syntax] Szybciej już się chyba nie da.
Diodę gaś tak jak ją zapalasz. [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 1000000 Config Portb.0 = Input Config Portb.1 = Input Config Portd.5 = Output Przycisk1 Alias Pinb.0 Dioda Alias Portd.5 Przycisk2 Alias Pinb.1 PORTB.0 = 1' to jest podciąganie do Vdd - działaj w tym celu na rejestrze 'PORTX lub PORTX.Y PORTB.1 = 1 Reset Dioda Do If Przycisk1...
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...
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...
pewnie piszesz w bascom ,wiec masz kod odbierania danych (całych stringów ) w przerwaniu :) : Config Serialin = Buffered , Size = 20 do If Ischarwaiting() = 1 Then '1 - odebrano znak,0 - pusty bufor Call Read_rs232 End If loop Sub Read_rs232 Dim Bufor As String * 24 Input Bufor Noecho end sub
Żeby dłużej nie komplikować: $crystal = 1000000 $regfile = "m8def.dat" config pinb.1 = output ' tu pin diody config pinb.0= input ' tu pin mikroswitcha (klikacza) set portb.0 do if pinb.0 = 0 then waitms 25 if pinb.0 = 0 then set portb.1 wait 2 reset portb.1 powerdown end if end if loop i twój schemat: http://www.elektroda.pl/rtvforum/files-r...
Proszę. Nie opisywałem go i tutaj może wyglądać dziwnie, ale u mnie rysuje linie łączące bloki. Wygląda to jak na załączonym obrazku i nie mam potrzeby dla takiego kodziku tego opisywać. http://obrazki.elektroda.pl/9672124500_1... Błąd mógł się wkraść bo to tylko tak z doskoku dla relaksu napisałem w pół godzinki. Życzę owocnego testowania...
Mówisz masz na timerze. $regfile = "m16def.dat" $crystal = 1000000 $hwstack = 32 $swstack = 8 $framesize = 16 Config Timer1 = Timer , Prescale = 1024 Enable Interrupts Enable Timer1 Start Timer1 On Timer1 Odmierz_czas Const T = 6942 Config Portb.1 = Output : Portb.1 = 1 : Led Alias Portb.1 Config Portb.2 = Input : Portb.2 = 1 :...
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...
Po co się męczyć to tylko kilka linijek w bascomie: Kod archaiczny dla słabeuszy: $regfile = "m128def.dat" $crystal = 8000000 Config Spi = Soft , Din = Pinf.2 , Dout = Portf.0 , Ss = None , Clock = Portf.6 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.3 , Rs = Porta.2 Config Pinf.6...
nie wnikam w sens... ale to by było jakoś tak : Config Pind.4 = Output reset Portd.4 Config Pind.2 = Input reset Pind.4 dim a as bit dim b as bit a=0 portd.4=a do if pind.2=1 then <-- sprawdza czy jest nacisniete waitms 100 if pind.2=1 then <-- jeszcze raz sprawdza b=not a <-- zmienia stan zmiennej przypisywanej do wyjscie przekaznikowego na...
"MArSTER_1 napisał: Spróbuj w kodzie Slave usunąć instrukcję SPIINIT. No to już jest jakaś wiedza szamańska ;)" Nie jest to wiedza szamańska. Opierałem się na Helpie Bascoma , w którym wzraźnie napisano, że wykonanie instrukcji SPIINIT powoduje: "In hardware spi mode the SPIINIT statement will set the SPI pins to : SCK = Ouput MISO = Input MOSI = Output"...
atom1477, przecież o ile jakieś przerwanie w międzyczasie nie zmienia Portd.5 to kod Nie chodzi o to żeby ustawił w końcu, tylko w momencie kiedy piszesz Pind.5 = 1: No ale Portd.5 zamiast Pind.5 byłoby przejrzyściej. W ogóle przejrzyściej było by stosować ten zapis jeszcze zamiast Set Portd.5. Tysiące razy było. Do rejestru port zapisujemy a z rejestru...
MES Mariusz --> przecież w tym co pisałem nie chodziło o tworzenie na siłę przerwania dla RC5 bo to akurat dobry pomysł jak na Bascom, chociaż co nieco spowalnia pracę ale może być ;) Chodziło o podopwiedź że można utworzyć dodatkowe przerwanie, które przerwie ci INPUT. Jeśli chodzi o standard pisania programów to ja cię do niczego nie namawiam na siłę....
Jakby ktoś szukał gotowego rozwiązania wklejam to bazujące na obsłudze UART w przerwaniu zamiast Input. W pełni działający kdo poniżej: [syntax=basic4gl] $regfile = "m32def.DAT" $crystal = 8000000 $baud = 4800 Nadawanie Alias Portd.7 Config Nadawanie = Output Enable Interrupts Enable Urxc On Urxc Odbierz Dim Kod_znaku As Byte Dim Tekst As String * 1...
Patentów jest wiele, ale chyba najleprzy to zastosowanie RS485, który z założenia jest zrobiony dla sieci do 32 urządzeń. RS485 opisuje elektryczną stronę komunikacji, a nie protokół, który jest z regóły identyczny z RS232, jedyne czym się całość różni z punktu widzenia procesora, to transmisja ma sterowany kierunek, czyli jest half-dupleksowa, procesor...
input bascom bascom capture input bascom input timeout
awaria ekspresu philips samsung pralka uszkodzenie motorola ładowanie
electrolux eem48321l zmywarka elektrolux
Nissan Qashqai J11 P0138 – błąd po wymianie sondy, dolot szczelny, tłumik sprawny Krups EA8260: Błąd 12 i czyszczenie pojemników