BASCOM 8051 i BASCOM AVR – skrypt do zajęć
Zmienne
Wszystkie zmienne, stałe, tablice, funkcje, podprogramy w środowisku BASCOM AVR należy zadeklarować.
Dim nazwa_zmiennej As typ_zmiennej
Dim Alfa As Byte , Beta As Word , Flag As Bit
Dim Text_1 * 10 As String
Przypisując zmiennym wartości należy pamiętać o zadeklarowanych zakresach.
Alfa = 255
Typy zmiennych
Bit
1/8 bajta
Może przyjmować wartość 0 lub 1
Byte
1 bajt
Może przechowywać wartość binarna od 0 do 255
Word
2 bajty
Może przechowywać wartość w zakresie 0 – 65535
Integer
Może przechowywać dowolną liczbę całkowitą z zakresu –32768 do +32767.
Long
4 bajty
Może przechowywać dowolną liczbę całkowitą z zakresu -2^32 do 2^32-1
Single
Może przechowywać dowolną liczbę stało lub zmiennoprzecinkową pojedynczej precyzji
Double
8 bajtów
Może przechowywać dowolną liczbę stało lub zmiennoprzecinkową podwójnej precyzji
String
max. 254 bajty
Może przechowywać dowolny ciąg znaków o długości nie większej niż 254 znaki
Stałe
CONST nazwa_stałej = wartość_stałej
Const Pi = 3.14
Const A = &hf3
Const B = &b01010011
Const Haslo = ”J-23”
Tablice
DIM nazwa_tablicy(rozmiar_tablicy) AS typ_zmiennych
Dim Kod(20) As Byte
Kod(5) = 23
Aliasy - przypisania nazw do linii lub portu
nowa_nazwa ALIAS linia_portu
nowa_nazwa ALIAS port
Led Alias PORTB.7
Wejście Alias PORTC
Sterowanie portami
Aby móc sterować portami należy je najpierw skonfigurować w jeden z poniższych sposobów, w zależności od tego, czy końcówki (piny) portu mają funkcjonować jako WYJŚCIA (do sterowania innymi urządzeniami), albo jako WEJŚCIA (do pobierania informacji z innych urządzeń).
Config PORTB = Output
Config PORTC = Input
Config PIND.7 = Output
Config PIND.6 = Input
Config PIND.6 = 0 - “0” – input, “1” – output
Config PORTA = &B00001111 - “0” – input, “1” – output
DDRA = &B00001111 - “0” – input, “1” – output
PORTA = &B11110000 - “1” – rezystory podciągnięte do +5V
W programie możemy zmieniać kierunek transmisji przez cały port lub wybrane bity portu. Chcąc używać pinów portu jako wejścia należy na odpowiednich bitach rejestru DDRx wpisać „0”, jako wyjście należy wpisać „1”.
Jeżeli wyślemy stan „1” na dowolny bit portu ustawiony jako wejście, to spowodujemy podciągnięcie go do zasilania przez wewnętrzne rezystory mikrokontrolera.
Sterowanie wyświetlaczem alfanumerycznym LCD
Należy w OPTIONS/COMPILER/LCD poinformować kompilator jakiego typu zastosujemy wyświetlacz i do których linii portu będzie on podłączony. Możemy to także zrobić w treści programu w następujący sposób:
CONFIG LCD = ilość_znaków * ilość_linii
CONFIG LCD = 16*2
CONFIG LCD = 20*4
Operacje na wyświetlaczu:
LCD ”tekst” - wyświetl tekst
LCD zmienna - wyświetl wartość zmiennej
LCD ”tekst_1 ” ; zmienna - wyświetl kolejno tekst_1, wartość zmiennej
CLS - wyczyszczenie (inicjalizacja) wyświetlacza
DISPLAY ON/OFF - włączenie/wyłączenie LCD
CURSOR ON/OFF - włączenie/wyłączenie kursora
CURSOR BLINK/NOBLINK - włączenie/wyłączenie kursora i migania
SHIFTCURSOR LEFT/RIGHT - przesunięcie kursora
SHIFTLCD LEFT/RIGHT - przesunięcie tekstu
HOME - ustawienie kursora na początek linii
UPPERLINE - przejście kursora do wyższej linii
LOWERLINE - przejście kursora do niższej linii
THIRDLINE - przejście kursora do trzeciej linii
FOURTHLINE - przejście kursora do czwartej linii
LOCATE linia , pozycja_kursora - ustawienie kursora na wskazaną pozycję
DEFLCDCHAR numer_banku , kod 1 linii , kod 2 linii , ... , kod 8 linii
- deklarowanie własnych znaków
LCD CHR(numer_banku) - wywołanie zadeklarowanego znaku
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = PORTC.4 , Db5 = PORTC.5 , Db6 = PORTD.7 ,
Db7 = PORTA.7 , E = PORTC.3 , Rs = PORTC.2
Deflcdchar 0 , 0 , 0 , 14 , 1 , 15 , 17 , 15 , 4 'ą
Deflcdchar 1 , 2 , 4 , 14 , 16 , 16 , 17 , 14 , 0 'ć
Deflcdchar 2 , 0 , 0 , 14 , 17 , 31 , 16 , 14 , 4 'ę
Deflcdchar 3 , 12 , 4 , 6 , 12 , 4 , 4 , 14 , 0 'ł
Deflcdchar 4 , 2 , 4 , 22 , 25 , 17 , 17 , 17 , 0 'ń
Deflcdchar 5 , 2 , 4 , 14 , 17 , 17 , 17 , 14 , 0 'ó
Deflcdchar 6 , 2 , 4 , 15 , 16 , 14 , 1 , 30 , 0 'ś
Deflcdchar 7 , 4 , 0 , 31 , 2 , 4 , 8 , 31 , 0 'ź
'Deflcdchar 7 , 2 , 4 , 31 , 2 , 4 , 8 , 31 , 0 'ź
'Deflcdchar 7 , 0 , 0 , 15 , 17 , 17 , 15 , 1 , 14 'g
'Deflcdchar 7 , 0 , 0 , 17 , 17 , 17 , 15 , 1 , 14 'y
'Deflcdchar 7 , 6 , 9 , 9 , 6 , 0 , 0 , 0 , 0 'znak stopnia
'Deflcdchar 7 , 8 , 20 , 8 , 3 , 4 , 4 , 4 , 3 'znak stopnia + c Cursor Off Noblink
Cls 'wpis zdefiniowanych znaków
'do pamięci RAM wyświetlacza
Opóźnienia czasowe
DELAY - opóźnienie ok. 100ms dla kwarcu 12 MHz
WAITMS ilość_milisekund - opóźnienie o wskazaną liczbę ms
WAIT ilość_sekund - opóźnienie o wskazaną liczbę sekund
Do
Reset Led
Waitms 250
Set Led
Wait 1
Loop
END
Pętla DO … LOOP
DO - początek pętli
… - operacje i polecenia wykonywane w pętli
LOOP ...
roibos