|
Kurs BASCOM - lekcja2 - pierwsze kroki |
| Autor |
Wiadomość |
Ikar


Pomógł: 1 raz Wiek: 16 Posty: 50 Otrzymał 25 piw(a) Skąd: się biorą dzieci ?
|
Wysłany: 16 Lip 08 06:48 Kurs BASCOM - lekcja2 - pierwsze kroki
|
|
|
Temat ten bierze udział w konkursie na najlepszy artykuł o robotyce. Więcej o konkursie tutaj. |
Zaczynamy.
Konfiguracja:
Aby wejść w okno opcji należy kliknąć ikonę
na pasku narzędzi.
W tym oknie klikamy zakładkę „Programer” (1)
W linii Programer(2) wybieramy programator jaki będziemy używać. W zależności od tego co wybierzemy pojawia nam sie poniżej różne zakładki (ja wymienię 3 najczęstsze).
Na powyższym obrazku widać „Parallel”(3)
W linii „LPT-address” (4)wybieramy adres naszego portu lpt, a w linii „Port dalay”(5) wpisujemy liczbę odpowiadającą za opóźnienie portu co jest konieczne w przypadku szybkich procesorów. Wartość tą dobiera się doświadczalnie.
Tutaj widać zakładkę „Serial”(6).W linii „COM-port”(7) wybieramy nr. Portu do jakiego jest podłączony nasz programator , a w linii „STK500”(8) wpisujemy ścieżkę do programu obsługójącego ten programator.
Zakładka „Other”(9). W linii „Program”(10) wpisuje się ścieżkę do programu obsługójącego ten twój programator W linii „Parameter”(11) wpisujemy dodatkowe parametry dla programu, a zaznaczając „Use HEX file”(12) dajemy sygnał bascomowi, że ma do programu obsługującego programator wysłać pliki HEX.
Narzędzia BASCOM-a:
-Lcd desinger(Ctrl+L):
Część bascoma w której można zdefiniować 8 dowolnych, niestandardowych znaków, mogą to być np: polskie znaki takie jak: ąćęłńóśźż; lub jak widać na obrazku-cokolwiek Pole do projektowania znaczków ma 40 kostek tak jak jedno pole w wyświetlaczu alfanumerycznym Aby dodać do programu swój symbol należy kliknąć przycisk ok.
-LIB Menager(Ctrl+I):
Część bascoma do zarządzania i tworzenia nowych bibliotek. Narzędzie dla dużo bardziej zawansowanych (asembler).
-Terminal emulator(Ctrl+T):
Służy do otwierania programów korzystających z portu rs232(com).
-Graphic converter:
Przekompilowuje pliki .bmp do plików .bgf tym samym zmieniając je na czarno-białe. Maksymalna rozdzielczość obrazka to 240*240. Obraz można potem wyświetlić na lcd graficznym.
Dyrektywy procesora:
-w wolnym tłumaczeniu-jeżeli, przykład:
| Kod: | Const Xd = 1
#if Xd
Lcd ":)" |
-bądź, jeżeli warunki podane w #if nie zostaną spełnione zostanie wykonana instrukcja z dyrektywy #else, przykład:
| Kod: | Const Xd = 1
#if Xd
Lcd ":)"
#else
Lcd ":(" |
-dyrektywa kończąca dyrektywe warunkową którą jest #if to działa jak zamkniecie polecenia np. html-u (tam kończy sie dane zadanie ta sama komendą którą sie zaczynał tylko ze sleszem- to tak do porównania), przykład:
| Kod: | Const Xd = 1
#if Xd
Lcd ":)"
#else
Lcd ":("
#endif |
Dyrektywy kompilatora:
Z tych dyrektyw będzią nas interesowac tylko dwie:
-służy do określenia procesora na jakim bedzie działać program, przykład:
| Kod: | $regfile = "2313def.dat"
'program jest pisany na procesor attinny2313 |
-służy do określania taktowania z jakim będzie pracować procesor, przykład:
| Kod: | $crystal = 4000000
'procesor będzie pracował z kwarcem bądź na wewnętrznym oscylatorze 4Mhz |
Elemęty języka Bascom Basic:
-służy do zmiany nazwy zmiennej, jeżeli wiemy że do danego pinu będzie podpięty czujnik możemy zmienic nazwe aly nam się łatwiej pisało program oraz ab był bardziej przejrzysty, przykład
| Kod: | sensor1 alias portb.0 |
-zawiera w sobie dodatkowa nieskończoną pętle i czeka na jakieś "wydarzenie"
-konfiguruje się ta dyrektywa jakieś urządzenie (np:lcd) bądź pin, port procesora
-pętla nieskończona
-włącza bądź wylloncza ekran lcd (displey on/off)
-kończy program
-wykonuje skok do podprogramu, przykład:
| Kod: | if pind.0=0 then
gosub jedz
end if
jedz:
portb.4=1
portb.3=0
return |
| Kod: | IF...THEN...ELSE...END IF |
- blok decyzyjny, przykład:
| Kod: | if pind.0=0 then
portb.6=0
else
portb.6=1
end if
'jeżeli na pinie portu d pojawi się zaro wtedy wprowadź noge 6 portu b w stan wysoki
'bądź jeżeli na pinie portu d pojawi się jeden wtedy wprowadź noge 6 portu b w stan spoczynku
'koniec "ciagu warunków" |
-polecenie wyświetlające na lcd dany tekst
-instrukcja dająca sygnał kompilatorowi że dalszy tekst to komentarz można ją zastąpić '
-ustawia bit w stan 0, przykład:
| Kod: | reset portd.4
co równie dobrze można zapisać jak:
portd.4=0 |
-wykonuje powrót do np: podprogramu
-ustawia bit w stan 1, przykład:
| Kod: | set portd.4
co równie dobrze można zapisać jak:
portd.4=1 |
-przesuwa bity w prawo bądź w lewo (shift left/right)
-przesuwa zawartość LCD w prawo lub w lewo (shiftlcd left/right)
-służy do generowania dźwięków, przykład:
| Kod: | Sound portd.4 , 100, 10
'sound pin , liczba impulksów, czas |
-przerwanie programu na określony czas (w sekundach)
| Kod: | wait 2 'czekaj dwie sekundy |
-przerwanie programu na określony czas (w milisekundach)
| Kod: | waitms 2000 'czekaj dwie sekundy |
-przerwanie programu na określony czas (w mikrosekundach)
| Kod: | waitus 2000000 'czekaj dwie sekundy |
Z tym, że żadne polecenie z serii wait nie może posiadać więcej jednostek niż 65535, więc ostatni przykład jest błędny-podałem go tak aby początkujący nie musieli szukać ile to jest mikrosekunda.
Wymieniłem chyba te najczęściej używane dyrektywy po reszte odsyłam was do helpa bascom którego można pobrać z tej stronki.
W następnej części nauczymy się praktycznego zastosowania podanych dyrektyw oraz konfigurować porty.
Paweł "Ikar" Stanmkiewicz |
|
_________________ Gość jeżeli pomogłem kliknij pomógł lub postaw browarka
Kontakt gg: 9044954
 |
