bascom.dxp.pl



Idź do strony głównej
Programowanie w Bascom, lekcja 1
W celu przeprowadzenia ćwiczeń z tej lekcji należy wykonać układ przedstawiony na poniższym schemacie :
schemat

Połączenia zostały dopasowane do połączeń istniejących na płytce AVT-3500, dzięki czemu posiadacze tej płytki nie będą musieli wykonywać zadnych dodatkowych układów. Ponieważ na płytce AVT3500 nie ma diod LED a wyświetlacze siedmiosegmentowe dodatkowo konieczne będzie włączenie jednego z tych wyświetlaczy przez ustawienie stanu niskiego na PD2. Wszystkie programy zostały tak napisane, aby działały jednocześnie na płytce AVT-3500 i na układzie o podanym schamacie. W kodzie źródłowym będą zaznaczone fragmenty wymagane tylko dla płytki AVT-3500. Fragmenty te można pominąć przy pracy na układzie wykonanym według podanego schematu.

Ćwiczenie 1
W tym ćwiczeniu zapoznamy się z portami mikrokontrolera. Spróbujmy zaświecić diodę LED podłączoną do wyprowadzenia portb.0 (na płytce AVT-3500 będzie to segment A wyświetlacza siedmiosegmentowego - najwyzej położona na wyświetlaczu pozioma kreska). Po uruchomieniu Bascoma wpiszmy do niego następujący kod (komentarze koloru zielonego możemy pominąć przy wpisywaniu programu - nie mają one wpływu na działanie programu, służą one jedynie jako objaśnienie kodu):
' informujemy kompilator, dla jakiego mikrokontrolera piszemy program
$regfile = "2313def.dat"
' informujemy kompilator o częstotliwości zegara mikrokontrolera
$crystal = 4000000
' konfigurujemy PORTB do pracy w trybie wyjściowym
Config Portb = Output
' konfigurujemy PORTD do pracy w trybie wyjściowym
Config Portd = Output
' właczamy wewnętrzne rezystory podciagające portb do zasilania
' na wszystkich wyprowadzeniach portb będzie stan wysoki
Portb = 255
' właczamy wewnętrzne rezystory podciagające portd do zasilania
' na wszystkich wyprowadzeniach portd będzie stan wysoki
Portd = 255
' ustawiamy na wyprowadzeniu portd.3 stan niski
' spowoduje to włączenie pierwszej cyfry wyświetlacza na płytce AVT-3500
Reset Portd.3
' ustawiamy na wyprowadzeniu portb.0 stan niski
' spowoduje to zaświecenie się segmentu A pierwszej cyfry wyświetlacza
' albo diody LED podłączonej do wyprowadzenia portb.0
Reset Portb.0
' pętla nieskończona, koniec programu
Do : Loop : End

W pierwszej linii programu znajduje się dyrektywa mówiąca kompilatorowi, aby podczas kompilacji użył plik z definicjami rejestrów mikrokontrolera AT90S2313 :
$regfile = "2313def.dat"
 Umieszczenie tej dyrektywy w pliku źródłowym daje taki sam efekt, co ustawienie na zakdadce Options -> Compiler w polu Chip typu mikrokontrolera, dla którego przeznaczony jest program. Dobrym zwyczajem jest umieszczenie tej dyrektywy w kodzie, ponieważ przy przeniesieniu programu do kompilatora na innym komputerze mogą wystąpić problemy z kompilacją na wskutek innych ustawień w opcjach kompilatora. Umieszczenie dyrektywy w pliku ma pierwszeństwo przed ustawieniami kompilatora, tak więc nie powinny wystąpić żadne problemy przy kompilacji.
Następnie znajduje się kolejna dyektywa kompilatora, tym razem informująca go o częstotliwości pracy mikrokontrolera :
$crystal = 4000000
 Określenie właściwej częstotliwości pracy ma bardzo duże znaczenie przy korzystaniu z funkcji opóźniających, które poznamy już wkrótce, a także przy transmisji szeregowej z uzyciem układu UART. Niewłaściwe określenie częstotliwości pracy mikrokontrolera jest bardzo częstą przyczyną błednego działania programów i przysparza początkującym programistom sporo kłopotów.
Gdy przekażemy kompilatorowi dane niezbędne do właściwej kompilacji programu możemy przystąpić do pisania właściwego programu. Na poczatku musimy skonfigurować porty w zależności od pełnionych przez nie funkcji. W naszym programie wszystkie porty pracują w trybie wyjściowym (dane zapisujemy do portu) więc konfigurujemy je w tryb wyjściowy. Do wszlekiego typu konfiguracji w języku Bascom służy polecenie Config. Port PORTB konfigurujemy w następujacy sposób :
Config Portb = Output
Po poleceniu Config podajemy nazwę portu, który chcemy skonfigurować, a następnie po znaku równości podajemy tryb, w który konfigurujemy port. W naszym przypadku port ma pracować w trybie wyjściowym więc wpisujemy Output. W tem sam sposób konfigurujemy port PORTD :
Config Portd = Output
Konfiguracja portu PORTD jest wymagana tylko przy korzystaniu z płytki AVT-3500 (do tego portu podłączone są tranzystory sterujące anodami wyświetlaczy siedmiosegmentowych). Po skonfigurowaniu trybu pracy portów należy zapisać do nich wartości początkowe. Ponieważ w naszym układzie diody LED są aktywowane stanem niskim na wyprowadzeniu portu na początku programu należy na porty wystawić stan wysoki, aby żadna dioda się nie świeciła. Dokonujemz tego przez zapisanie do portu liczby 255 :
Portb = 255
Ponieważ podawanie wartości w postaci dziesiętnej jest mało czytelne w odniesieniu do konetnych wyprowadzeń portu możemy podać liczbę w postaci binarnej :
Portb = &B11111111
bądź też szesnastkowej :
Portb = &HFF
Każdy sposób zaowocuje zapisaniem do portu tej samej wartości (zyskujemy na wygodzie przy podawaniu wartości w postaci binarnej - od razu widać który bit rejestru jaką będzie posiadał wartość).
Po skonfigurowaniu portów zapisujemy do nich wartości początkowe. W naszym przypadku do obydwu portów zapisujemy liczbę 255. Spowoduje to ustawienie na każdym z wyprowadzeń stany wysokiego :
Portb = 255
Portd = 255
Teraz mozemy już przystąpić do napisania właściwego programu, powodujacego włączenie diody LED podłączonej do wyprowadzenia PB0 mikrokontrolera. Jeśli pracujemy na płytce AVT-3500 zrealizowanie tego celu wymaga dwóch instrukcji :
Reset Portd.3
Reset Portb.0
Pierwsza z tych instrukcji spowoduje ustawienie na wyprowadzeniu PD3 stanu niskiego, a w efekcie właczenie tranzystora zasilającego anody pierwszego wyświetlacza siedmiosegmentowego. Druga instrukcja odpowiada za ustawienie stanu niskiego na wyprowadzeniu PB0 co zaowocuje zaświeceniem się pierwszego segmentu wyświetlacza.
Natomiast gdy pracujemy na układzie pokazanym na schemacie pokazanym na początku (anody diod LED podłaczone na stałe do zasilania) pierwsza instrukcja jest zbędna i wystarczy zastosować tylko drugą.
Na końcu naszego programu w ostatniej linii znajdują sie trzy instrukcje :
Do : Loop : End
Instrukcje Do i Loop realizują pustą pętlę nieskończoną, natomiast End sygnalizuje koniec programu.

 


Polityka prywatności

WWW.CAD.PL -- polski serwis CADowski