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.
Do przeczytania w helpie: MID, LEFT, RIGHT
Zgadza się oczywiście, sposób zaczerpnięty z AVRFreaks ma "fajniejsze" słupki, co widać na załączonym foto.
W przerwniu i programie głównym używasz zmiennych zadeklarowanych jako word. Myślę, ze tu leży pies pogrzebany. W C wystarczy użyc volatile i atomic_block. W Bascim? Był taki na Elektrodzie (niveasoft) co wiedział w jaki tajemniczy sposób Bascom zarządza takimi zmiennymi. Myślę, że nie masz wyjścia, tylko przed odczytej w programie głównym zmiennej...
po pierwsze to attiny trzeba przestawić na zewnętrzny kwarc, bo standardowo jest na wewnętrznym RC. po drugie ATtiny2313 ma dodatkowy fusebit odpowiedzialny za podział częstotliwośći zegara przez 8. niepamiętam jak sie on nazywa dokładnie ale jak programujesz z bascoma to tam jest to ładnie nazwane (clock frekwancy divider) czy jakoś tak. standardowo...
Sprawdzenie czy temperatura jest dodatnia czy ujemna, tylko w wypadku tej drugiej przed wyjściem z if'a trzebaby umieścic procedurkę wyświetlającą/zapamiętującą ten znak. Grzesiek.
Otrzymasz znaki "2" "5" oraz znak Enter. http://www.elektroda.pl/rtvforum/viewtop... A. To Ty, dopiero zauważyłem ;p
Rzuciłem okiem w HELPa i funkcja "inputbin" czeka na znak, program dalej się nie wykonuje. Może lepiej użyć przerwań wykonujących się, gdy w buforze UART jest znak ?
A może odbieraj większy string i sprawdzaj pierwszy znak.
Fajnie świetnie... A sam nie możesz Sobie skompilować?:> podany soft masz powyżej. Porty sam pozmieniaj:> Co do LCD niby małe szanse, ale może być nieżywy fabrycznie. Chociaż IMHO to winny jesteś Ty;) Upewnij się jeszcze raz czy na pewno masz te 4MHz - to by wiele tłumaczyło;-) Wpisz w sofcie 16000000 będą opóźnienia źle działały - będą trwały dłużej...
Zmienna = -Zmienna ?
Żeby nie było, że konspiracja, to dodam że plik definicji jest ogólnodostepny na ForumMCS, ale dla zainteresowanych ożywieniem Xmegi takiej jak w "Leonowych" modułach..proszę bardzo :D
Mój typ - wadliwe podłączenie linii danych. Możesz jeszcze próbować w programie wstawić dodatkowe INITLCD przed DO.
A w programie jak wywołujesz to polskie znaki?
Chyba brakuje Home po ___lcde = 1
A może wykorzystać polecenie Chr() i tak: Chr(0A), powinno dać LF.
A jak skofigurowałeś UART ?
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...
Witaj. Nie wiem, czy dobrze Cię zrozumiałem - ale czy odpowiednio użyta dyrektywa Config Input = .... nie załatwi Twojego problemu? Pozdrowienia - teedd
Tablicy nie, bo to różne typy. słowo2_array jest nałożone na słowo2 (string) więc musisz robić podstawienie słowo2 = słowo3 albo kopiować ze słowo3 poszczególne znaki do słowo2_array
Do pracy Uartu nie są potrzebne przerwania. Ale ty masz tu buforowanie, które wymaga przerwań. Jak niby bascom ma wyłapywać znaki w tle bez przerwań? Jak masz jakis pomysł to daj znać - chętnie go kupię.
Tak dokładnie. Kompiluje się bezbłędnie ale wyświetla dziwny znak.
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]
Ldi R30, 28 Ldi R31, 78 Rcall _lcd_delay ; 20 ms delay at 4 MHz Witam, przedstawiony kod asemblerowy jest niezmiernie prosty w edytowaniu i zmienianiu parametrów instrukcji. Ldi - jak każdy wie, to ładowanie odpowiedniej wartości do rejestru Rcall - wywołanie programu. _lcd_delay: Sbiw R30,1 ;2 cycles Brne _lcd_delay ;2 cycles Ret Sbiw - instrukcja...
Zastosuj bufor: Config Serialin = Buffered , Size = 100 enable interrupts A oczekiwanie na znak zrób: Bufor_flaga = Ischarwaiting() : If Bufor_flaga = 1 Then Gosub Odbierz_uart Następnie procedura odbioru danych: Odbierz_uart: Bufor = "" Do Bufor_znak = Inkey() Bufor = Bufor + Chr(bufor_znak) Bufor_flaga = Ischarwaiting()...
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
Sposobów na to jest ... . Dim Zmienna As String * 5 Zmienna = "piotr" Mid(zmienna , 2 , 1)="o" Piotrek
Wyrzuć obsługę LCD z przerwania, wyświetlanie wykonuj tylko w pętli głównej. W przerwaniu zmieniaj dane, które mają się wyświetlać i ewentualnie ustawiaj jakąś flagę, która da informację w pętli, że trzeba wyświetlić nowe dane. Przerwania powinny trwać jak najkrócej, wstawianie tam wyświetlania LCD, waitów itp. jest złym pomysłem.
"znów zamieni się na znak ASCII" Sam się nie zamieni.
Jest też taka fajna procedurka Ischarwaiting która wskazuje na to że w buforze jest znak odebrany. Jeśli Ischarwaiting =1 to tylko wtedy czytasz znak.
..A czy można własne znaki wrzucić na EEPROM ? A co ja napisałem parę postów wcześniej :?: Masz tu przykład(właściwie gotowca) do przetestowania: '$regfile = '$crystal = 'Config Lcd Dim I As Byte _temp1 = &H40 Gosub _lcd_control For I = 1 To 64 Readeeprom _temp1 , I Gosub _write_lcd Next Home Lcd Chr(0) ; Chr(1) ; Chr(2) ; Chr(3)...
Dobrze nawet zrozumiales z tym znakiem. ale jesli temperatura jest ujemna to negujesz calosc i odejmujesz 1 zeby miec poprawna temperature (potem dzielisz na 16). i tyle filozofii.. a swoją drogą nie masz zamrazalnika? wez kostke lodu i sprawdz.... ;]
nie, jak mam waitkey to zatrzymuje caly program i czeka na znak. Czy jak bede mial zewnetrzne przerwanie to przerwie to czekanie na znak?
Może lepiej zamiast usuwać 3 znaki znaleźć przyczynę dlaczego tam się pojawiają ?
1. Dim Wart_nap As String * 3 2. Wart_nap = Fusing(v , " ##.& ") 3. Kropka to też znak...
:D [syntax=basic4gl] Tabela: ' 0 1 2 3 4 5 6 7 8 9 Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144, 192 ' <-spróbuj dopisać [/syntax] , ale pomyśl też o takim warunku :P [syntax=basic4gl]Decr Sekjed If Sekjed = 255 Then Sekj = 9 Decr .. End If[/syntax]
Niestety Jak dam instrukcję ustawienia bufora to już nic nie odbiera (nadawać nadaje). 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 gdzieś znajdę może opis (bardziej uporządkowany niż w helpie) operacji tekstowych ? Potrzebuję "wyciągnąć" określony string z stringu pobranego przez INPUT. Czyli np - string pobrany przez INPUT ma długość 10 znaków. A ja potrzebuję pierwsze 4 znaki.
Tworzysz zmienną sting * 20 i tworzysz tablice byte(20) adresujesz je tak samo i poleceniem lcd chr(byte(a)) stawiasz znak z wybranego miejsca ze stinga.
konfigurowanie wyswietlacza na 16*1a jest wygodne ale niestety zajmuje wiecej pamieci, mozna taki wyswietlacz zadeklarowac jako 16*1 i dzielisz go na 2*8 czyli pierwsze osiem znaków to linijka 1 znak od 1 do 8 drugie osiem to linijka 2 znaki od 1 do 8
Przerwanie jest zgłaszane, gdy zostanie odebrany bajt. Wywal przynajmniej jedno z porównań z 13. Przecież jeśli jest równe 13 to nei ma sensu sprawdzać, czy jest różne od 13. Stare przysłowie pszczół, które cytuję to co 3 dni: żadnego oczekiwania w obsłudze przerwania. Wyrzuć Waitms 100 z obsługi przerwania! Nie możesz również nic nadawać w obsłudze...
Jak sie nie myle przez terminal leca znaki w zmiennych typu string. To powinno ci pomoc dalej
To ja jestem jeszcze większy cienias bo nawet ze schematem pewnie nie pomogę (może być prawidłowy a nieprawidłowy będzie layout połączeń).
C = Dana \ 100 Dana = Dana Mod 100 B = Dana \ 10 A = Dana Mod 10 Takie przekształcenia można łatwo sprawdzić w symulacji. PS. Używasz zmiennych typu integer, czy na pewno potrzebujesz zmiennych ze znakiem.
Po pierwsze to to samo. Po drugie chyba nie będziesz wywyłał adresów tylko znaki.
(at)krzysiek_krm tak oczywiście handshaking był na none, ale w ramach poszukiwania magii sprawdzałem wszystkie ustawienia i tak zostało. Oczywiście komenda print w bascomie jest niewrażliwa na handshaking i atmega sypie znaki od razu. Chciałem powiedzieć: niezależnie od ustawień handshaking znaki przychodzą w rytmie programu Atmegi. Oczywiście złe...
Procesor Atmega8 oscylator wewnętrzny 1MHz w Bascomie stosując instrukcję: print "dowolny znak ASCII" w terminalu na PC otrzymuję znaki przesunięte decymalnie o 64 np: print "01245" otrzymuję "pqrstu". Co może być tego przyczyną? Serdecznie pozdrawiam
No do tablicy "Znaki" się wstawia. W zwykłym ASCII.
Możesz użyć Inkey. Tylko funkcja ta ma taką cechę że nawet jak nic nie ma w UDR to zwraca 0. Także najlepiej zrób to w ten sposób że najpierw sprawdzasz czy jest znak (Ischarwaiting) a potem jeśli jest, to odbierasz Inkeyem. Można też zrobić to w przerwaniu. Jeśli początek odbieranego tekstu masz stały to można też zrobić pętlę w któej ciągle pytasz...
Witam Piszę program do sterownika pieca Wszystko po włączeniu działa przez około 15min a później na wyświetlaczu pojawiają się dziwne znaki także znak z Deflcdchar który nie jest używany tylko zdeklarowany. Przyczyna jest chyba tylko wyświetlacza ponieważ po przystawieniu zapałki do czujnika DS18B20 program działa prawidłowo i włącza alarm jednak wyświetlacz...
Musisz ty zamienić na litere. Każdemu znakowi odpowiada wartość z zakresu 0-255 więc ci będzie zawsze zwracał wartość liczbową danego znaku.
Odbieraj znaki w przerwaniu, a obsługę rób w pętli głównej, lub wyłączaj przerwanie po odebraniu pierwszego znaku, a potem załączaj. Możesz też sprawdzać czy nie pojawia się Twoje "jedynie pewne znaki" I po ich odebraniu "odciąć" ciąg. Masz jeszcze Ischarwaiting do zabawy.
Proponuję po odebraniu przez RS232 entera ( #13#10 ) wysłać do wyświetlacza przejście do następnej lini. Bedzie to jak mi się wydaje najrozsądniejsze wyjście z sytuacji. Print - w bascomie zawsze po znakach wystawia znak enter (ascii: #13 #10).
Jeśli to string to na końcu masz zawsze EOF, czyli np 5 znaków zajmuje 6 bajtów. Ale to i tak pierwsze 5 znaków by ci się wysyłało. W środku pętli FOR wpisz jakąś instrukcję wyświetlającą WSZYSTKIE pozycje z tablicy TX_BUF bo widać że coś masz tam nie tak i na tej podstawie zobaczysz co próbujesz wysłać. Może gdzieś ci się spacja wstawia lub pusty znak?
Podłącze się pod temat. Mam podłączony wyświetlacz według tego schematu: http://obrazki.elektroda.pl/4226781800_1... wszystko działa oprócz tego że nie mogę regulować kontrastu (na wyświetlaczu widać znaki) kręcenie potencjometrem kompletnie nic nie daje.
Witam ! Usuń nawiasy kwadratowe z: [syntax=basic4gl] Deflcdchar [2] , 224 , 231 , 229 , 231 , 224 , 224 , 224 , 224 Deflcdchar [0] , 32 , 7 , 5 , 7 , 32 , 32 , 32 , 32 Deflcdchar [1] , 32 , 4 , 4 , 14 , 14 , 14 , 32 , 32 [/syntax] Tak: [syntax=basic4gl] Deflcdchar 2 , 224 , 231 , 229 , 231 , 224 , 224 , 224 , 224 Deflcdchar 0 , 32 , 7 , 5 , 7 , 32 ,...
Tak sobie żartując to mogłeś wziąć Tiny13 do tego zadania bo jest jeszcze mniejszy ;) Wracając do sprawy fonty zaczynają się od znaku 32, czyli spacja, a kończą różnie. Niemniej Ty potrzebujesz "reduced font". Czyli znaki od 48 do 57. Takie wielkie znaki można też skompresować RLE kosztem wydajności... Poczytaj, poszukaj to zrobisz ;)
Można strzelać? Bo nie znam BASCOMa :) Różnią się znaki na końcu linii (CR, LF) i dlatego Select Case nie rozpoznaje komendy.
ad1.Split() ad2.Instr(), Varptr(), Inp(), Out(), itp ...W żadnej funkcji nie mam na myśli MID() ... A czym naraziła Ci się ta funkcja, że nie chcesz o niej nawet myśleć :?: :-P
Znaki zdefiniowane w pamięci CGRAM odpowiadają znakom o numerach 0,1...7 więc ustawiasz kursor w odpowiednim miejscu i wyświetlasz tam odpowiedni znak. Nie jestem pewien ale chyba przez Lcd Chr(0) itd.
Witam Chciałem się pobawić terminalem który jest wbudowany w bascomie Lecz gdy wpisuję coś do terminalu, to wychodzą takie krzaczki: http://obrazki.elektroda.pl/7761527600_1... Wie ktoś czemu tak się dzieje?
z ciągu (powiedzmy 5-cio znakowego) udało mi sie zczytać tylko 2 znaki. nie wiem dlaczego. A może poprostu program się nie wyrabia z odbieraniem znaków? Czy bascom buforuje odebrane znaki?
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...
Problem jest w tym, że używasz wspólnych, globalnych zmiennych ( I , Znak ).
...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...
No mam 2 pomysły . 1)Po pierwsze, dlatego ze wysłałem to z komputera i automatycznie zostało dopisane znacznik końca linii przez system 2)A po drugie to może, dlatego ze wyświetlam to komendą LCD "p: " ; P I to automatycznie dopisuje te znaki. Trafiłem?
Błąd - przeczytaj w helpie co zwraca komenda inkey. Zwracam honor, rozpędziłem się. W innych basic-ach jest to znak, w bascom-ie kod ASCII pierwszego znaku. Pozdrawiam
nie testowałem tego tylko pisze z głowy. Ale skoro X to STRING to nie można go porównywać z pojedynczym znakiem bo STRING to tablica znaków. Porównanie musiałoby wyglądać na przykład: if X[1] = chr(32) then coś_tam wtedy warunek będzie spełniony jeśli w STRINGu X na pozycji 1 będzie spacja.
Przy pierwszym naciśnięciu uruchomić Timer np. na dwie sekundy. Jeśli w tym czasie odbierzesz drugi znak, to zmienna=2*10+5. Jeśli nie to zmienna=2.
Nie napisałeś jaki ma to być Modbus ascii czy rtu, kodu w bascomie nie posiadam ale może Ci coś podpowiem, więc tak jeśli chodzi o rtu jest to postać bitowa i ważne są odstępy czasu miedzy znakami oraz początkiem i końcem ramki, jak to zrealizować a no bardzo prosto ramkę składasz z ascii i posyłasz to na rs232/485 i będzie działało może nie jest to...
Odebrane znaki zapisz do tablicy a potem wybierz te które są ci potrzebne i prześlij je do PC.
tylko UART. 1 bajt niech będzie kodem diody a następne czym tam sobie chcesz. Ramka np o stałej długości lub zakończona odpowiednim znakiem.
Czy jest jakaś możliwość dodania kolejnych znaków do istniejącej tablicy fontów w Bascom (czyli pliku FONT) , tak aby nie trzeba było tworzyć nowej większej tablicy, i ręcznie "rysować" każdego znaku od początku ? Mam tabelę fontów, zawierającą specjalne mini-grafiki, więc jeżeli trzeba robić nową tabelę, musiałby wszystkie narysować od początku...
Jaki tam szkopuł. Lcd T;" " Piotrek
Witam serdecznie! Co znaczą znaki zapytania przy odbiorze i odczycie danych z PCF8583, przy godzinach minutach i sekundach , błąd komunikacji? Jak w ogóle powinien zareagować układ co powinien wyświetlić przy pierwszym poprawnym odpaleniu? Dzięki :)
http://www.elektroda.pl/rtvforum/viewtop... Dodano po 23 [syntax=basic4gl] Dim Dane As String * 15 Dim Dane_array(15) As Byte At Dane Overlay Dim Kod(15) As String * 1 Dim A As Byte Dane = "1234z2132j2131j" For A = 1 To 15 Kod(a) = Chr(dane_array(a)) Next[/syntax]
OK właśnie ukończyłem testy moduł =>FT232=>terminal i jest ok wysyła smsy, na szybko napisałem coś takiego na procka i mi nie wysyła [syntax=vbnet] $regfile = "m644pdef.dat" ' specify the used micro $crystal = 16000000 $hwstack = 32 $swstack = 32 $framesize = 200 $baud = 19200 Dim Komunikat As String * 80 Dim Numer_telefony As String * 9 Komunikat =...
Odwrotnie: 0101-0000. A przelicz na piechotę albo w kalkulatorze obsługującym system binarny (czyli na przykład w kalkulatorze z Windowsa). Dodano po 2 A w sumie to nie musisz przeliczać. Możesz napisać: LCD Chr(&B01010000)
Znaki terminujące - czyli "\r\n", ewentualnie NULL, zazwyczaj kończą zmienne typu string. Nie sądzę, żeby były wysyłane po każdym znaku. Nie programowałem w C#, ale wydaje mi się, że kompilator dodaje Ci te znaki automatycznie. Spróbuj odbierane znaki zapisać do zmiennej innego typu, np "byte" lub "char". Jak wygląda Twoja procedura odbierająca znaki...
Witam. uC to Attiny 2313 Czytałem już wiele wątków związanych z UART'em jednak ciągle mam problemy z ustawieniem i działaniem tego. Z uC wysyłam poleceniem: print "1" a na PC wyskakują jakieś dziwne znaczki (z rozszerzonego ASCII) i jest ich więcej niż wysłanych z print'em. Według tego co wcześniej yczytałem na forum ustawiłem tak:Attiny 2313 ma ustawiony...
Czyli stringa zamienić na liczbowy kod, przesłać to do eeproma ? trzeba będzie każdy znak oddzielnie słać ?
Witam. Jak w Bascom dla mikroprocesorów AVR wyodrębnić poszczególne znaki z zmiennej typu string mającej kilka znaków? Np. Zmienna string jest 5-znakowa. I chcę pojedynczo przypisać poszczególe litery/cyfry tej zmiennej do nowej zmiennej typu string, ale 1-znakowej. String*' 5 znaków: ABCDE 1.String*1 = A 'pierwsza zmienna string 1 znakowa 2. String*1...
LCD 2 * 16 (potencjometr 10K do kontrastu) Atmega8 16MHz $regfile = "m8def.dat" $crystal = 16000000 $baud = 9600 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Dim Znak As String * 1 Wait 5 Do Cls Lcd "Podaj znak" Input Znak Print Znak Loop End...
Hi ! Czy na symulatorze wszystko wyświetla prawidłowo ? Ja posiadam BASCOMa AVR w wersji 1.11.6.4 i u mnie na symulatorze jest wszystko OK. Skompilowałem dla Ciebie ten program (AVR 1.11.6.4) i zamieszczam go niżej. Sprawdź czy będzie chodził prawidłowo.
Bo znak 0 to znak końca linii. 0 wyświetlane jako chr zostanie potraktowane jako znak o kodzie 0 a więc pójdzie do wyświetlacza. 0 "wyświetlane" jako String jest widziane jako znacznik końca textu a więc ten text nawet nie trafi do LCD. Jednym słowem LCD nawet by to wyświetlił, ale BASCOM kompiluje program tak żeby nie przepuszczał zera.
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 =...
...Jakie jest zatem rozwiązanie tego problemu (jeśli jest)? Bascomowy UART programowy działa jedynie wtedy , kiedy wywołamy funkcję z nim współpracującą. W pozostałych przypadkach ( kiedy działają funkcje/procedury nie związane z programowym UART-em ) , nadchodzące dane są "niewidoczne" dla procka :( Np. jeśli masz w kodzie Wait 1 , a w czasie działania...
CLS czyści i ustawia kursor w pozycji 1,1 HOME ustawia kursor w pozycji 1 Drobna różnica acz znacząca. Jeśli chce użyć HOME, musi pokombinować z formatowaniem wyświetlanej zmiennej ( chodzi o długość i ew wypełnienie pustymi znakami)
Dziękuję za pomoc. Sprawa się rozwiązała. Jednak tu smutna informacja korzystałem z książki Pana Marcin Wiązania i tam jest znak =
Gwiazdki przez cały czas wyświetlają się w górnym wierszu. Prawidłowo. Locate 2 , 1 oznacza pierwszy wiersz, drugi znak.
...Chodzi mi o to że chce wyświetlić na Lcd znak którego wartośc mam zapisaną w bajcie np D1 - wartość binarna Np w D1 jest 0111000 i chce aby na wyświetlaczy pokazało sie " p " Jak to zrobić ? :) Piotr Takie "cuda" robi się za pomocą polecenia Chr() :D Jeśli w zmiennej jest zapisany kod ASCII jakiegoś znaku , to by wyświetlić właśnie ten znak na LCD...
W tym projekcie MCU ma emulowac klawiaturę USB podłączona do PC. (Wysyłać kody znaków).
A jaki będzie sygnał wejściowy? Czy będzie to sygnał w postaci: klucz naciśnięty/klucz puszczony, czy raczej sygnał akustyczny np. 1kHz pochodzący z generatora, który będzie kluczowany przez jakąś osobę. Jeśli to pierwsze, to można zrobić prosto przez pomiar czasu, znając założenia alfabetu Morse'a - tzn. jakie są czasy trwania kropki, kreski, przerwy...
Error 10:Wrong type(bit,byte,integer,word,or string) Linia przy której Bascom protestuje , ma za zadanie zmienić znak zmiennej T2 , na przeciwny.To co przechodzi w BascomAVR , nie działa na Bascom8051-fakt.Każdy , kto chce pisać jakiekolwiek programy na uP czy uC , nie może być z algebrą na bakier :D 2 przykłady: If T2 < 0 Then T2 = T2 * -1 lub...
Chyba źle skraczona wersja programu. Poszukaj innej bo w oryginalnym kompiluje się bez błędu. Jest jeszcze taka możliwość, że w tekście masz białe znaki których nie widzisz bo kod z czegoś przekopiowałeś. Spróbuj skopiować kod z powrotem z Elektrody i skompiluj.
$regfile = "m128def.dat" $crystal = 16000000 $baud1 = 38400 Config Com2 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0 Dim Znak As String * 5 Open "com2:" For Binary As #2 Print #2 , "start" Wait 1 Pg: Input #2 , Znak Waitms 500 Print #2 , "Odebrano znak : " ;...
Tylko ze litery chyba nie zajmuja tyle samo bajtow. Napewno litera "w" zajmuje wiecej niz "l". Wtedy znaki zajmujace mniej bajtow musisz dopelnic bajtami, ktore beda ignorowane, nie przekazywane do wysylania na wyswietlacz. Musisz tylko znalezc wartosc bajta, ktora nie stanowi zadnej litery. Jedyne ktore przychodza do glowy to 170 lub 85 ale kto wie...
dodanie kwarcu zegarkowego rozwiązało problem
Tu poniżej jest nieźle namieszane '*********************** Obsługa bufora UART Serial0charmatch: Flaga_rs = 1 Return Odbiór bufora i przepisanie do zmiennej Tx powinien zostać wykonany w całości w tym przerwaniu, a nie ustawiana flaga że coś jest w buforze a potem dopiero za jakiś bliżej nieokreślony czas odbiór. A co będzie jeśli zostanie zasygnalizowana...
Zawsze odbierasz przez UART dane binarne. Możesz je tylko sobie wyświetlić lub wypisać jako znaki, liczby dziesiętne lub szesnastkowe. Odbierasz bajty, masz z nich złożyć daną 16-bitową, np. tak: wartosc = bajt_mniej_znaczący + bajt_bardziej znaczący * 256
polskie znaki bascom bascom znaki specjalne znaki kolach
satelita astra hotbird ustawić schemat automat schodowy zmywarka whirlpool wirnik pompa
Ariston Genus Premium Evo - Jak podnieść ciśnienie? Wyłączenie automatycznego płukania w ekspresie Krups