Systemy Wbudowane Bascom Bielsko-Biała 16.12.2009 r. Autor : Wojciech Rogowski
Spis treści Pętle Instrukcje warunkowe Instrukcje skoku Etykiety Pętla główna DO … LOOP Pętla FOR .. NEXT Pętla DO WHILE .. LOOP Pętla DO .. LOOP WHILE .. Instrukcje warunkowe Instrukcje skoku GOTO GOSUB Etykiety Literatura Częstościomierz - wykorzystanie przerwania od timera Przerwanie i timery
DO .. LOOP Pętla główna programu wykonywana bez końca DO instrukcja_1 END ‘koniec programu
Pętla FOR .. NEXT Pętla wykonywana z góry zadaną ilość razy FOR a=1 TO 10 instrukcja_1 instrukcja_2 NEXT
Pętla Do … Loop Pętla wykonywana dopóki jest spełniony określony warunek – warunek sprawdzany na początku DO WHILE a<10 instrukcja_1 instrukcja_2 LOOP
Pętla DO .. LOOP WHILE .. Pętla wykonywana dopóki jest spełniony określony warunek – warunek sprawdzany na końcu DO instrukcja_1 instrukcja_2 LOOP WHILE a<10
Instrukcje warunkowe Proste IF koniec<poczatek THEN GOSUB etykieta1 END IF Złożone ELSE
GOTO Skok do podprogramu bez powrotu koniec: GOTO koniec koniec: END ‘koniec programu głownego
GOSUB Skok do podprogramu z powrotem do miejsca wywołania instrukcji skoku GOSUB etykieta1 etykieta1 : działanie=1 RETURN ‘powrót programu głównego
Etykiety Pozawalają podzielić program na mniejsze części, przez co ułatwiają analizę i modyfikację progra- mu . etykieta_1: instrukcja_1 instrukcja_2 instrukcja_3
Literatura Książki: Mikrokontrolery dla początkujących – Piotr Górecki Czasopisma: Elektronika dla wszystkich artykuły kurs Bascom Colege Strony WWW: http://www.edw.com.pl/ http://www.elektroda.pl/
Częstościomierz - wykorzystanie przerwania od timera Fragment kodu: Config Timer1 = Counter , Edge = Rising Cls : Lcd "Czestosciomierz" : Wait 1 'powitanie Do 'program główny Timer1 = 0 'zeruj licznik Start Timer1 'zacznij liczyć Waitms 999 ‘tu można skorygować wynik Stop Timer1 'zatrzymaj zliczanie Cls 'czyść ekran Lcd "F=" ; Timer1 ; "Hz" 'wyświetl wynik Loop End
Przerwanie i timery Dim Pomoc As Word , Pomiar As Bit , Flaga As Bit , Licz As Word Dim Wynik As Long Config Timer1 = Timer , Prescale = 1 : Enable Timer1 : On Timer1 Zwieksz ‘: -kilka instrukcji w linii Enable Interrupts : Enable Int1 : Config Int1 = Rising : On Int1 Zbocze Do : Loop : End Zbocze: 'aktywne zbocze na Int1 - nóżka 7 Pomoc = Timer1 : Timer1 = 0 : Wynik = Licz : Licz = 0 : Toggle Pomiar If Pomiar = 0 Then 'po zakończeniu fazy pomiaru Stop Timer1 Shift Wynik , Left , 16 'to jest oszczędne mnożenie przez 65536 Wynik = Wynik + Pomoc : Wynik = Wynik + 13 Shift Wynik , Right , 2 ' a to jest dzielenie przez 4 Cls : Lcd "T=" ; Wynik ; "us" : Waitms 100 Do : If Pind.3 = 1 Then : Set Flaga Else : If Flaga = 1 Then : Flaga = 0 : Exit Do End If : End If Loop : Tifr.7 = 1 : Start Timer1 : Gifr.7 = 1 End If : Return 'koniec procedury obsługi przerwania Timera1 Zwieksz: Incr Licz : Return