Ja też nic o zmiennej Err nie widzę. PS. Ale ogólnie to funkcja może zwrócić dwa parametry (albo i więcej). Procedura też ;)
A Twój program nie chce działać? Jaki jest problem. To co w programie masz nieprawidłowo to odczyt stanu przycisku. Procedura odczytu przycisku powinna przewidywać takie sytuacje jak drgania styków lub przypadkowe zakłócenia na linii przycisku. Jedną z możliwość odczytu przycisku jest: [syntax=basic4gl]If Wejscie = 0 Then Waitms 100 If Wejscie = 0 Then...
http://obrazki.elektroda.pl/9223335300_1... Było już na elektrodzie prezentowanych wiele zamków szyfrowych – z pełną klawiaturą, dwoma przyciskami i jednym też. Mój projekt z serii pchełka zrealizowałem na Attiny13 i jednym przycisku. Potrzebne mi było rozwiązanie nieco inne – coś co nie będzie chronić sejfu w banku ale...
Pytanie laika ;] . Chciałbym zrobić procedurę , która mógłbym przywołać w każdym miejscu programu np wpisuję odpal 1 a wykonuje się portb.1 = 1 portb.2 = 1 Mam nadzieję , że dobrze wyjaśniłem o co chodzi. Pamiętam , że używalem czegoś takiego w innych języka programowania , ale procedur do bascoma nie mogłem nigdzie znaleźć.
Witam W trakcie prac nad projekcikiem, używam 5 przycisków, które obsługuję procedurą opisaną poniżej. Strzegę się w ten sposób przed kilkukrotnym zliczeniem tego samego przyciśnięcia przez program. If Sw_prawy_help = 1 Then If Pind.5 = 0 Then If V_menu > 5 Then V_menu = 1 Else : V_menu = V_menu + 1 End If Sw_prawy_help = 0 Klik = 1 Wyjscie_z_menu...
Opis jest w kodzie, ale pozwolę sobie wytłumaczyć mój tok myślenia bo kiedy coś nie działa to wtedy łatwiej naprawić jeśli wie się co autor miał na myśli ;) Kiedy naciskasz przycisk to ustalany jest czas opóźnienia "Czekaj" na 20 czyli 500ms. Ten czas to taki Timeout. Jest odliczany w dół i dopóki zmienna nie ma wartości zero to nie miga. Zaczyna migać...
write_command(0x40+x) to funkcja wpisująca wartość parametru jako komendę. Parametr 0x40 (64 dec) to adres pierwszej komórki przeznaczonej na znaki definiowalne w pamięci LCD. Tu wpisuje się "wartość" górnej linii poziomej znaku zerowego. 0x41 (65 dec) i druga linia, 0x42 (66 dec) trzecia linia itd do 8, później pierwsza linia znaku nr 1. Funkcja nie...
ta komenda flagtens to jest poprostu moja flaga cały program którego częś ci podałem jest durzo większy i ciągle w trakcie twożenia. Flagę tą ustawiam sobie żeby w innej części programu nie resetować już 1wira i nie sprawdzać go ponownie poprzez err. w części programu wywołującej alarmy na wyświetlacz sprawdzam sobie właśnie tą flagę. natomiast funkcja...
Te Xmege wziąłem dla wygody bo wszystko śmigało na tym samym napięciu no i miałem drugi COM. Na początku jednak skonfigurowałem sobie wewnętrzny oscylator 32MHz i na prędkości 19200 była lipa. Same chińskie znaki, sieczka, innymi słowy śmieci :D Skonfigurowałem więc Xmege do pracy z zewnętrznym rezonatorem niewiele szybszym od 8MHz czyli takim USART`friendly...
Sprawdzałeś jak się ta transmisja zachowuje kiedy Twoje inkey() w ogóle nie jest używane ? Nie wiem co sobie wkompilowuje Bascom w procesor ale może używa jakiegoś przerwania które z kolei w ten czy inny sposób oddziaływuje na transmisje RS232. Dajmy na to jeśłi RS232 używa przerwań do odbioru lub wysyłania a jakaś inna procedura czy funkcja po wyjściu...
przyciskiem jest normlny switch ktory jest podlaczony do procka przez portb.1 oczywiscie do switch jest poprowadzony - od zasilania. Program ma robic: gdy S1 jest wcisniety: zapala sie dioda np. D1 ale D2 sie nie pali zalacza sie przekaznik i jest wykonywana procedura ktora zalacza i rozlacza buzzerek - pikianie po uplywie 5 minut przekaznik jest wylaczany...
Szkoda że na '51, bo na AVR było by łatwiej. Można to zrobić tak: Procki '51 mają wejścia zewnętrznego przerwania wyzwalanego stanem niskim, lub zboczem opadającym. Ciebie interesuje to drugie (bo zboczemn narastającym się nie da jak w AVR). Nie wiem jak wygląda konfiguracja przerwań w BASCOMie, zobacz w dokumentacji, ale podejrzewam że coś w rodzaju:...
Raczej najpierw musisz sie nauczyć C No właśnie próbuję. Przez ostatnie kilka dni przewertowałem więcej PDF od kontrolerów, niż przez ostatnie 3 lata :D Na razie największy problem dla mnie to operacje bitowe - wiadomo w Bascom łatwiej. Kupiłem nawet Attiny4313, coby nie brakło pamięci. Problem był jednak w momencie polecenia włączenia przerwań, były...
Witam Mam płytkę Loggera GPS + SD + PCF8563. Jeśli chodzi o GPS i zapis na SD wszytko jest OK. Problemem jest ( i to pierwszy raz się z czymś takim stykam ) odczyt danych z z układu PCF8563. Otóż dla pewnych wartości sekund, odczytana wartość czasu - godziny jest większa o 40 ( czterdzieści ). Czyli jeśli czas jest 22:40:02 to jest wyświetlany poprawnie,...
...właśnie znalazłem chwilkę czasu i ze zdumieniem zobaczyłem, że te biblioteki to nie jakieś pliki binarne ;) tylko tak jak podałeś w przykładzie z tym LCD. hmmmm tylko czy jest gdzieś jakiś opis jak się do tego tak bardziej szczegółowo zabrać? Jakoś nie spotkałem materiałów , o "nazewnictwie" wbudowanych w Bascom'a funkcji/procedur zmiennych czy...
Panowie, to Bascom. Musiałbyś dorwać się do kodów biblioteki w ASM i zobaczyć jaka funkcja w ASM jest odpowiedzialna za reset komunikacji z LCD i jego inicjalizację i ja cyklicznie wywoływać. Bez tego w Bascom będzie ciężko, ewentualnie możesz napisać sam prostą procedurę inicjalizacyjną na podstawie DS sterownika wyświetlacza.
Witam.Czy w pakiecie Bascom AVR zaimplementowane są procedury umozliwiające korzystnie z funkcji trygonometrycznych (funkcja sinus)???
...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...
Troszkę dziwnie wygląda ta pętla główna, ze zmienną "corobic" :) Mogłeś dać po prostu w do-loop wywołania kolejnych procedur i jedną pauzę np. 1 sek. Do tego w procedurze wyświetlania dajesz CLS - nie przeszkadza Ci miganie ? Spróbuj dodać na początku dyrektywy ustalające stos : $hwstack = 32 $swstack = 32 gdyż używasz GOSUB. Może pomyśl o procedurach...
No nic dziwnego, w ustaw_czas robisz call do wys_czas który wbrew obiegowej opinii wyświetla temperaturę;] i... ustawia kursor kilka spacji za *C :) a potem sobie reta do ustaw_czas gdzie już jak widać LCD "Ustaw czas" :) Ot i tajemnica;] Pozdro ;] Dodano po 1 PS lowerline sux, ja bym używał locateów na twoim miejscu ;-) Poza tym funkcje są fajnejsze...
W procedurze/podprogramie obsługi przycisku wciśniętego zwiększaj zmienną o 1 a w programie głównym, czy też tam gdzie to jest potrzebne, wykonuj program w zależności od tej zmiennej, np. wykorzystując SELECT CASE.
Witam, Magistrala 1-wire posiada dość mocne restrykcje czasowe co do trwania poszczególnych stanów na DQ. Przerwanie Timera, a wiec wykonanie podprogramu związanego z obsługa przerwania, powodowało zmianę długości tych czasów, gdyż są one generowane softwaerowo przez Bascom. Czasem może się zdarzyć że kolizja i tak wystąpi pomimo że teraz wszystko jest...
Wgrałem flash z procedurą wgrywania do zegara godziny 00:00 i niestety po uruchomieniu pojawiła się godzina 80:80. Może robię to źle? Robię to za pomocą tych komend: Makedec to do odczytów z zegarka. Do zapisów jakaś odwrotna funkcja. Nie znam bascoma, więc mogę jedynie zgadywać: Makebcd? Co prawda dla 0:0 nie powinno być problemu, ale tak na przyszłość...
Czytałem wprawdzie jakiegoś i tak fajnego PDF'ka autorstwa kolegi Zbigniewa Gibka , i jest tam trochę na te tematy. Jednak tam opisane jest tworzenie własnych procedur które hmmm trzeba deklarować jeszcze samemu w programie głównym. To troszkę ciężko tak działać. A czy zastanawiałeś się w jaki sposób przekazać kompilatorowi czy ma na stos wrzucić jakieś...
No tak. Bo ta procedura to wycinek większego programu. Poprawiłem kod. Teraz powinno sie skompilować. Dodano po 2 A, o to Ci chodziło. Tak - lepiej od razu odczytywać po 512B bo program i tak żeby odczytać 1bajt to musiał by odczytać 512B i potem wyciągnąć z tego tej jeden bajt.
mov DPTR, .Tablica_instrukcji mov A,{instrukcja} jmp (at)A+DPTR Pomijając fakt, że nie mam pewności czy ten kawałek kodu jest poprawny to mam problem ze zbudowaniem tablicy adresów. Pomysł jest dobry, ale wykonanie złe ;), albo zrobisz pomnożysz A przez 2 albo 3 i pod adresem tablica instrukcji zrobisz serie skoków (bliski ma 2 bajty, daleki...
Zobacz w pomocy polecenie GOSUB i CALL, bo pomieszałeś te polecenia. Dodano po 11 Do podprogramu możesz skoczyć poleceniem GOSUB i nie deklarujesz go. 'podprogram: Etykieta: 'etykiety kończymy dwukropkiem 'coś zrób Return Procedurę lub funkcję musisz zadeklarować i podać jakie parametry będą przekazywane. Jej treść musisz umieścić używając SUB...
Jreżeli to mają być tylko komunikaty o jakich piszesz to najprościej wykorzystać transmisję RC5 Procek nadawczy robisz tabele z komunikatami i zbierasz dane Wartości przypisujesz do funkcji command i wysyłasz w odboirniku też masz tabele i odczytujesz kod z tablicy zostaje wyświetlić to na lcd Transmisja na taką odległość powinna zadziałać Kilka diod...
Jak chcesz przekazać temu fragmentowi jakieś parametry, to prościej jest napisać procedurę ( Declare Sub , i ciało Sub...End Sub ). Jak taka procedura ma dodatkowo coś zwrócić to napisz funkcję ( Declare Function , i ciała Function...End Function ) Jak chcesz tylko tam wskoczyć i wrócić by wykonać powtarzające się operacje to etykieta: i GoSub . Jak...
Generalnie to twój problem wynika w dużej mierze z tego, że wywołujesz funkcję z wewnątrz przerwania. To powoduje szczególnie w Bascomie - niestety KOSMICZNE obciążenie w postaci po pierwsze ogromnego i niepotrzebnego zużycia stosu przez co musisz właśnie zacząć się bawić z tymi wszystkimi HWSTACKAMI itp .... zobaczysz jaka bonanza z tym będzie przy...
Tak jak pisze (at)atom1477 pokaż layout płytki, dla kwarcu 16 MHz kondensatory powinny być rzędu 8-12 pF, ale dokładnie możesz je policzyć jeśli poznasz pojemności kwarcu z noty. Jest jeszcze jeden problem - BASCOM. Zobasz na wygenerowany asembler, jak wygląda procedura przełączania zegara. Być może tu jest problem. Próbowałeś odpalić program w debuggerze...
przejżałem helpa i to dokładnie...posiadam wersję DEMO bascoma 2.0.11 i jest tam wspomniane jedynie o DECLARE SUB, nie ma ani słowa na temat deklaracji funkcji dlatego o to pytałem, dziękuję za odpowiedź pozdrawiam JarGol Fakt. Bascom 8051 -w przeciwieństwie do BascomAVR- nie obsługuje funkcji , obsługuje wyłącznie procedury :( Musisz rozwiązać problem...
w sytuacji kiedy skaczemy do podprogramu1, a w nim do podprogramu2, a potem skaczemy do miejsca gdzie nastąpił pierwszy skok nie dając tak naprawdę szansy na zakończenie podprogramu przez Return. Takie sytuacje zawszę rozważam :) Faktycznie używałem goto. Już teraz robię wszystko na procedurach i funkcjach także nie ma dziwnych problemów :)
Witam, daj sobie spokój z takim dziwnym skracaniem kodu bo zwykle w takich przypadkach wyłożysz się na plecy i długo będziesz szukał błędu. Po pierwsze - tym GoSub-em chcesz skakać do procedury obsługi przerwania, która wprawdzie w Bascomie kończy się dla programisty podobnie jak np zakończenie podprogramu bo rozkazem "Return" - ale to nie to samo w...
Cytat: "Jeżeli Twój Bascom "obsługuje" 1wirecount,1wsearchfirst,1wsearchnext to sprawa jest prosta , w przeciwnym razie ... jest więcej roboty(trzeba napisać obsługę Search Rom) , ale nie jest beznadziejnie" Mam Bascom 8051 v.2.0.11.0 Obsługuje te funkcje.
Najprościej napisać sobie procedurę lub funkcję i przekazywać parametry do funkcji. Zajmie wtedy najmniej kodu.
po pierwsze - z wideo to chyba tylko pilot bedzie potrzebny. Zrob tak - kup sobie scalony odbiornik podczerwieni TFMS na 36kHz pod wyjscie podlacz jakis uklad RC zeby usrednic impulsy i to pod przerzutnik typu D. do wyjscia przerzutnika podlacz tranzystor i przekaznik, lub triak sterowany optotriakiem MOC 3041. Inne rozwiazanie to zaprogramowac procesor...
podlaczylem tak jak napisales i nadal zapala sie tylko górny rząd kwadracików i nic wiecej A czy skompilowałeś ten programik wprowadzając zmiany w linii konfigurującej typ wyświetlacza, twój 16x2 a u autora projektu 16x1? Bascom ma dość uniwersalne procedury i funkcje, ale tego może akurat nie przeskoczyć.
Tak się dzieje jak stosujesz instrukcje Gosub, program idzie do procedury a tam znowu stosujesz Gosub i w tej na koncu nieszczęsne Retrurn. Program idzie w "krzaki" bo przepełniasz stosy i nadpisujesz w pamięci Ram zmienne. Poczytaj o procedurach i funkcjach w pomocy Bascoma, użyj Declare Sub a potem Sub: i END SUB. Stosuj też deklaracje ramki i stosu...
Witam, jak wiadomo (przynajmniej mi narazie) z helpa Bascoma - zwykłe polecenie PRINT generuje na końcu dwa dodatkowe znaki CR i LF Niekoniecznie :D Za pomocą polecenia PRINT , można wysłać stringa zakończonego ... praktycznie dowolnym znakiem - również sterującym. Print "Zmienna" ; Chr(13) ; ' średnik zakazuje wysyłania znaków sterujących. ... druga...
A niby czemu ma program skakać do procedury obsługi przerwania od przepełnienia? Przecież on się nie przepełnia, tylko po doliczeniu do wartości OCR lub ICR , natychmiast się zeruję ( przy okazji może ,ale nie musi zmieniać stan pinu OC). Musisz uruchomić przerwanie od tego właśnie porównania - czyli od Compare, tak jak wspomniał kolega wyżej. Tylko...
W pełni zgadzam się z kolegą Tdv. Jeśli chodzi o szybkość wykonywania i optymalność programu to słowo "Bascom" jest tu nie na miejscu. Ciekawe dlaczego , skoro Bascom nie jest kompilatorem , a jedynie "Integrated Development Environment" dla uC rodziny MCS-51 lub AVR :?: Kompilator wbudowany w Bascom'a to Basic , który nie jest ani lepszy , ani gorszy...
Jakiś dziwny ten kod, w pętli głównej nie masz odwołania do procedury "Pomiar", brak jest końca procedury "End Sub" dla Sub Pomiar... czy w ogóle ten kod Ci się kompiluje?
Witam, próbowałem przeanalizować ten kodzik ale naprawdę , uwierz - jest to baardzo ciężkie. Robisz narazie wszystko niezgodnie z zasadami programowania. Rozumiem oczywiście, że dopiero się uczysz ale postaraj się przestrzegać kilku zasad o których za chwilę a będzie nie tylko tobie łatwiej analizować napisany kod ale co najważniejsze szukać błędów....
Już pisałem że będzie ciężko. Piszesz że jest tam atmega, jaka? Dodaj schemat a może ktoś Ci w bascomie coś skrobnie. Bez informacji co i jak jest podłączone do procesora nikt Ci nawet na napisze procedury inicjacji procesora.
Ja proponuje użyć funkcji SZUKAJ. Na temat DS1821 było już sporo DS1822 obsługuje się praktycznie identycznie jak DS1821. Pozdrawiam
Do BASCOMa jest napisany HELP - nawet po polsku go napisałem. Czy nie potrafisz znaleźć sobie informacji jak działają procedury SUB i funkcje FUNCTION?
Popatrz tutaj: http://www.elektroda.pl/rtvforum/topic83... A z ta zmienna to uwazaj bo zmienna I to u ciebie zmienna globalna i pewnie sie przez to robi syf. Zmienna lokalna w funkcji deklarujesz dodajac na poczatku "Local". Tutaj masz przyklad: Sub Wyswietl(c1 As Byte , C2 As Byte , C3 As Byte , C4 As Byte , C5 As Byte , C6 As Byte , Lp As...
W kwestii BASCOM-a to Ci nie pomogę bo piszę tylko w asm i czasmi w C dla procków AVR, 51, DSP z TI. Jednak nie trzymaj się kurczowo zasady, że init LCD ma być jedną z pierwszych procedur po restarcie procka. Nawet lepiej by było gdybyś na poczatku zainicjował inne urządzenia a LCD na końcu. Ten typ ma jeszcze długi "czas podnoszenia się" po podaniu...
Dziękuję za przykład. Do tej pory bawiłem się trochę Bascomem 8051 i nie wiedziałem, że Bascom AVR i Atmega mają takie przydatne funkcje i procedury do ich obsługi. Zdecydowanie zaczynam zabawę z AVR-ami. Pozdrawiam Bogumił Kazimierski. :D
Ja to robię tak że pisze sobie procedurę która zwraca (zapisuje do innej zmiennej) wynik dzielenia pierwszego przez 10 (czyli funkcja mod). Następnie zmienna wejściowa jest dzielona przez 10 i tak zostawiana. Programik na początku podstawia "swoją" zmienną do procedury dzielenia. A następnie wywołuję procedurę jeden raz. Wynik jest teraz przepisywany...
bascom procedura funkcja funkcja bascom bascom funkcja
symbol piekarnik infekcja routera emiter podczerwieni
Oscyloskop 10-15 MHz a radio: pomiar sygnałów, fale radiowe, częstotliwość liniowa, Rigol, Siglent Mercedes CLS W219 - Kod błędu C0FE7 w systemach ESP/ABS/SBC