Nie znalazłem podobnego zbioru programów, który mógłby pomóc początkującym programistą, czy też elektronikom którzy próbują swoich sił z mikrokontrolerami.

Tak więc, chce stworzyć taki wpis, zamieszczam poniżej kilka programów[kod źródłowy] który należy skompilować w bezpłatnym programie BASCOM-AVR. Następnie plik *.hex wgrywamy za pomocą programatora do mikrokontrolera.

Oczywiście to nie wszystko, następnym etapem jest podłączenie kabelków z odpowiednimi portami czy też rejestrami.
( Port.A -> dioda1, stan 1 dioda sie swieci, stan 0 dioda jest zgaszona ).
Jak znajde chwile napiszę o tym więcej, osobny wpis.

Wszystko działa bezproblemowo na układzie ZL3AVR na którym jakiś czas pracuje.

1.) Wyświetlenie napisu na wyświetlaczu LCD

      $regfile "m16def.dat"
      $crystal = 16000000
 
      Cls
      Lcd "Witaj,kotlecie"
 
      Do
      Loop

2.) Wyświetlenie napisu na wyświetlaczu LCD, + poruszanie napisu lewo, prawo, + wyświetlenie własno ręcznie stworzonej literki. (deflcdchar)

      $regfile "m16def.dat"
      $crystal = 16000000
 
      Deflcdchar 0 , 14 , 17 , 31 , 16 , 14 , 3 , 32 , 32
      Deflcdchar 1 , 6 , 18 , 2 , 18 , 6 , 32 , 32 , 32
 
      Cls
 
         Lcd "b" ; Chr(0) ; "c" ; Chr(1)
 
         Dim I As Byte
 
         Do
               For I = 1 To 12
                     Shiftlcd Right
                        Waitms 200
                     Next I
 
                     For I = 1 To 12
                     Shiftlcd Left
                     Waitms 200
 
                     Next I
 
 
                     Loop

3.) Wyświetlacz diodowy(0-9) + Wyświetlacz LCD + Liczby

$regfile "m16def.dat"
$crystal = 16000000
 
           Dim E As Byte
           Dim I As Byte
           Dim Liczba_led(10) As Byte
 
           Deflcdchar 0 , 2 , 32 , 14 , 17 , 17 , 17 , 14 , 32
           Deflcdchar 1 , 32 , 32 , 12 , 18 , 18 , 18 , 15 , 2
 
            Cls
 
             Liczba_led(1) = &B11000000
             Liczba_led(2) = &B11111001
             Liczba_led(3) = &B10100100
             Liczba_led(4) = &B10110000
             Liczba_led(5) = &B10011001
             Liczba_led(6) = &B10010010
             Liczba_led(7) = &B10000010
             Liczba_led(8) = &B11111000
             Liczba_led(9) = &B10000000
             'Liczba_led(10) = &B1001000
 
             Config Portd = &HFF
             Config Portc = &HFF
             Portc = &H01
             'Config Portc = &B00000011
             'Portc = &B00000001
 
 
 
           Lcd "Loading..."
 
           Home Lower
           Cursor Off
 
           Lcd "HiHon   " ; Chr(0) ; Chr(1)
 
Do
 
 
             For E = 1 To 5
                     Shiftlcd Right
                     Waitms 100
                     Next E
 
             For E = 1 To 5
                     Shiftlcd Left
                     Waitms 100
                     Next E
 
 
               For I = 1 To 9
                     Portd = Liczba_led(i)
                     Waitms 50
               Next I
 
 
               For I = 9 To 1 Step -1
                  Portd = Liczba_led(i)
                  Portd.7 = 0
               Waitms 50
               Next I
 
Loop

4.) Obsługa klawiatury, test klawiatury

$regfile "m16def.dat"
$crystal = 16000000
 
Config Portd.0 = Input
Config Portd.1 = Output
 
Portd.0 = 1
Portd.1 = 0
 
Config Portc.0 = Output
 
Config Portc.1 = Output
 
Portc.0 = 0
Portc.1 = 0
 
 
Do
      If Pind.0 = 0 Then
 
      Portc.0 = 1
      Else
      Portc.0 = 0
 
      End If
      Loop

5.) Wyświetlacz LCD wyświetla napis, napis porusza się prawo-lewo, a na wyświetlaczu diodowym wyświetlają sie liczby 0-9, 9-0

