"FOR... NEXT" to był przykład jak wykorzystac "mid" możesz zrobić to po swojemu. Co do DO...LOOP to praktycznie ilość dowolna.
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]
Dobrze by było podac w czym programujesz asembler, C++, bascom??
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ć.
Cześć, jako że jestem początkujący chciałbym zapytać w jaki sposób mogę przesunąć tekst o 2 lub dowolną ilość pikseli w górę lub w dół na wyświetlaczu graficznym ze sterownikiem ST7565 (COG128x64pix). Czcionka jakiej używam to 6x8 i mogę przesuwać się wyłącznie o wielokrotność liczby 8 a ja chciałbym żeby ten napis zaczyna się konkretnie na zadanej...
Czy mógłbyś napisać dlaczego 0x38 i 0x39 ? Bo adres musisz bitowo przesunąć o jeden w lewo (czyli przemnożyć x2) ze względu na bit R/W, który znajduje się na końcu transmisji.
Ja Ci napisze jeszcze coś ciekawszego. W folderze Bascom jest plik PDF o nazwie BASCAVR.pdf To dopiero kopalnia wiedzy jeśli chodzi o udogodnienia. Przesuwałem jak przysłowiowy osioł linijka po linijce jak czyjeś kody były przyklejone do lewej linii albo bez wcięć. Teraz zaznaczam taki blok który chcę przesunąć i naciskam CTRL + SHIFT + I Suuuuuper...
Unsigned Char to 8 bitów czyli Bajt a nie Word, to po pierwsze. Przesunięcia bitowe robi się za pomocą Shift [variable], 8*, Right ale tutaj to chyba nie ma zastosowania. To po drugie. * ilość bitów oczywiście do wyboru. ..a po trzecie wystarczy tak: [syntax=vbnet]sub Wraddr(byval x as integer, Byval y as Word) Local Dim Xh As Byte , Xl As Byte Xh =...
Ok , działa :) Teraz pytanie odnośnie odbioru danych jeśli odbieram pierwsze 8 Bitów MSB to zapisuje je do zmiennej np. A1 i przesuwam o 8 bitów w lewo czy w prawo ? a Bity LSB nie przesuwa się czy też trzeba przesunąć ?
Witam potrzebuje przesunąć-zrolować tekst. [syntax=vbnet]Lcd " to chce zrolować np w prawo:" 'tekst powitalny Lowerline Lcd " i to też w prawo" Wait 1 Cls[/syntax]
(at)kamyczek tu kolega się pytał edukacyjnie z tego co zrozumiałem. Juz pisałem że przy sygnale zaszumionym trzeba zrobić programowy filtr dolnoprzepustowy - który co prawda przesunie fazowo przebiegi - ale przesunie w sposób jednakowy.
Tak, zapewne tak się skończy. Ustawić "1" a potem przesunąć ją na odpowiednie miejsce w 74HC595. Tak wydaje się najprościej. Dziękuję za pomoc i zaangażowanie.
Może spróbuj przesunąć przecinek: zmienna x 10 lub 100 Wykonać obliczenia np na byte (jeśli wynik mniejszy od 255) lub na word/integer Potem z powrotem przesuń przecinek. Pozdrawiam.
procesor zanim dojdzie do startu watchdoga tochę sie namęczy , a to trochę potrwa, szczególnie przy tak małej częstotliwości kwarcu. Bascom napewno umieści tam dużo prcedur startowych dot. LCD. Spróbuj przesunąć start watchdoga na początek.
Niemcy i my mamy tę samą strefę czasową. Zapewne tak, tylko, że oni w nadawanym sygnale nie dodają/odejmują godziny. Wysyłają tylko DCF77TIMEZONE i samemu należy to obsłużyć. Znalazłem coś takiego: res = DCF77TimeZone() Res The target variable that is assigned with the result. The result will be: - 0: when there is no valid DCF77 data yet - 1: when...
Sugeruję zapoznać się z instrukcją "SHIFT zmienna, kierunek, ile bitów przesunąć"... 8-)
Jeśli wiesz, że temperatura zawsze będzie dodatnia (np. sterownik ma pracować w komputerze) to odczytaj tylko pierwszy bajt, przesuń w prawo i gotowe.
Nie lubię i nie używam Basica, ale moim zdaniem jest tak: PRINT wysyła dane typu STRING, a FUSING zamienia liczby na ciągi ASCII. Dodatkowo PRINT wysyła znaki końca wiersza. Żeby wysłać bajt spróbuj CHR() mniej więcej tak: PRINT CHR(Msb); CHR(Lsb) Teraz wysłane zostaną dwa bajty - starszy i młodszy a za nimi znaki końca wiersza. Teraz...
16 (liczba nie cyfra) ponieważ temperatura odczytywana jest z dokładnością do 4 cyfr po przecinku, dlatego odczytaną wartość trzeba podzielić przez 16 (przesunąć o 4) Bd(1) = 1wread(9) tu do Bd jest wpisanych 9 bajtów ( liczba bajtów w nawiasie) odczytanych przez 1wread(9) z czego 2 pierwsze to temperatura
Możesz wysyłać jako 16-bitowe SPI. Musisz tylko pamiętać, że kilka ostatnich bitów będzie ignorowane i odpowiednio przesunąć dane
Skoro jesteś początkujący szukaj artykułów o programowaniu w Bascom w archiwalnych numerach EdW (Mikroprocesorowa Ośla łączka). Wykorzystanie programów w innym języku moim zdaniem będzie trudne i bezcelowe. Bascom jest wyposażony w wiele gotowych procedur do obsługi LCD albo przetworników ADC i ma polski plik pomocy co jest dużą zaletą. Do odczytu temperatury...
Po pierwsze to po resecie mikrokontrolera piny są ustawione jako wejścia więc nawet nie trzeba tego robić Po drugie to kierunek ustala się za pomocą rejestru DDRx a nie PORTx (to nie Bascom) Po trzecie to musisz doczytać jeszcze o przesunięciach bitowych bo szybko na tym polegniesz w C. To podstawa. Po czwarte to klawisze (słicze) musisz mieć albo podciągnięte...
Witam Zlecę napisanie programu w bascomie. Ogólne założenia są takie: Urządzeniem w formie suwmiarki wykonywany jest pomiar elementu. Operator po naciśnięciu przycisku wysyła drogą radiową zmierzoną wartość do urządzenia wykonawczego następnie na podstawie tego pomiaru urządzenie wykonawcze ma przesunąć element o określony odcinek drogi. to tyle z grubsza....
Chyba brakuje Home po ___lcde = 1
Ja zaznaczam że nigdy nie miałem potrzeby się interesować silnikami od HDD ale jesli piszesz że ma uzwojenia połączone w trójkąt to czy tu nie ma analogii do zwykłego silnika klatkowego zasilanego napięciem3-fazowym? Na przebiegach widać tylko dwa przebiegi o przeciwstawnych fazach a czy nie powinny być 3 przesuniętych o 120stopni ?
To chyba tytułem różnicy rejestrów PINn i PORTn wszystko zostało powiedziane. A w temacie - czułość układu zależy od wielu parametrów: 1. rozmiary pola dotykowego 2. wartość rezystora "pomiarowego" 3. prowadzenie ścieżek między procesorem a polem (na kabelkach wyniki są mało powtarzalne - wystarczy przesunąć kabelek o parę mm bliżej/dalej innego i już...
ROTATE nic mi nie da, jeżeli znam zmienną to spoko, mogę sobie przesunąć ją o tyle miejsc ile potrzebuje. Ale zmienna za każdym razem jest inna.
za pomocą shiftlcd można przesunąć tylko cały wyświetlacz. jak chcesz przesuwać jedną linię to musisz to zrobić w programie.
niestety nic nie daje. nawet jak ustawie w bascomie w opcjach. nawet po resecie zawartość na wyświetlaczu sie nie zmienia, tylko czasem sie przesunie.. db0-db3 wiszą w powietrzu. czy mam je jakoś podłaczyć? może bascom opóźńienie wstawia za małe do sterowania lcd? ma ktoś może jakiś kod w assemblerze do obsługi lcd albo opis sterownia 4ro przewodowego?...
Prawdopodobnie zbyt duza rozbieznosc zegarow i na pozycji 6 bitu w komputerze lapie sie juz bit stopu. Przy kwarcu 1MHz w zasadzie najszybsza predkosc jaka sie da uzyskac bez wiekszego bledu w zegarach to jest 4800 bps dla trybu 1x i 9600 dla trybu 2x. Wszystkie predkosci powyzej daja juz blad w okolicach 8% co jest niedopuszczalne. Pozdro Dexter
Jeśli zmienna wyświetl jest typu Word, czyli ma być to liczba całkowita. Od razu ci podpowiem, że nie potrzebujesz używac liczb zmiennoprzecinkowych, które "kosztuja" bardzo dużo. Zrób operacje na liczbie *10, a przy wyświetlaniu przesuń tylko przecinek w lewo o jedną pozycję.
I2crbyte Z(i) , Nack Wcześniej masz for i=0 to 5 Nie wyrzuci ci takiego błedu ale zapis jest zly. W bascomie adresowanie tablicy zaczyna się od 1 (z(1) - to jest pierwszy element tablicy) Błąd wyświetla dopiero chyba bascom avr. Daj pętle przesuniętą o 1 i będzie dobrze. Ale uważaj - to przesuniecie (for i=1 to 6) może ci też pogmatwać inne...
Wpisanie nowej wartości do SP powoduje przesunięcie tylko jego wskaźnika. Wykonanie tego w nieodpowiednim momencie kończy się źle - jak kolega się przekonał. Dlatego najpierw w raporcie kompilacji trzeba sprawdzić gdzie znajduje się najdalej położona zmienna (użytkownika lub wewnętrzna) i sprawdzić ile ona zajmuje. Uzyskasz wtedy adres od, którego BASCOM...
PCF8583 nie ma rejestru roku tak jak PCF8563. Co do dnia tygodnia - muszę poszukać w DS. EDIT: Dzień tygodnia musisz odczytać z rejestru miesiąca (06). Służą do tego bity 7..5 czyli: 1. odczytać rejestr 06 2. zamaskować wartość za pomocą AND &B11100000 3. przesunąć w prawo o 5 (Shift Rejestr_06 , Right, 5)
Przesuń całość o klatkę w bok i nadpisz dolną linijkę nową wartością ...
Jeśli 1 bajt to A a 2 to B to trzeba je "skleić" poprzez MAKEINIT i następnie przesunąć o 4 bity w prawo... Nie przesunąć , tylko podzielić przez 16 , bo przy ujemnych wyjdą cyrki ;) Piotrek
Stwórz tablicę za pomocą: Dim Zmienna(5) As Byte 'lub Word, Integer, Long, Single, Double... Przed zapisem aktualnej wartości do Zmienna(1), przesuń wartości z 1, 2, 3, 4 o jeden indeks (na 2, 3, 4, 5). Pamiętaj aby zrobić to tak, by nie "zamazać" wartości przy przesuwaniu. Potem zapisujesz aktualną wartość do Zmienna(1) i masz komplet, który...
operacje mnozenia i dzielenia dumnie opisane jako przesuniecie bitowe lepiej zrealizowac jako przesuniecie bitowe ;) polecenie Shift, szczegóły w helpie... inne propozycje jak bede mial wiecej czasu ;) Pozdrawiam
Tak. W przykładzie podałeś jedną spację i jedna zostanie wpisana. Podając więcej spacji w argumencie metody print() wyświetlisz więcej spacji. Dla mikrokontrolera znak spacji jest takim samym znakiem, jak dowolna litera, z tą różnicą, że obraz (bitmapa) znaku spacji nie zawiera żadnych zaciemnionych pikseli do wyświetlenia. Kursor (widoczny, lub też...
dzięki Jacek pomogleś wiem że to błachostka ale nie dopatrzyłem się ale działało mi to juz musiałem jakoś linie przesunąć. Co za to chcesz jakies punkty czy coś? wogóle temat zamykam dzięki i pozdrawiam.
Wykonalne i niespacjalnie wymagajce ;) Ja bym do tego wykorzsytal timer1, poczytaj w datasheecie tam o timerach i sprzetowych pwmach. Wykorzystujac dwa kanaly jednego timera mozesz ustawic przesuniecie w fazie, tylko jak przesuniecie bedziesz mial polowe okresu to wypelnienie bedzie moglo byc maks 50%. Ale to tak na szybko co mi do glowy przychodzi....
Możesz spróbować jeszcze tak: Saa: Dat = 0 Ena = 0 Clk = 0 Waitms 5 Ena = 1 Waitms 5 Clk = 1 Waitms 5 Clk = 0 Waitms 5 Shiftout Dat , Clk , Wpis , 1 , 16 , 2 Ena = 0 Waitms 5 Clk = 1 Waitms 5 Clk = 0 Waitms 5 Ena = 1 Waitms 5 Dat = 1 Clk = 1 Waitms 100 Return End przesuń pod Loop pętli głównej.
Dlaczego do bufora 32 znakowego wpisujesz 64 znaki? Lekko zmodyfikowałem funkcję ReadUart, aby wypisywała zmienną buf: Jakbyś jeszcze kończył string w miejscu, gdzie skończyły się dane, to nie wypisywałyby się śmeci. Coś w tym stylu: [syntax=cpp] ret = ReadFile(hPort, buf, len,&retlen, NULL); buf[retlen] = 0; cout << buf; [/syntax] Tak w...
1. bascom (tlumacze z c) 2. cos podobnego. Jeden to czujnik z myszki pan3101, ktory podaje mi przesuniecie x/y w zmiennej 1 bajtowej, ktora moze byc dodatnia i ujemna (od -128 do 127). Drugi procesor to avr atmega16 czy 32 (bez roznicy jak pisze w bascomie) Chodzi tutaj o ten temat: http://www.elektroda.pl/rtvforum/topic13...
For A = 1 To A Shiftlcd Right Locate 1 , A Lcd "napis" Wait 1 Cls Next A Przeanalizuj swój program. Definiujesz zmienną A, Potem usiłujesz "napis" przesunąć w prawo, a następnie umieszczasz go w lokalizacji 1,A. To chyba coś tu jest nie tak.
Witam Propozycje dzielenia przez ilość próbek np. 10 są bezsensowne, jeśli już uśredniać to można to zrobić z głową, daj 16 próbek i przesuń wynik w prawo, to że w BASCOMie wygląda prosto to wcale nie znaczy ze po kompilacji wyjdzie prosto. Nie mam BASCOMa pod ręką ale poszukaj instrukcji Shift Right lub coś podobnego. Piotr
' Na początku kodu Index_tab=0 ...... ...... If Licznik = 1200 Then IF Index_tab=3 Then ' przesuniecie w tył jeżeli pozyskano co najmniej 3 pomiary Pomiar(1)=Pomiar(2) Pomiar(2)=Pomiar(3) Else ' Fragment kodu wykonywany dla Index_tab=0,1 i 2 Incr Index_tab IF Index_tab>3 Then Index_tab=3 End If Pomiar(index_tab)...
Rozwiązałem problem. Tkwił w linii: Dzw = Dzw + 5, u mnie musi być + 10. Widać u mnie nr jest przesunięty.
Prze locate nie zrobisz. Wrzuć cały tekst do zmiennej tekstowej, nawet jak będzie za długi to nie problem. Następnie w pętli wytnij wymagany fragment z tego tekstu na podstawie zmiennej liczbowej. W pętli zwiększaj lub zmniejszaj zmienną, a wycięty tekst wrzucaj na wyświetlacz. Nie pisałeś w jakim języku, zapewne BASCOM o tego wiele na forum. Poszukaj...
Mam nawet w domu sterownik do silnika, ale mikrokontroler jest już zaprogramowany. Nigdzie nie mogę znaleźć jak przesunąć dany przebieg. Chciałbym to zrobić tak jak na rys 40a http://www.elportal.pl/pdf/k01/81_24.pdf
Oj, muszę się jaśniej wyrażać, skoro trzy dni nad tym myślałeś :) Tak, przy xor licznik byłby *2, ale wystarczy to podzielić przez 2 (znaczy przesunąć wynik o jeden bit w prawo) i masz to co chcesz. xor ciut upraszcza warunki, ale nie ma to aż tak dużego znaczenia dla 5 kHz.
Hej! Oto programik w Bascom-AVR. Jeżeli naciśniesz przycisk(portd.0) na mniej niż pieć sekund to zapli Ci się dioda(Portb.7), a jeżeli będziesz trzymał przycisk wciśnięty przez pięć sekund to przesunie Ci jedynkę po całym porcie b. Config Pind.0 = Input Config Portb = Output Dim I As Dim I=1 Program: Do If Pind.0 = 0 Then For I = 1 To 5 Wait 1 If Pind.0...
Tak na wszelki wypadek mozesz poczekac wiecej niz 250 ms (sugeruje poczekac 750 ms tyle co dla DS18S20).Moja uwaga co do samego programu: nie znam sie na bascomie ale nie ma tam przypadkiem czegos takiego jak przesuniecie bitowe >> i << ? Przeciez zarzynasz ten biedny procek dzieleniem i mnozeniem arytmetycznym !
No właśnie próbowałem tak: If Pind.7 = 0 Then Wait 1 For A = 1 To 10 Shiftlcd Right Waitms 500 End If Next Ale to źle działa. Źle działa i źle wygląda. Jeśli zaczynasz warunek (IF) a w jego wnętrzu masz pętlę (FOR) to musisz najpierw zamknąć pętlę (NEXT) a później warunek (END IF). Zakładając, że chcesz zrealizować ten pomysł przesuwaniem zawartości...
Posiadam płytke testowa AVT-3500. Podłaczyłem wyświetlacz LCD 16*2. Napisałem program testowy i mam problem. W pierwszym wierszu napis jest przesuniety w lewo o dwie litery i nie widać go całego. jesli w programie dam spacje LCD (" Test") to widać cały napis, ale to nie jest rozwiazanie. jaka może być przyczyna. W drugim wierszu jest ok.
Witam Przeczytałem o tym klekotaniu i myślę że problem jest w niestabilności odczytu temperatury, ponieważ wszystkie procesy fizyczne są bardzo wolnozmienne w stosunku do szybkości procesora to proponuję czytać np. 64 próbki i usredniać, jeśl ilość próbek będzie potęgą liczby 2 to wystaczy przesunąć wynik w prawo o wartość potęgi i mamy dużo stabilniejszy...
nie mam teraz bascoma ale spróbuję coś poradzić tylko musisz zobaczyć jak w bascomie zapisywana jest zmienna typu long, bo może sie okazac że moja rada będzie do bani... > deklarujesz zmienną long to jest (chyba 4 bajty): xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx > zapisujesz w niej dwa starsze bajty: xxxxxxxx xxxxxxxx SSSSSSSS SSSSSSSS > teraz trzeba by...
Na mój gust to tam jest byk bo na rysunku nr 2 jest jak wół 1 bajt komendy, 1 bajt danych więc z tym oscylogramem coś nie halo. A jesli ma być zwrócone słowo 11,12,13 ect bitowe to trzeba nieznacząe bity zignorować i np. przesunąć w w prawo o tyle ile bitów będzie brakowało do slowa 16 bitowego.
If L < 16 then poz = 1 If L >=16 AND <= 32 then poz =2 Zamiast 16-stu ifów zmienną L podziel przez 16 lub przesuń o 4 bity w prawo wówczas jako wynik otrzymasz pozycje znaku 'O' w linii.
niby jakim cudem wzmacniacz mialby przetworzyc cokolwiek poza swoim zakresem zasilania, pomijajac juz sprawe zebezpieczen wejsc. Niezupełnie. Jeżeli wzmacniacz jest w układzie odwracającym to na jego wejściu nigdy nie pojawi się to -25V jeżeli wejście + jest podłączone do masy. W pewnym sensie układ jest sterowany prądowo. Teraz, do pomiarów napięcia...
Zamień PB3 z pb4 jak schodek się zmieni to bascom jak zostanie to lcd ;)
Program do czujnika temp ds18b20 ktory mierzy z dokladnoscia dwoch miejsc po przecinku. Sprawdzony ale tak jak juz koledzy mowili wyniki po przecinku bardzo czesto skacza Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32 Config Pind.7 = Output Config Pind.4 = Output Config Pind.5 = Output Config Pina.6 = Output Config Pina.7 = Output Set Portb.0 Set...
Prosze mnie poprawić jesli sie mylę... W kodzie U2 tylko najstarszy bit ustala znak przedstawianej liczby. A w bajcie MSB mamy aż 5 bitów bedących tą flagą. Nie do końca jest to U2. Oczywiście... jeśli przyjąć, że bit 3 w MSB będziemy traktować jako ostatni, wtedy stanie się prawdziwą liczbą w U2. A skoro tak, to powinienem zadeklarować zmienną typu...
Za ok 30 min bd mógł to sprawdzić. www.faz.pl/pliki/fil.MPG jest tu film z poprzednim wsadem. Dodano po 38 Teraz wyświetla tak: program tedstuja ie przesunięcie cy odczyt z pami 2 przesuniecie eci eeprom 0 1 2 0 przesuniecie 3 4 5 6 7 8 9 0 jakoś źle się przesuwa tekst :?:
Ale po co kolega chce koniecznie wysyłać te 2 bajty? Domyślnie ADC działa z 10 bitową precyzją i taki jest też rezultat (zatem 2 bajty ... 2 8bitowe rejestry ADCH i ADCL). Normalnie 2 najstarsze bity są w ADCH, a reszta w ADCL. Jeśli ustawimy ADLAR to wynik jest przesunięty w lewo, zatem 8 najstarszych bitów jest w ADCH i tu w tym konkretnym programie...
$regfile = "m8def.dat" Config Pind.6 = Input Config Pinb.5 = Output Config Pinc.0 = Output Config Int0 = low level Config Int1 = low level Dim A As Byte A = 0 Declare Sub Lewo Declare Sub Prawo Declare Sub Zatrzymaj1 Declare Sub Zatrzymaj2 Radio Alias Pind.6 Enable Interrupts ' zezwolenie na obsługę przerwań Enable Int0 Enable Int1 On Int0...
No właśnie, zastanawia mnie, czy wyszukiwanie numeru jest dobrze [syntax=vbnet] Sub Get_caller_nr Pos1 = Instr(inp_str , "{034}") 'szukam pierwszego znaku Incr Pos1 'zwiekszenie o 1 pozycji Pos2 = Instr(pos1 , Inp_str , "{034}") 'szukanie pomiedzy pierwszym a drugim znakiem Pos2 = Pos2 - Pos1 'kalkulacja polozenia pomiedzy dwoma znakami Caller_nr =...
Opis magistrali 1Wire masz w helpie. Poniżej kod na obsługę dallasa DS18B20. Config 1wire = P1.0 'konfiguracja magistrali 1wire Config Lcd = 16 * 1a 'konfiguracja wyswietlacza Deflcdchar 1 , 4 , 10 , 4 , 32 , 32 , 32 , 32 , 32 'znak stopnia Dim T1 As Single Dim T2 As Single Dim B1 As Byte , B2 As Byte , R As Byte Dim Tmp As String * 6 Dim Znak As String...
Ok, racja, ale implementacja jeszcze zależy jeszcze od tego, czy to będzie assembler, czy np Bascom... ;) W tej kwestii nadal jest cisza ze strony amaram-a . Tak się jeszcze zastanawiam, czy x/10 również da się zastąpić przesunięciami bitowymi ? Pozdr. Light-I
dla porządku niech będzie bez znaku: volatile unsigned int liczba_RND; pomyliłeś kierunki :) raczej tak [syntax=c]liczba_RND = (liczba_RND<<1); //przesuń liczba_RND o 1 bit w lewo liczba_RND |= (ADC & 0b01); //odczytaj ADC, pozostaw tylko najmłodszy bit, i skopiuj ten bit do liczba_RND[/syntax]
Dziex, ale już wpisałem ldi bitcount, low(CRC16poly). Wcześniej mi to nie działało. Może zrobiłem jakąś literówkę. PS. Żeby wywalić starszą połówkę to trzeba przesunąć 8 razy z nie 4. Wiem że LDI działa tylko na liczbach 8-bitowych. Assembler AVR mam w jednym palcu. Dziwiłem się tylko że kompilator automatycznie nie wstawia młodszej połówki jak widzi...
Z tym dwukropkiem rzeczywiście mogłem go o jeden stopień przesunąć w bok no ale cóż następnym razem:) ----------------- Jak obiecałem wcześniej w załączniku pliki brd oraz bas. Mariuszek15 jeśli był byś chętny do poprawy kodu to by było fajnie ponieważ, braku wolnego czasu nie mogę na razie działać nic w tym kierunku.
Sorki, przez ten upał jakoś mi się to z Bascomem skojarzyło :) Ok, co do kursora - wyślij polecenia 0x80 + adres, pamiętając, że np. LCD 2*16 znaków ma fizycznie drugą linię od adresu przesuniętego o 0x40 komórek pamięci. Kursor możesz też przesuwać o jedną pozycję w lewo (0x10) lub w prawo (0x14).
już mi ręce opadają - z delphi dlaczego jak nie ustawie na hardware tylko zostawię bez kontroli przepływu to comport działa nie tak jak powinien? poza tym jak z bascoma wyśle printbin 5;4;3;40; itd (czyli konkretne wartości ) to delphi odczytuje Ok jak wyśle jako zmienna to jest do bani - i wszystko sie krzaczy - żeby było śmieszniej to za pomocą programu...
Poczytaj w pomocy o instrukcjach: DATA , RESTORE, READ. Kiedyś robiąc skomplikowane menu używałem tego do przechowywania stałych tekstów/opisów. Wszystkie były tej samej długości. Aby nie używać SELECT CASE zrobiłem wstawkę asemblerową. O ile dobrze pamiętam rejestry R8 i R9 są używane jako wskaźnik dla funkcji READ. Możesz też wszystkie swoje dane...
To jest treść kodu z książki "Programowanie mikrokontrolerow AVR w jezyku Bascomę - Marcin Wiazania nieco zmodyfikowana, ale tam też nie było wpisane ile miejsc ma przesunąć. Z tego co wiem, taki kod będzie kręcić cały czas w prawo. Próbowałem też opcji z wpisaniem ile razy ma kręcić, ale działanie było takie samo, czyli od razu zapalenie wszystkich...
Widzę, że nieodpowiednie forum wybrałem. Przepraszam. Temat zamykam. Dodano po 4 Napisałem kod pod wyświetlacze led 7segment. Timer minutnika pracuje w mode=2 późni się 500ms / 1 h . Również µP z TME, nie chciał pracować poprawnie pod tamtym programem z wyświetlanie LCD i ciekawymi opcjami. Czyli kod coś nie bardzo. Kolego, wybrałeś zabytkowy mikrokontroler...
A nie prościej przesunąć poziom napięcia dla mikrokontrolera? Zmierzy 2,5V - uznaje że jest 0. Zmierzy mniej - prąd ujemny. Zmierzy więcej - dodatni. budziol2 : pomiar koniecznie musi być na plusie? Jak odpowiesz na to pytanie to narysuję Ci kompletny schemat (często stosuję takie coś) a nawet program prosty mogę napisać. Ale dopiero jak odpowiesz,...
Może i tak. Ale na moje oko i tak kombinujecie. Ja od początków jak stosuję przesyłanie danych przez UARTa to stosuję jeden algorytm który wymyśliłem jak tylko zacząłem się zajmować programowaniem, i okazał się na tyle skuteczny że korzystam z niego od kilku lat i nie zmieniłem od tamtej pory w nim nic. Wysyłam: 23, Dana, Dana, Dana, Dana, ..., Dana,...
prześledź dobrze ten programik. Większość można wywalić bo to obsługa za pomocą RS'a. Dla ciebie przyda sie procedura: ustaw_czestotliwość i następne po niej. Ponieważ konstruktorzy chcieli lepiej to teraz trzeba pokombinować - najpierw troche przesunąć - potem zapisać starszy bajt i dodatkowo wyzerować najstarszy bit. potem młodszy i w trzecim bajcie...
Bascom jest tak beznadziejny, że adresuje tablice od 1 a nie od zera. To by jednak dawało przesunięcie o jeden a nie 2.
Co z tego, że zmieni rozmiary stosów? To tylko przesunie katastrofę w czasie. Albo pisze się program w/g przyjętych zasad, albo ma się problem. Ten program, dobrze ułożony będzie działał nawet z wartościami domyślnymi stosów.
Panowie - w bascomie jest wszystko czego potrzeba. Jeżeli np. dim czestotliwosc as word dim pomoc as byte czestotliwosc=1567 pomoc=low(czestotliwosc) do loop end Jak wyobrażacie sobie kompilator bez możliwości takich operacji? a w ogóle wiadomo że zmienne sa zapisywane - wystarczy wiedziec gdzie się zaczyna zmienna i jaką ma długośc i mozna...
Ha! Tylko pamiętaj że to dotyczy TYLKO zmiany położenia 1 potencjometra. Jeżeli poruszę pierwszym to drugi się przesunie ale jeżeli poruszę drugim to pierwszy już się nie przesunie bo zauważ że program posiada zmienne pracy silnika tylko jednego potencjometru. A ja muszę napisać program tak by można było to wykonywać na każdym potencjometrze na zmianę...
Witam! Orientuje się ktoś może czy za pomocą np atmega16 lub 32 jest możliwość wygenerowania trzech sygnałów przesuniętych między sobą w fazie o 120st? o napięciu w zakresie 0-10V z rozdzielczością 10mV? tester służył by do testowania zabezpieczeń nad prądowych (pełnił rolę przetworników I/U). Mile widziana pomoc programowa w środowisku BASCOM
Kiedy jesteś w przerwaniu to inne przerwanie raczej Ci nie grozi. Wiesz że Charmatch jest rozwinięciem przerwania od USART. Bascom wie jakie rejestry użyje do obsługi kazdego, jednego znaku, ale nie wie jakich użyjesz w dokładanych Seriallcharmatch. Dlatego proponują Pushall i potem Popall. ....Ty zaś po tym jak już zdjąłeś wszystkie rejestry ze stosu...
Moja po wyłączeniu się, jak wcisnę dowolny przycisk, to się włącza, wyświetlając ostatni wynik (nie zeruje się). Tak samo jak ją choć trochę przesunę, a jest wyłączona, i po włączeniu pokazuje poprawny wynik (uwzględnia przesunięcie które ją włączyło). Natomiast odłączenie zasilania powoduje wyzerowanie. To tak właśnie zachowują się te , które cały...
Problem leży po stronie scalania danych - wartości tmp_accx(1) i tmp_accx(2) nie mogą być dodane do siebie. Należy pamiętać że są to dwie połówki zmiennej typu integer, wartość tmp_accx(2) należy pomnożyć przez 255 lub przesunąć w lewo o 8 pozycji. Następnie obie połówki łączymy instrukcją OR (+ tu nie zadziała gdyż w przypadku liczb ujemnych będą głupoty)....
Cześć Uwagi cenne i dobre ale co do ilości pomiarów to zrób 32 lub 64, sumuj i przesuń wynik w prawo o odpowiednią ilość miejsc co jest szybsze niż dzielenie. Dzielenie jest sensowe jak chcesz zwiększyć rozdzielczość. Piotr
Przerwanie_0: 'co 2ms If Liczniczek_przygotowanie_odczytu < 400 Then Incr Liczniczek_przygotowanie_odczytu If Liczniczek_przygotowanie_odczytu >= 400 Then 'co 800ms odzyt DS Liczniczek_przygotowanie_odczytu = 400 Flaga_przygotowanie_odczytu = 1 End If End If Flaga_dodatkowa = 1 'do wykorzystania w innym sub- też co 2ms- to Twoje sterowanie...
Po pojawieniu się PINB.0 = 1 zwiększaj indeks tablicy Idx. Idx to zmienna którą będziesz indeksował tablicę w poleceniu: Lcd Tablica(idx). Ponieważ program może być na tyle szybki, że mógłby przesunąć indeks tablicy o parę kroków naprzód jeśli na PINB.0 utrzymuje się stan wysoki, to musisz też zapamiętać czy zwiększenie zostało już wykonane i pozwolić...
... I do zmiennej Odczyt(1) leci 0000 0000 a do zmiennej Odczyt(2) leci 1010 0010 Mam rację? Nie masz racji i zamiast pytać na forum, zajrzyj do dokumentacji DS-a Poza tym , jeśli rozumiesz swój(?) kod z 1-go postu, to pomyśl nad tym fragmentem: Odczyt(1) = 1wread(2) 'odczytaj dwa pierwsze bajty T = Odczyt(2) 'przepisz starszy...
Problem polega na tym, że odczytujesz wartość ADC z uC zamiast z DS18xxx. Brakuje ci obsługi DS18B20. Poniżej fragment kodu działającego u mnie. [syntax=vbnet] Config 1wire = Portb.0 '0,1,2 NOP 3,4,5,6,7 works good ON MY Equipment Do 1wreset 'reset 1wwrite &HCC 'jedna kostka, więc wykorzystujemy rozkaz SKIP ROM 1wwrite &H44 'dokonaj konwersji Waitms...
Nie rozumiem co masz na myśli pisząc "poza ekranem" Dziekuję ogólnie za pomoc, pamiętaj, że na int1 cały czas wpada sygnał który niejako uniemożliwia zmienienie czegokolwiek w pętli do...loop, przynajmniej nie potrafie, jedyna opcja to zatrzymanie przerwań przez disable int1 i potem wznowienie przez enable, a ten wpis juz na wejściu robi problem z przesunięciami...
najprościej zabrać sie w ten sposób: DIP8 Mikroprzełącznik typu DIP. podłącz po dwa wejścia do jednego kabla silnika i naprzemiennie + i - po drugiej stronie, tak żebyś mógł łatwo żonglować + i - na kablu silnika. i tak podaj najpierw 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 i w którymś momencie powinien sie przesunąć. właściwie zasada jest prosta jeśli chcesz...
W Bascomie to przykladowo moze wygladac tak : Enk_a i Enk_b to wyjscia z enkoderow podpiete pod dowolne piny mikroprocesora do Temp_enk =0 If Enk_a <> Temp_enk Then If Enk_a <> Enk_b Then Incr Poz Else Decr Poz End If Temp_enk = Enk1 End If loop
witam poniewaz jestem poczatkujacy w programowaniu w bascom mam pytanie: mam gotowy program do ukladu kontorli napiecia trojfazowego i mam taki problem ze chcialbym do niego dopisac taki program ze gdy dostaje napiecie na wszytskie 3 fazy i spelnia ono warunki (tzn jest odpowiednie przesuniecie napiecie pradu i wszystkie 3 fazy program zaczyna odliczac...
Małe pytanko do jakiego to jest scalaka? Jesli do ds1822 to strona 3 manuala LSB 62(dec)=3e(hex) MSB 2(dec)=02(hex) cała liczba 023e(hex) cztery najmlodsze bity to wartosc po przecinku temp= 023,e (hex)= 35.... e=1110 0,e=(1/2+1/4+1/8)=0,875 zatem masz za niska temp ciała 35.875 *C :) kod przykladowy dla delphi: temp:=(buf[1] and 7)*16+((buf[0] and...
Urządzenie uruchomione. Temat uważam za zamknięty.
Witam Jakoś nie widzę problemu. Po pierwsze można sobie zadeklarować zmienną tekstową, która może przechować do bodajże 255 znaków. Można sobie też zadeklarować tablicę z takimi zmiennymi i odpowiednio operować tymi danymi. Na przykład każdy nowy SMS będziesz wpisywał do pierwszej komórki w tablicy po tym jak poprzednie SMSy przesuniesz o jedną pozycję....
bascom przesunąć tablica przesunąć fazowy assembler przesunąć
dioda głośnik creative silnik pralki hoover konto microsoft office
mikrokomputer cobra1 spawarka magnum mig212
Jak nagrać program z kanału kodowanego - dekodery, nagrywarki, karty TV Błąd CO202 w Renault Kangoo - układ wspomagania kierownicy