| |
|
|
|
 |
Więcej szczegółów
|
Wystawiono 8 piw(a): dziadek46, treker, Minner, Decado, abxyz, Master, marek91, daniel93 |
 |
Minner

Posty: 9 Skąd: Lublin
|
Wysłany: 17 Lip 08 11:27
|
|
|
Oby tak dalej. Właśnie przymierzałem się do nauki BASCOMA bo w Cpp niektóre rzeczy związane z ubsługą uC są nieco bardziej skomplikowane, a tak zawsze jakaś alternatywa |
|
|
|
|
 |
abxyz
Expert programowanie

Pomógł: 13 razy Posty: 138 Otrzymał 19 piw(a) Skąd: zza winkla
|
Wysłany: 17 Lip 08 08:27
|
|
|
Pozwolę sobie wtrącić małą uwagę: Czy nie lepiej w przypadku instrukcji języka: "if", "end if" itd. , zamiast słówka "dyrektywa" użyć "instrukcja", żeby się nie myliło z dyrektywami kompilatora, jak np:
CONST test = 1
#IF TEST
Print "This will be compiled"
#ELSE
Print "And this not"
#ENDIF |
|
_________________ Nie powie ci nawet wiedźma Pleple, czego się dowiesz wprost z Google_ |
|
|
|
 |
dziadek46

Wiek: 62 Posty: 6 Skąd: Pulawy
|
Wysłany: 18 Lip 08 02:58
|
|
|
| Ikar, robisz porzyteczną i sensowną robotę, duże dzięki! Tak więc, uczymy się Bascoma mimo wieku! |
|
|
|
|
 |
Ikar


Pomógł: 1 raz Wiek: 16 Posty: 50 Otrzymał 25 piw(a) Skąd: się biorą dzieci ?
|
Wysłany: 18 Lip 08 07:37
|
|
|
abxyz chodzi ci o te "dyrektywy procesora"?? Ja pominąłem te "#" aby uniknąć zbędnych pytań ze strony początkujących, przez co zrobiły się z tego elementy języka- teraz tak myśle że chyba jednak zmienię to na tak jak powinno być.
dziadek46Dzięki za uznanie. Na naukę nigdy za późno.
PS: uwagi zawsze mile widziane a szczególnie ekspertów takich jak abxyz |
|
_________________ Gość jeżeli pomogłem kliknij pomógł lub postaw browarka
Kontakt gg: 9044954
 |
| Ostatnio zmieniony przez Ikar 18 Lip 08 10:45, w całości zmieniany 1 raz |
|
|
|
 |
Minner

Posty: 9 Skąd: Lublin
|
Wysłany: 19 Lip 08 11:43
|
|
|
czyli te podprogramy mogą byc definiowane po odwołaniu się do nich?
PS. popraw GOSUB odwolujesz się do "jedz" a definiujesz "jedź"
Komentarz dodany przez: treker:
Poprawiłem uwagę w P.S |
|
|
|
|
 |
Ikar