$regfile "m16def.dat"
$crystal = 16000000
 
' konfiguracja portów wyswietlacza
 
              Config Lcdpin = Pin , Rs = Portd.0 , E = Portd.1 , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7
              Config Lcdbus = 4
              Config Lcd = 16 * 2
 
' znaki specjalne lcd designer
 
           Deflcdchar 1 , 4 , 14 , 4 , 31 , 4 , 4 , 14 , 4
           Deflcdchar 2 , 31 , 17 , 17 , 31 , 4 , 4 , 4 , 4
 
            Cls                                             ' potrzebne czyszczenie, nalezy o tym pamietac!
 
           Lcd "Witaj Dawidzie" ; Chr(2)
 
           Cursor Off
           Home Lower                                       'linijka nizej
 
           Lcd "    BASCOM " ; Chr(1)
 
 
 
      ' ##################Funkcja wyswietlacz LED
Wyswietlacz2:
           Dim E As Byte
           Dim Liczba_led(10) As Byte
 
             Liczba_led(1) = &B11000000
             Liczba_led(2) = &B11111001
             Liczba_led(3) = &B10100100
             Liczba_led(4) = &B10110000
             Liczba_led(5) = &B10011001
             Liczba_led(6) = &B10010010
             Liczba_led(7) = &B10000010
             Liczba_led(8) = &B11111000
             Liczba_led(9) = &B10000000
             Liczba_led(10) = &B1001000
 
 
       Config Portb = &HFF
       Config Porta = &HFF
       Config Portc = &HFF
       Porta = &H01
 
Do
            For E = 1 To 5
            Porta = Liczba_led(e)
            Waitms 350
            Next E
 
            For E = 5 To 1 Step -1
            Porta = Liczba_led(e)
            Porta.7 = 0
            Waitms 350
            Next E
            Goto Wyswietlacz
Loop
 
' ####### Funkcja wyswietlacza LCD
Wyswietlacz:
 
                                   Dim I As Byte
' petla przesuwajaca tekst w prawo i lewo
Do
                     For I = 1 To 2
                     Shiftlcd Right
                     Waitms 300
                     Next I
 
                     For I = 1 To 2
                     Shiftlcd Left
                     Waitms 300
                     Next I
                     Goto Wyswietlacz2
 
Loop

6.) Wyświetlanie numeru wciśniętego klawisza na klawiaturze

$regfile "m16def.dat"
$crystal = 16000000
 
' konfiguracja portów wyswietlacza
 
              Config Lcdpin = Pin , Rs = Porta.0 , E = Porta.1 , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7
              Config Lcdbus = 4
              Config Lcd = 16 * 2
 
Poczatek:
 
 
Dim Klawisz As Byte
Dim Kod(17) As Byte
 
Kod(1) = &B11111001
Kod(2) = &B10100100
Kod(3) = &B10110000
Kod(4) = &B10001000
Kod(5) = &B10011001
Kod(6) = &B10010010
Kod(7) = &B10000010
Kod(8) = &B10000011
Kod(9) = &B11111000
Kod(10) = &B10000000
Kod(11) = &B10010000
Kod(12) = &B11000110
Kod(13) = &B10001111
Kod(14) = &B11000000
Kod(15) = &B10001001
Kod(16) = &B10100001
Kod(17) = &B01111111                                        'reprezentacja zera
 
Config Portb = Output
Config Portc = Output
 
 
Config Kbd = Portd
 
 
Do
Klawisz = Getkbd()                                          ' inicjacja klawisza, getkbd
 
 
Klawisz = Klawisz + 1
Porta = Kod(klawisz)
 
Cls
Cursor Off                                                  ' wylaczenie kursora
 
Lcd "Wybrana liczba:"
 
Home Lower
 
Lcd Klawisz                                                 ' w linijce nizej pokaze nam sie numer przycisku
Waitms 250
 
Ledz Alias Portc.1
 
 
Dim Mycode As Word
Dim Code As Word
Dim Key As Byte
Dim Getkey As Byte
 
Mycode = 1
 
Key = Getkbd()
 
Key = Key + 1
 
If Key = Mycode Then Set Ledz
Waitms 500
Reset Ledz
Loop

Wklejone przezemnie kody źródłowe pomogą zrozumieć język BASCOM.

Większość programów wykonałem na Politechnice Częstochowskiej pod przewodnictwem Adriana Sadowskiego.