Komenda shiftlcd left tego nie zrealizuje Niby dlaczego? Problem będzie tylko, gdybyś chciał wykorzystać inne linie do czegoś innego. Tu masz przykładowy program, korzystający z pamięci EEPROM: $eeprom Data "Baaardzo d{003}uuugi napis.!Jest zapisany w pami{002}ci EEPROM. W ATTiny 2313 mo{007}e mie{001} do...
Przykład bez użycia tablic... [syntax=basic4gl]$regfile = "m8515.dat" ' specify the used micro $crystal = 4000000 ' used crystal frequency $baud = 19200 ' use baud rate $hwstack = 32 ' default use 32 for the hardware stack $swstack = 10 ' default use 10 for the SW stack $framesize = 40 ' default use 40 for the frame space $sim 'Config Lcdpin = Pin ,...
' 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)...
Witam. atom1477 - masz rację, ale... Odgrzebałem swojego Pecela, aby sprawdzić w praktyce. Dla ludzkiego oka różnice w działaniu obu programów (przynajmniej tych konkretnych) nie są specjalnie zauważalne , a pierwszy, z wyświetleniem 16-tu spacji, upraszcza wyświetlanie przesuwającego się napisu. Zwłaszcza gdybyśmy chcieli przesuwać ten napis w pętli...
A może jest jakiś inny sposób? A może jest coś w przykładach BASCOMA? Tak, jest w helpie : "ENCODER"
Skorzystaj z przykładów w helpie Bascoma. Wydaje mi się, że źle określiłeś wartość danej A.
Po prostu tekst który chcesz przesuwać musisz przesuwać w zmiennej w uP a potem wyświetlać w tej linii w której chcesz.
(at)zumek Dzięki za kod, ale nie do końca wiem jak on działa. Szkoda :( W1 to tablica wskaźników na W, przesunięta o dwa miejsca? Mylisz się :( W1 , to jakby wskaźnik na W powiększony o 1 element tablicy W , czyli 2 bajty . Natomiast tablica wskaźników , to ... nie z tej bajki ;) A dokładnie rzecz ujmując , to Bascom definiuje tablicę W1 , w obszarze...
Zamieszczam w załączniku kod programu. Zmiana tekstu jak można zauważyć odbywa się przez płynne przesuwanie literek po wyświetlaczu. Kod jest modyfikacja programu z książki : Projektowanie mikrokontrolerow AVR w praktyce. Bascom. Literki sam robiłem więc mogą być niektóre nie takie jak powinny. Pozdrawiam
Jeden mały rysunek w pamięci, przed wyświetleniem kasować ekran wyświetlacza i wysyłać rysunek od określonego adresu (zmiennego).
INKEY i INPUT stricte nie czyszczą bufora. Od tego jest CLEAR SERIALIN. Jednak korzystanie z INKEY i INPUT pobierają dane z bufora i przesuwają wskaźniki, co także powoduje, że bufor jest "opróżniany" - choć dane w pamięci dalej są.
Witam czcigodnych forumowiczów ! ...chciałbym przedstawić wyświetlacz led własnej konstrukcji.Układ jest w fazie rozwojowej.Do budowy urządzonka;) wykorzystałem : atmega8515 2 x 74hc573 74hc154 2 x 74hc04 8 x BD139 no i oczywiście 128 led czerwonych Układ nie jest nowością i pewno wiele osób zbudowało takie coś...no ale z tej radości że udało mi się...
Możesz wysłać do wyświetlacza te same dane, tak żeby nadpisały tamte, z przesunięciem o jeden. To maks jaki da się zrobić w bascomie :)
Napisz program od nowa, przekombinowałeś wszystko maksymalnie, takie sterowanie da się zrobić prościej. Nie ma żadnego schematu. Przesuwasz sobie bity po porcie sterując jakoś, czymś... Dodatkowo przesuwasz aż 4 bity. Ile cewek ma twój silnik że aż 4 bity trzeba przesuwać?
Bufor ten ma 3 znaki ale po pojawieniu się pierwszego znaku od razu jest on przesuwany bo bufora programowego. Czyli działa to jak jak by bufor sprzętowy miał tylko 1 znak.
Adres się zgadza. &H6C podzielone przez dwa to &H36 ;) Możesz sprawdzić wbudowanym w Windows kalkulatorem programisty. W nocie podają adres nie uwzgledniając bitu RW. Bascom od razu przesuwa adres w lewo o jeden bit żeby zrobić miejsce na bit RW. Przesunięcie w lewo oznacza jednocześnie mnożenie przez dwa. Adres do zapisu &H6C a adres do odczytu &H6D....
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...
Chodzi o instrukcję SHIFT ? ... Nie, chodziło mi o MAKEINT(LSB,MSB), bo co Ci po SHIFT, skoro nie wiesz w którą stronę przesuwać :D
Przesuwanie było w pierwszym poście. Tamta wersja nie działała jak powinna bo odbierała jak pisałem. Na razie nie mam dostępu więc teoria tylko. Czy wystarczy polecenie shift left 1 przesuwając Dana? Pozdrawiam Maciej.
.. myslalem, ze jest do tego jakies 'tajemne' polecenie :) widze, ze bez nakladania masek, przesuwania sie nie obedzie..
Witam Wart_nap = Fusing(r , "#.##" ) Wart_nap = Format(Wart_nap , " ") Wtedy nie będzie się przesuwał napis
Ja to potzrebuje dla Bascoma Nie wiem czy bascom moze tak operowac na wskaznikach. Faktycznie wszystkie jezyki umozliwiaja takie fajne, proste przesuwanie sie w ciagu ale jak to zrobic w Bascomie tego nie wiem. MO
Dzielenie przez 16 to to samo co przesuwanie bajtu w prawo o 4. Czyli jest to wywalenie jakby 4 najmłodszych bitów, czyli odczyt temp będzie z dokładnością do 0,5 stopnia. Zajrzyj do notki. 5 najstarszych bitów to znak czy dodatnia czy ujemna, a 4 najmłodsze oznaczają miejsca po przecinku. Rozumiem ze zmiana z systemu binarnego na dziesiętny jest znana?...
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ć.
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...
Będzie to kodowanie z offsetem, i to w dodatku z offsetem zależnym od pomiaru w momencie naciśnięcia przycisku. Tak się po prostu nie robi. Czyli jedyna rada, to sprzętowo, za pomocą potencjometru regulować punkt 0? Nie, nie. Chodziło mi o to że jak regulujesz programowo, to zmienne muszą być trochę bardziej pojemne, na przykład typu LONG. Ale skoro:...
Jeśli chcesz potencjometrem regulowac prędkość, to łączysz jego opór pomiędzy szyny zasilania mikrokontrolera, a suwak dajesz pod przetwornik ADC. I przykładowo program: Config Adc = Single, Prescaler = Auto, Reference = Avcc Start Adc i w programie co jakiś czas sprawdzasz sobie: opoznienie = getadc(0) i zamiast waitms 500, dajesz waitms opoznienie...
Nie znam się zbytnio na bascomie, ale spróbuj czy jednorazowe przesunięcie bez pętli zadziała. Być może to jakiś ukryty problem z przesuwanie rejestrów które są rejestrami fizycznie podłączonymi do sprzętu.
No i tu właśnie pojawia się problem. Nie przesuwał bym napisu jeśli był by widoczny cały.
To jest ten obszar, gdzie Bascom nie daje rady. W assemblerze Bascoma to by było mniej więcej:[syntax=asm] ldi r16, 8 lds r18, {zmienna} przesuwanie_bitu: lsr r18 rol r17 dec r16 brne przesuwanie_bitu sts {zmienna}, r17[/syntax] Albo szybciej kosztem wielkości kodu: [syntax=asm] lds r18, {zmienna} lsr r18 rol r17 lsr r18 rol r17 lsr r18 rol r17 lsr...
Ciekawy projekt :) Mnie najbardziej nurtowało jak zrobić właśnie w obrotomierzu wskazówkę w bascomie która się tak przesuwa jak na twoim video. Możesz zamieścić ten kawałek kodu?
Jak można w Bascom x51 zmieniać (przesuwać) długość liczby wyświetlanej na LCD. Przykładowy program przedstawia problem. Jak przechodzę z liczby 100 na 99 to pozostaje nie potrzebne zero na wyświetlaczu , a jak przechodzi z 10 na 9 to pozostają dwa zera. Kolejny problem którego chcę się pozbyć to kreska za wyświetlaną liczbą „_”. Dim I As...
Tak też robię przerabiam na prostokąt i napisze jak sprawuje się pomiar. Ale lubię eksperymentować i mieć jakaś alternatywę stąd też pytania może głupie i trochę dziwne, może się kiedyś zdarzyć że w procesorze zostanie wolne tylko ADC a będzie potrzebny taki pomiar . Czy np. wzmocnienie małych napięć i pomiar międzyfazowy nie dał by informacji o przesuwani...
Tu masz troszkę prościej, z użyciem operacji przesunięcia bitowego (krótszy kod, łatwiejsza zmiana prędkości linijki led) Dim Led As Byte Dim Kier As Bit Config Portb = Output 'wszystkie porty b jako wyjścia' Portb = &B00000000 'wszystkie porty b w stanie niskim Config Portd = Output 'wszystkie porty d jako wyjscia Portd = &B0000000 'wszystkie porty...
Witam. Program nie pobiera po jednym znaku ale pobiera 16 znaków, odczekuje 2ms następnie pobiera znowu 16 znaków z tym , że zaczyna pobierać o jedną komórkę pamięci dalej. W sumie daje to złudzenie przesuwania sie napisu. Można przerobić aby przesuwał sie w drugą stronę.
Do przesuwania bitów służy polecenie shift :) Poczytaj w pomocy bascom'a.
Witam Muszę zrobić menu w Bascomie. Będą to dwa przyciski typu Enter i Esc oraz 2 strzałki 1 w górę i 1 w dół. Ruch strzałek będzie sygnalizowany przez "*", która będzie przesuwać się zgodnie z kierunkiem naciśniętej strzałki.
Na talerzu podawać nie będziem, ale podpowiedzieć można. 1. Z takim podejściem zaraz podpadniesz pod p.16 regulaminu... 2. Schemat rzeczywiście jest źle narysowany (bo zapewne to właśnie o technikę głównie chodziło). Schematy w Eagle twórz tak, by w miejscu połączeń 3 przewodów pojawaiły się kropki (tak, jak wygląda to nieszczęsne połączenie AREF z...
Jak sobie z tym poradzić? Jak już wcześniej mówiłem raczkuję w bascomie i każda rada doświadczonych kolegów jest dla mnie cenna.
Na wszystkich pinach lcd "podciągnąłem" do zasilania ... zero poprawy. Podłączyłem równolegle drugi lcd i tak jest OK. Pozostaje praca krokowa, niedostępna w Bascom (dlatego go nie używam). Kursor działa, więc wyświetlacz jest zainicjalizowany. Komendy do LCD nie sa trudne. Napisz swoją funkcję, która wyśle kod znaku do LCD. To prosta sprawa. RS =...
Ale czy bez tego nie będzie przesuwał textu dalej dorzucając następny? teraz nie moge tego sprawdzić.
A w jaki sposób zmieniać częstotliwość 50-200Hz Dokładnie chce by działało w następujący sposób: na jakieś Adc podpięty jest potencjometr, potencjometr zmienia częstotliwość od 50 do 200hz. Inne Adc ma potencjometr który przesuwa wypełnienie 2 względem 1.
U mnie po zmianie tekstu który ma zostać wyświetlony z Bascom AVR na 12, na matrycy zaczęło się coś wyświetlać, ale nie to co powinno. Zamiast 12 wyświetla się 1,8,<,: i $, w różnych odstępach od siebie, i np. 8 wyświetla się dwa razy i to jedna po drugiej. Całość normalnie przesuwa się od prawej do lewej.
wywal starsza połówkę np przesuwając rejestr w lewo czterokrotnie komendą LSL - Logical Shift Left a następnie przesuwając w prawo LSR LDI działa tylko na stałych 8bitowych P.S. Bardziej po polskiemu to się "używa" niż "urzywa"
If Dol = 0 Then For I=1 to 4 If X = I Then Locate I , 1 Lcd Chr(0); Else Locate I , 1 Lcd " " End If Next I End If w tej formie wskaźnik wiersza się nie przesuwa
chyba nie 401 a 104 (chodzi o końcówkę). Przynajmniej u mnie tak jest na nich napisane (mam 3 sztuki - jeden sie spalił). Co prawda nie w avr ale odpalałem to w bascom 8051 i działą rewelacyjnie. Jedno do czego mozna sieprzyczepić to słaby kontrast - trzeba patrzeć na niego na wprost. Ale oprócz tego to sprzęt jest rewelacyjnie mały. U mnie sa takie...
Hah, od razu skojarzyło mi się to: http://mikrokontroler.pl/2015/03/13/wyko... - w Bascomie, ale przy użyciu płytki Arduino UNO :D
Nigdy nie bawiłem się 1wire ale wydaje mi się, że jest coś nie tak ze zmiennymi. Piszesz,że odczytujesz i przesuwasz bity w Integer, a masz zadeklarowane jako zmienne Byte.
Tak. Grafikę można swobodnie wrzucać po konwersji na format bgf. Ja proste rysowanie stworzyłem na podstawie grafiki z jednego pixela, waitów i przesuwania o kolejne pozycje ale jest to dosyć mozolne.
Tak to da się zrobić. Godziny 5 bitów, minuty 6 bitów, miesiąc 4 bity, dzień 5 bitów, rodzaj x bitów. Razem 20 bitów + x. Kodowanie: Dim temp as long '.... temp = godziny shift temp, left, 5 temp = temp OR minuty shift temp, left, 6 temp = temp OR miesiac Działa jak widać dodajemy przesuwamy o odpowiednią ilość bitów i następną zmienną dodajemy w puste...
Witam Jestem bardzo początkującym w te klocki :) i mam problem, nie wiem jak zrealizować przewijanie tekstu tylko w jednej linii. Mam wyświetlacz 16x2. Piszę w Bascomie i polecenie Shiftlcd się nie nadaje ponieważ przesuwa też to co jest w drugiej linii. Chcę zrobić coś takiego, że w górnej linii przesuwa mi się tekst a w dolnej jest cały czas wyświetlana...
Witam. Jak sprawdzić czas naciśnięcia przycisku?? Chce zrobić tak , zeby po krótkim nacisnięciu przycisku procek wykonał jakąś operacje. Jeśli przytrzymał bym ten przycisk dłużej to procek zrobił by inna operacje. Np. At90s2313 , po jednokrotnym przycisnięciu przycisku zapala diode, natomiast po jego przytrzymaniu przesuwa jedynke po całym porcie. Pozdrawiam
Będzie problem? Przecież dać prostą tablicę 16 znaków, dać funkcję przyjmującą znak, która przesuwa elementy w tablicy, wstawia znak na koniec oraz przesyła wszystko do wyświetlacza. Wywoływać co jakiś czas tą funkcję przekazując kolejne znaki i już mamy przesuwający się napis. Dać rozróżnienie buforów i już mamy przesuwanie na wielu liniach (przy założeniu,...
Przesuwanie startu watchdog na początek nie eliminuje problemu. Pewnie tak jak piszesz Bascom procedury inicjacyjne LCD umieszcza zaraz po resecie mikrokontrolera i stad te opoznienie. Moim zdaniem nie powinno tak byc bo ciezko zapanowac nad czyms czego nie widać. Chyba przyjdzie samemu napisac procedury odnosnie obsługi LCD :(
Chyba jednak nie ta instrukcja. Dzięki formatowi mogę uzyskać to że nie będzie przesuwało napisu Cool1 = Cool * 0.1953125 Cool2 = Fusing(cool1 , "#.#") Cool2 = Format(cool2 , " ")
hiv_sick : Nie dziwię się, że nie są przesuwane. Nie masz żadnej pętli.
Witam Bardzo dziękuję za pomoc oaz ten program. Jedyne czego nie rozumiem w programie Kolegi, to zasady działania polecenia Shift. Z tego co zrozumiałem, to chodzi o przesuwanie bitów zmiennej, czyli umożliwia to de facto dzielenie lub możenie liczby. A co w przypadku, gdy chcę pomnożyć moją liczbę np przez 0.74, w tym wypadku byłby to zapis: [syntax=vbnet]Liczba...
robisz to za każdym razem tak : 1. Zerujesz rejestr/zmienna w której chcesz miec wynik. 2. Przesuwasz rejestr/zmienna o 1 bit w lewo bez rotacji. 3. Jeśli P1.1 = 1 to ustawiasz najmłodszy bit w rejestrze/zmiennej, jeśli nie to zerujesz (poprostu dodajesz zawartość pinu do rejestru/zmiennej) 4. Jesli ni eodebrałes jeszcze 8 bitow to skocz do 2. Pozdrawiam...
witam. moim skromnym zdaniem bascom sie do tego nie nadaje. takie opoznienia i to jeszcze z przesuwanie bajtu powinno sie napisac w assemblerze tym bardziej, ze dokladnie wyliczysz sobie co i jak. jezeli chodzi o maskowanie bitu to nie za bardzo rozumiem co masz na mysli. bit mozna zamaskowac instrukcja [anl] ale nie wyrzucasz go. mozesz rowniez skasowac...
Juz lepiej z przejrzystością kodu , sam chyba przyznasz ze łatwiej ogarnąć program , tylko te Wait'y . Miałeś je usunąć z programu . Stosujesz dokładne odmierzanie 1 sekundy i minuty a zatrzymujesz program Wait'em 10 na około 10 sekund . Napisałem jak wykorzystać odmierzanie 1 sekundy do odmierzenia 10 sekund dla buzzera Dopisz w tej linijce kodu Wart_nap...
Miło z Twojej strony :] Dodano po 1 Co może być przyczyną wolnego działania programu? Testuję teraz programy do obsługi ds18b20 i przy ostatnim wgraniu programu inicjacja lcd trwa dłużej niż normalnie oraz program wykonuje się znacznie wolniej . Jest w nim animacja przesuwającego sie tekstu ale on sie przesuwa bardzo powoli.
Niestety nadal w programie jest błąd. Ta moja wersja z krótszym buforem też się zawiesza. Jak bufor był krótszy i zaczynał się od 0 i szedł do 31 to zawieszanie następowało tak jak normalnie. U mnie po 67 sekundach. Czyli ta BASCOMowa zmienna siedzi gdzieś na początku bufora. Przesunąłem wykorzystywaną cześć bufora do indexów 128…159 i zawieszanie...
tak to jest najszybsza metoda wykorzystujaca przesuwanie i dodawanie wartosci 3 .Porownanie czasu tej operacji w asemblerze a sposobow napisanych w basicu pokazuje jakie to sa roznice.Algorytm jest kilka razy szybszy i kilka razy mniejszy.i ta metoda nie jest tylko dla 8-bitowych liczb lecz dla kazdej wielkosci liczby.po prostu zamiast 8 bitow przesuwamy...
Udało mi się poskładać i wgrać program. Działa tylko muszę popoprawiać program. Przy dziesiątkach, setkach i tysiącach napis przesuwa się w prawo. Jak zrobić żeby stał w miejscu a tylko liczby wyświetlały by się po lewej - 0001 - jedności, 0010 - dziesiątki, i 0100 -setki. Grosze liczy dobrze - po 99 gr. wyskakuje 1 zł. w złotówkach.Przy wyświetleniu...
Obracają się dwoma jednocześnie , a mają pojedynczo zależnie od przycisku , po obrocie w prawo jak i w lewo ma ustawić pozycje środkowa, i od środka przesuwać w prawo i lewo . Nie ustawiają się na środku
Jest to podobne -owszem. Oczywiście, że jest algorytm do obliczania CRC jak i LRC. Trzeba skorzystać z google i z pewnością coś się znajdzie. Na tym forum jak i na Wikipedii na pewno coś znajdziesz jak obliczyć CRC. Mogę tylko powiedzieć, że całość opiera się na przesuwaniu i używaniu funkcji XOR. Są też gotowe funkcje do znalezienia w necie które przyspieszają...
Niedługo skończę testy mój programik praktycznie wyciska wszystko z bascoma. atom czemu po wysłaniu każdych 8 bitów aktualizujesz adres? Sterownik wyświetlacza sam przesuwa swój wskaźnik więc potrzebne jest to tylko przy nowej linii. Przeciez pisałem. Bo nie chciało mi się sprawdzić czy to zadziała :D Co do nowej linii: Tam też nie trzeba aktualizować...
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. Zrobiłem tak jak napisałeś, ponieważ jest to dla mnie chyba najlepsze rozwiązanie (ledwo 3 linijki kodu) i tu pojawia się następny problem. Gdy podzielę 256...
no niestety, nie pomogło... zrobiłem testy: polecenie "cls" czyści ekran z tego co na nim jest, czyli kwaratów... polecenie "cursor on blink" powoduje wyswietlenie migającego kursora wraz z kwadratem polecenie "locate x , y" przesuwa kursor tylko czemu zamiast znaków są kwadraty....
Witam, proszę o poradę. Wykonałem matrycę świetlną LED 8x8, program sterujący pisałem w BASCOM AVR, matrycą steruję przez układ 74164 plus tranzystory, chciałbym uzyskać efekt przesuwających się liter, schematy zapalanych diod dla danej litery są zdefiniowane w ośmiu tablicach oddzielnie dla każdego wiersza zapalanego w matrycy. Mój pomysł jest taki...
z tabelka to dowaliłem ... przepraszam...zapędziłem się odpowiedzią... Bardzo dziękuję, że jestes taki pomocny. Napisałem też do Ciebie PW. Przeanalizuję to wszystko dzisiaj i zobaczę co mi wyjdzie, nie mogę nigdzie znaleść przykładu procedury przesuwania bitów na 3 pinach - znalazłem tylko przesuwanie na całym porcie co do tabelki to widzę prawidłowość,...
Hehe, przeanalizuj dokładnie Twój ostatni programik i odpowiedz sobie jeszcze raz na pytanie jak on właściwie działa :) ...jak ograniczyć ruch diody dosłownie na 4 pinach. Tu mamy przesuwanie 2 diodek - "00010001"... Wkradł mi się mały błędzik :) W swoim programie pobierałem dane z linii Data i były to tylko bity 0...3 dla silnika bipolarnego natomiast...
No ok rozumiem pomysł, powinno zadziałać samo przesuwanie. Wystarczy 7 bajtów (7x8=56) Jak zapewnić sobie w Bascomie te 7 rejestrów na wyłączność? Tzn jak sprawić żeby we wstawce asm. nie skasować czasem jakiejś bascomowej zmiennej? A jeśli sie nie da w rejestrach, to do których komórek pamięci zapisywać skladowe bajty rejestru żeby nie nadpisać jakiejś...
No właśnie wszędzie po angielsku albo w c, nie mogę rozszyfrować tego z bascomem, wiem ze jak się zmienia stan na wyjściu to się przesuwa ten stan na następny pin rejestru ( czy jakoś tak ), ale nie wiem jak to ogarnąć jak wykorzystuje 12 z 16 pinów rejestrów i nie wiem jak to zapisać podczas gdy stosuje multipleksowanie. :/
Mam dość duży plik do kompilacji Bascomem. W Bascomie 1 nie było problemów, ale w Bascom 2 wprowadzili kolorowanie na szaro kodu zasłoniętego kompilacją warunkową. I to kolorowanie źle działa. Np. rozpoznanie zasłoniętego kodu rozpoczyna się w środku wyrazu. Kompilator nie zgłasza błędu. Pisanie przed taką zmianą przesuwa granicę kolorowania. Czy jest...
Kolega (at)yokoon użył komendy ' Config Lcd = 16 * 2' Czy ta komenda informuje sterownik HD44780 że ma pracować na 4 bity danych. Miałem podobną sytuacje jak pierwszy raz walczyłem z tym sterownikiem. Efekt był podobny. Sterowałem go z szyną 8 bitową. [syntax=cpp]void LCD_Initalize(void) { unsigned char i; LCD_DB4_DIR |= LCD_DB4; // Konfiguracja kierunku...
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 :?:
Raczej jest ok, czekam na LCD i będę testował wielkie dzięki. W razie czego się odezwę. A masz może jakiś pomysł na algorytm programu (pisze w bascomie) który będzie rozróżniał za pomocą dwóch kontaktronów kierunek przesuwania magnesów? Czy powinienem z tego zrobić nowy wątek?
Pamięć 24C daje sięprogramowac bez problemu w ukłądzie, tylko pamiętaj że lutując ustawiasz jej adres {sprawdź w nocie katalogowej nóżki A0, A1 , A2.!} Co do gadania do mikroprocka daj sobie na razie spokój z wysyłaniem znaków . Poszukaj w domu pilota z kodem RC5 najlepiej jakiegoś Philipsa lub LG. I napisz program, który po naciśnięciu wybranego klawisza...
A R/W i reszte nieużywanych wyprowadzeń ma kolega do masy podłączone? Warto też w samym programie zrobic wyświetlanie na lcd jakiegos dlugaśnego napisu, bo czasem po prostu lcd sobie przesuwa literki i nie widac np. pierwszych 5 znaków.
pisałem że próbowałem rozwiązać problem, patrzyłem do helpa i nie wykombinowałem więc pisze tu. Takie wyświetlanie miałem już zrealizowane bez funkcji format (dodając parę pętli if) jednak na przyszłość chciał bym wiedzieć normalne rozwiązanie. Według mnie bascom help mówi żeby zrobić tak Stout1 = Fusing(wout1 , "##.#" ) Stout1 = Format(stout1...
Sposób obsługi tego rejestru jest chyba taki że wybierasz go i wtedy przesuwające się jeden po drugim bity nie mają wpływu na wyjścia. Kiedy "puszczasz" wybór to ten podręczny rejestr jest przepisywany na wyjścia. Ty masz tylko LED`y i nic sie nie stanie, ale pomyśl o jakiejś maszynie w której byłby przekaźniki i podczas przesuwania bitów by się włączały...
Wader, w większości programów które znalazłem, nawet to czekanie waitms 750 było na końcu tak jak miałem wcześniej. Może i coś jest nie tak z tym kodem, ale nie będę się zastanawiał co, skoro działa bez żadnego przesuwania bajtów, itp. Nawet nie robię żadnej specjalnej obsługi wyświetlania temperatur ujemnych, a jakoś je wyświetla :)
jeśli będziesz to pisał w bascomie to używaj tylko najprostrzych instrukcji, staraj sie to zrobić bez użycia mnozęnia i dzialenia. w sumie to wystarczy ci przesuwanie bitów, i doczyt pojedynczych bitów. odczekanie na kolejny regaz musi być w pętli co określony czas i najlepiej jak będzie to pętla for która wykona sie ileś razy i potem przeskoczy dalej...
Attiny25? Czy liczniki da się skonfigurować tak aby obsłużyć 3 kanały pwm z dowolnym wypełnieniem? (nie zaglądałem w note, nie wiem jakie ma liczniki i ile, tiny13 ma jeden). Proszę bardzo, program można naspiać w C. Wykrywanie przysłonięcia światła wg mojego planu miało by wyglądać tak, że program co chwile robił by pomiar, liczył średnią (np z 32...
Pin OE w stan wysoki i odłącza wyjścia od rejestru szeregowego układu. Pinem OE można nawet regulować jasność świecenia sterując go PWM. Wiersze mają zasilanie z tranzystorów a SCT ściągają odpowiednie kolumny do GND. Czyli z tego co widzę po schemacie tak jak u kolegi. Wpisuje dane do kolumn i włączam tranzystor zasilający wiersz 1. W kolejnym przerwaniu...
Mam problem polegający na tym, że na trzy elementowej tablicy BGR(3) as byte muszę wykonać przesunięcie o 12 w lewo czyli wykonać rotate na tych trzech zmiennych tak jakby to była jedna zmienna np: przed przesunięciem: BGR(1) BGR(2) BGR(3) 01000010 01100100 11111010 po przesunięciu o 12 w lewo: BGR(1) BGR(2) BGR(3) 01001111 10100100 00100110 W jaki...
Zgadzam się z yego666, sterownik bitmapy to fajna rzecz, ale wydaje mi się że takowy sterownik powinien posiadać większe możliwości, a na AVRach niestety się takowego zrobić nie da. Minimum to: -generator znaków -jakieś proste grafiki, powiedzmy bitmapy -linia kwadrat koło -kolory w trybie > 3bit żeby można było jakieś odcienie uzyskać -jakiś prosty...
Szybkosc = 255 'tutaj regulujesz preśdkość przesuwania napisu Nie moze być 500 bo Szybkość jest typu Byte a nie Word Kol(5) = 255 'zapisz do Kol(5) wartość 255, co 'powoduje odstęp pomiędzy 'przesuwanymi znakami Wiesz co nalezy zrobić Po kazdej zmianie kompiluj program cdn...
Do Locate 1 , 2 Lcd "STACJA METEO" Wait 1 'Shiftlcd Right Cls Loop Nie wiem co chciałeś uzyskać (wydaje mi się, zeby tekst co sekundę przesuwał się w prawo) ale text nie będzie ci się cały czas w prawo przesuwał. Bo za każdym razem na samym początku pętli masz ustawianie tekstu w pozycji 1,2(Locate 1,2)
Tak jak napisał poprzednik. Niepotrzebnie stosujesz dwie zmienne: Dim i as byte Dim j as byte Kod i tak jest pokolej wykonywany więc możesz przyjąć w każdej "pętelce" FOR-NEXT używanie tej samej zmiennej do liczenia np. J. Nauczy cię to dobrych nawyków z oszczędzaniem zasobów pamięci RAM procesorka, co w bardziej ambitnych projektach w przyszłości pozwoli...
Witam, Mam problem z wyświetlaczem podczas korzystania z instrukcji graficznych np.Line objawy są ,że obraz się dzieli na dwie części i jedna z nich przesuwa się o 8 lub 16 pixeli w dół lub w górę , jednocześnie wyświetlam text z czcionkami w/w rozmiarze ... jak to można poprawić ?
Wydaje mi się, że nieprawidłowo liczysz adresy. Zauważ, że rekordy 02-05 zawierają różnie zapisany adres, który powinieneś odczytywać, a nie zakładać, że przestrzeń adresowana jest liniowo. To ma znaczenie w kodzie, gdzie przesuwasz segmenty, albo tworzysz własne segmenty w pamięci (w BASCOMie tego chyba nie ma, więc możesz się z tym problemem nie spotkać)....
Ten rejestr przesuwny ma swój bufor do którego wrzuca się dane poprzez DS i SH_CP. Aby nowy, obecny stan w tym buforze pojawił się na zewnątrz trzeba ruszyć ST_CP. Ustawia się stan na DS (cyfrowy sygnał). Aby przekazać ten stan do rejestru przesuwnego , daje się zbocze rosnące na linii zegarowej. Wtedy ten bit jest już w rejestrze. Teraz ustawiając...
Czyli jednak master odbiera dane od slave, a nie slave je wysyła. To już coś wiadomo :D Nie rozumiem jednak jak. Na chłopski rozum slave powinien zapisać to, co master chce odebrać, do rejestru przesuwnego SPI, po czym master to przesuwa i ma u siebie. Ale jak slave ma to wpisać do tego rejestru o ile dobrze to wymyśliłem?
W zasadzie można do Word odczytać Byte. Ale na zasadzie konwersji typów. A Lookup nie pozwala na konwersję typów. Typ odczytywanego parametru jest narzucany przez typ zmiennej do której się odczytuje, a więc siłą rzeczy te typy będą identyczne. Jeżeli więc odczytujesz do zmiennej typu Word, to Lookup zawsze będzie odczytywało po 2 bajty. Musiał byś...
Masz dużo racji. Prawdopodobnie to co napisałeś zadziała. Następnym krokiem ( pomnożyłeś przesuwając w lewo 4 razy przez 16) będzie podzielenie przez 16 i rzutowanie na zmienną single. Otrzymasz temperaturę dodatnią lub ujemną z dokładnością bodajże 4 miejsc po przecinku.
Dzięki za odpowiedź ale nim wpisałem pytanie na Elektrodę to sporo męczyłem się z tym (przesuwanie przecinka, mnożenie, dzielenie) ale niestety bez rezultatów. W bascomAVR jest polecenie "Round" ale ono zaokrągla wynik do liczby całkowitej i tym samym odpada. Może jest jeszcze jakieś polecenie coś w rodzaju formatowania wyniku, którego jeszcze nie znam/znalazłem...
jesli pracujesz nad avr'rem to prosto to mozesz zrobic w bascom avr poleconiem shift fajnie że chciałeś pomóc ale nie napisałeś jak polecenie shift dzieli przez FFFF?? temat przesuwania został wyczerpany , zastanawiajmy się nad procedurką dzielenia lub innym sposobem ;)
Witam! Kolega nie zatrzymuje programu po instrukcji If ( domyślam się , że przycisk jest podłączony do pierwszego pinu portu b ), tylko każe mikrokontrolerowi zmienić stan portu. Proponuję: Do Wait 1 Rotate Portd , Left If Pinb.0 = 1 Then Bitwait Pinb.0=0 End If Loop End Nie wiem czy to zadziała, bo nie mam jak tego sprawdzić. Rotate przesuwa zawartość...
przesuwanie bascom przesuwanie tekstu bascom bascom przesuwanie tekstu
licznik instrukcja kamera reset access filtrowanie formularz
lodówka turystyczna lodówka turystyczna
Radio 84399213 - Wyłącza się po "MAC INIT" Błąd PDL w drukarce Xerox 6605 - co oznacza?