Pomógł: 1 raz Wiek: 16 Posty: 50 Otrzymał 25 piw(a) Skąd: się biorą dzieci ?
|
Wysłany: 19 Lip 08 04:27
|
|
|
| Minner napisał/a: | czyli te podprogramy mogą byc definiowane po odwołaniu się do nich?
|
Jeżeli dobrze Cię rozumiem to tak
pozdro |
|
_________________ Gość jeżeli pomogłem kliknij pomógł lub postaw browarka
Kontakt gg: 9044954
 |
| Ostatnio zmieniony przez Ikar 19 Lip 08 04:28, w całości zmieniany 1 raz |
|
|
|
 |
mictronic

Pomógł: 4 razy Wiek: 14 Posty: 66 Skąd: Bydgoszcz
|
Wysłany: 19 Lip 08 11:30
|
|
|
| Pierwsza lekcja a nie ma wogle mowy o zmiennych-rodzajach i jak je deklarować,chyba od złej strony kolega zaczął pisać kurs : / |
|
|
|
|
 |
Ikar


Pomógł: 1 raz Wiek: 16 Posty: 50 Otrzymał 25 piw(a) Skąd: się biorą dzieci ?
|
Wysłany: 20 Lip 08 01:17
|
|
|
Wszystko po kolei. Ja mam pewną "wizje" tego kursu. I czy zrobię to dobrze to zobaczymy.
pozdrawiam |
|
_________________ Gość jeżeli pomogłem kliknij pomógł lub postaw browarka
Kontakt gg: 9044954
 |
|
|
|
 |
marek91


Pomógł: 3 razy Wiek: 16 Posty: 67 Otrzymał 2 piw(a) Skąd: Mikołów
|
Wysłany: 20 Lip 08 09:58
|
|
|
Podoba mi sie ten kurs ale moim skromnym zdaniem najpierw powinna być konfiguracja portów a potem poszczegulne komendy, ale ok |
|
_________________ "Przecież serwa nie moga sie obracać w prawo lub lewo, tylko się krecą albo w przód albo w tył."
"nie rozumiałem jak można skręcać na zasadzie czołgu bez gąsienic" |
|
|
|
 |
_cyna_PL


Pomógł: 1 raz Wiek: 17 Posty: 37 Otrzymał 1 piw(a) Skąd: Z nikąd
|
Wysłany: 05 Sie 08 07:11
|
|
|
Mi tam się wszystko podoba ;p ale zawsze może być lepiej ;p
Dla początkujących nie wiedzących co jest co możne się trochę mylić komenda z opisem ;p nie ma żadnego rozdzielenie ;/
np :
- xxxxxxxxxxxxx
----------------------------------------------------------------------------------------------------
- xxxxxxxxxxxxx
itd .
ps: to oczywiście moja sugestia ;p |
|
|
|
|
 |
misiek1994


Wiek: 13 Posty: 57 Otrzymał 8 piw(a) Skąd: z Sędziszowa
|
Wysłany: 05 Sie 08 07:22
|
|
|
"Kod:
IF...THEN...ELSE...END IF
- blok decyzyjny, przykład:
Kod:
if pind.0=0 then
portb.6=0
elseif pind.0=1 then
portb.6=1
end if
'jeżeli na pinie portu d pojawi się zaro wtedy wprowadź noge 6 portu b w stan wysoki
'bądź jeżeli na pinie portu d pojawi się jeden wtedy wprowadź noge 6 portu b w stan spoczynku
'koniec "ciagu warunków" "
Piszesz czasami głupoty. else, a elseif to nie to samo!!! Jeżeli damy elseif to sprawdza kolejną zmienną, jeżeli poprzednie if nie zostało wykonane. Jeżeli damy else, to ustawia automatycznie zmienną w wypadku, gdy porprzednie else nie zostało spełnione. poza tym zapomniałeś dołożyć taką instrukcje jak case. jest ona bardzo wygodna, ponieważ można urzywać jej na zasadzie "kiedy nastąpi..." lub "w przypadku gdy". Wtedy cały kod nie jest sprawdzany od początku jak w przypadku if... |
|
|
|
|
 |
Ikar


Pomógł: 1 raz Wiek: 16 Posty: 50 Otrzymał 25 piw(a) Skąd: się biorą dzieci ?
|
Wysłany: 10 Sie 08 04:26
|
|
|
No nie jest to to samo lecz działania programu to nie zmieni. A to chyba tak z przyzwyczajenia napisałem. Zaraz zmienię. Jak jeszcze coś znajdziecie to dajcie znać.
PS: Tak samo nazywanie tego kursu "ms bascic college" (taka była pierwotna nazwa) nie jest poprawne ponieważ to co opisuje nie jest to czysty bascic jest to basic z elemętami bascomowymi .
pozdro |
|
_________________ Gość jeżeli pomogłem kliknij pomógł lub postaw browarka
Kontakt gg: 9044954
 |
| Ostatnio zmieniony przez Ikar 10 Sie 08 04:39, w całości zmieniany 1 raz |
|
|
|
 |
|
|
|
|