Pobierz
Transkrypt
Pobierz
Fragmenty kodu $regfile = "m8adef.dat" 'najpierw określamy typ procesora $crystal = 1000000 'definiujemy z jakim taktowaniem będzie pracował Config Lcd = 16 * 2 ' konfiguracja wyświetlacza lcd 16 znaków 2 linie Config Lcdpin = Pin , Db4 = Potrd.5 , Db5 = Potrd.6 , Db6 = Potrd.7 , Db7 = Potrb.0 , E = Potrd.4 , Rs = Potrd.3 'określamy podłączanie pinów wyświetlacza LCD Config Pind.0 = Output Portd.0 = 0 If Pinc.3 = 0 Then Portd.0 = 1 Else Portd.0 = 0 End If '!!! początek pętli wewnętrznej jeżeli 'ustawienie stanu wysokiego na pinie PC3 'jeżeli nie jest spełniony warunek if to wtedy '!!! koniec pętli wewnętrznej jeżeli Config Pinc.3 = Input Portc.3 = 1 Cls Waitms 1000 Cursor Off 'ustawienie pinu PD0 jako wyjście (dioda LED) 'ustawienie stanu niskiego na pinie PD0 'ustawienie pinu PC3 jako wejście (przycisk) 'ustawienie stanu wysokiego na pinie PC3 'czyszczenie wyświetlacza LCD 'odczekuje 1000 milisekund zanim wykona kolejny krok programu 'ukrycie kursora Config Adc = Single , Prescaler = Auto , Reference = Avcc 'konfiguracja przetwornika analogowo cyfrowego If Pinc.3 = 0 Then X=X+1 End If Upperline 'jeżeli przycisk jest wciśnięty 'zmienna X powiększona jest o jeden w stosunku do wcześniejszej wartości 'ustaw kursor w górnej linii wyświetlacza LCD Lcd "Program" 'wyświetl komunikat Program Dim V As Single Dim I As Single Dim R As Single 'deklaracja zmiennej numerycznej Y 'deklaracja zmiennej numerycznej I 'deklaracja zmiennej numerycznej R Dim Odczytv As Word Dim Odczyti As Word 'deklaracja zmiennej numerycznej dodatniej całkowitej Odczytv 'deklaracja zmiennej numerycznej dodatniej całkowitej Odczyti Dim X As Byte 'deklaruje zmienną X jako zmienną dodatnią całkowitą z przedziału 0-255 Dim Wyswietlv As String * 4 Odczytv = Getadc(5) 'deklaracja zmiennej tekstowej przechowującej 4 znaki 'odczytuje poziom z kanału pinu ACD5 i przechowuje w zmiennej Odczytv Wyswietlv = Fusing(v , "#.###") 'konwersja zmiennoprzecinkowej na tekst zawierający 4 znaki i przechowuje w zmiennej Wyswietlv V = Odczytv * 0.0049 I = I / 1000 R=V/I R = R / 1000 For I = 255 To 0 Step -1 Pwm1a = I Waitms 50 Next I 'przelicza poziom na wartość napięcia i przechowuje w zmiennej V 'przeliczenie mA na ampery ' wyliczenie oporu ' przeliczenie ohm na kohmy 'początek pętli For zmienna I zmienia się od 255 do zera co jeden 'ustawia wypełnienie sygnału tak jak określa zmienna I 'odczekuje 50 milisekund 'ustawia nową zmienną I tzn. od danej wartości I odejmuje jeden Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1 'konfiguracja sygnału PWN Select Case X Case 1: milisekund 'Początek instrukcji select case błyskanie diodami LED 'jeżeli X=1 to PD0 będzie w stanie w stanie wysokim przez 300 Portd.0 = 1 Portd.1 = 0 Portd.2 = 0 Portd.3 = 0 Portd.4 = 0 Waitms 300 'ustawienie stanu wysokiego na pinie PD0 'ustawienie stanu niskiego na pinie PD1 'ustawienie stanu niskiego na pinie PD2 'ustawienie stanu niskiego na pinie PD3 'ustawienie stanu niskiego na pinie PD4 Portd.0 = 0 Portd.1 = 0 Portd.2 = 0 Portd.3 = 0 Portd.4 = 0 Waitms 300 kodu w pętli Do-loop 'ustawienie stanu niskiego na pinie PD0 'ustawienie stanu niskiego na pinie PD1 'ustawienie stanu niskiego na pinie PD2 'ustawienie stanu niskiego na pinie PD3 'ustawienie stanu niskiego na pinie PD4 'odczekanie 300 milisekund po czym program wróci do pierwszej linii Case 2: Portd.0 = 0 Portd.1 = 1 Portd.2 = 0 Portd.3 = 0 Portd.4 = 0 Waitms 300 'ustawienie stanu niskiego na pinie PD0 'ustawienie stanu wysokiego na pinie PD1 'ustawienie stanu niskiego na pinie PD2 'ustawienie stanu niskiego na pinie PD3 'ustawienie stanu niskiego na pinie PD4 Portd.0 = 0 Portd.1 = 0 Portd.2 = 0 Portd.3 = 0 Portd.4 = 0 Waitms 300 kodu w pętli Do-loop 'ustawienie stanu niskiego na pinie PD0 'ustawienie stanu niskiego na pinie PD1 'ustawienie stanu niskiego na pinie PD2 'ustawienie stanu niskiego na pinie PD3 'ustawienie stanu niskiego na pinie PD4 'odczekanie 300 milisekund po czym program wróci do pierwszej linii Case Else: X=0 End Select 'jeżli x>3 to x zostanie przypisana wartość zero 'Koniec instrukcji select case Select Case X Case 1: milisekund Portd.0 = 0 Portd.1 = 1 Portd.2 = 0 Portd.3 = 1 Portd.4 = 0 Waitms 500 'Początek instrukcji select case 'jeżeli X=1 to PD1 i PD3 będą w stanie wysokim przez co najmniej 500 'ustawienie stanu niskiego na pinie PD0 'ustawienie stanu wysokiego na pinie PD1 'ustawienie stanu niskiego na pinie PD2 'ustawienie stanu wysokiego na pinie PD3 'ustawienie stanu niskiego na pinie PD4 Case 2: .... Case Else: 'jeżli x>... to x zostanie przypisana wartość zero X=0 End Select 'Koniec instrukcji select case Config Keyboard = Pinb.2 , Data = Pinb.3 , Keydata = Keydata Lcd Chr(znak) zwraca zmienną tekstową For I = 1 To N tu ma się znaleźć ciąg instrukcji Next I 'konfiguracja klawiatury 'wyświetli znak który odpowiada danemu kodowi ASCII funkcja Chr() ' wykona pętlę N razy 'definicja tablicy do przeliczenia kodów klawiatury na znaki, tablica ta umieszczana jest po słowie end kończącym program Keydata: Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , Data &H5E , 0 , 0 , 0 , 0 , 0 , 0 , 113 , 49 , 0 , 0 , 0 , 122 , Data 115 , 97 , 119 , 50 , 0 , 0 , 99 , 120 , 100 , 101 , 52, Data 51 , 0 , 0 , 32 , 118 , 102 , 116 , 114 , 53 , 0 , 0 , 110, Data 98 , 104 , 103 , 121 , 54 , 7 , 8 , 44 , 109 , 106 , 117 , 55, Data 56 , 0 , 0 , 44 , 107 , 105 , 111 , 48 , 57 , 0 , 0 , 46 , 45 Data 108 , 48 , 112 , 43 , 0 , 0 , 0 , 0 , 0 , 0 , 92 , 0 , 0 , 0, Data 0 , 13 , 0 , 0 , 92 , 0 , 0 , 0 , 60 , 0 , 0 , 0 , 0 , 8 , 0, Data 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 48 , 44 , 50 , 53 , 54 , 56, Data 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0 Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, Data 0 , 0 , 0 , 0 , 0 , 0 , 81 , 33 , 0 , 0 , 0 , 90 , 83 , 65, Data 87 , 34 , 0 , 0 , 67 , 88 , 68 , 69 , 0 , 35 , 0 , 0 , 32 , 86, Data 70 , 84 , 82 , 37 , 0 , 0 , 78 , 66 , 72 , 71 , 89 , 38 , 0, Data 0 , 76 , 77 , 74 , 85 , 47 , 40 , 0 , 0 , 59 , 75 , 73 , 79, Data 61 , 41 , 0 , 0 , 58 , 95 , 76 , 48 , 80 , 63 , 0 , 0 , 0 , 0, Data 0 , 0 , 96 , 0 , 0 , 0 , 0 , 13 , 94 , 0 , 42 , 0 , 0 , 0 , 62, Data 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 0 , 48, Data 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0