Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Opis języka ISPA ACS Elektronik 2001 ver1.0 beta

Poloneza


Opis języka ISPA ACS Elektronik 2001 ver1.0 beta

Język ISPA został stworzony w celu uniwersalnego zapisu algorytmów obsługi układów.



Koncepcyjnie budowa języka bazuje na języku wyższego rzędu Pascal.

Umożliwia deklarację zmiennych. Budowanie pętli i warunków.

Budowanie komponentów wizualnych pozwalających na graficzną obsługę.

Cechy charakterystyczne kompilatora:

  • Kompilator nie rozróżnia małych i dużych liter. Etykiety i zmienne pisane małymi i dużymi literami traktowane są tożsamo.
  • W jednej linii tekstowej może znajdować się tylko jeden rozkaz.
  • Tekst znajdujący się za średnikiem traktowany jest jako komentarz. Jeżeli dana linia nie zawiera komentarza stosowanie średnika nie jest konieczne.
  • Etykieta @Name: przy zapisie traktowana jest jak rozkaz. W tej samej linii nie można umieścić kolejnego rozkazu.
  • Pojemność bufora rozkazów wynosi 64KB
  • Pojemność bufora zmiennych wynosi 64KB

Struktura zasilania:

Dostępne są dwie linie zasilania:

Linia VCC - główne zasilanie układu. Napięcia od 2,8V do 7,4V prąd do 300mA.

Linia VPP - napięcie programujące od 12V do 28V prąd do 100mA

Struktura dostarczania napięcia VCC

Przetwornica napięcia

-> Dystrybutor

-> Końcówka

VCCSET() - ustawienie napięcia

VCCON - włączenie dystrybutora 141b17b

VCC()podłączenie napięcia do końcówki

Struktura dostarczania napięcia VPP

Przetwornica napięcia

-> Dystrybutor

-> Końcówka

VPPSET() - ustawienie napięcia

VPPON - włączenie dystrybutora 141b17b

VPP()podłączenie napięcia do końcówki

Wszystkie końcówki podstawki pracują w układzie otwartego kolektora. Napięcie doprowadzane jest poprzez rezystory 2K2 z dystrybutora 141b17b PULLUP. Dystrybutor można przełączać na poziom 5V komendą PULLUP5V lub 3V komendą PULLUP3V.

Komendy VCCSET(Parametr), VPPSET(Parametr) używają specyficznego zapisu poziomu napięcia. Poziom zapisywany jest jako liczba 16 bitowa. W zapisie nie ma przecinka.

Np. napięcie 12,75V - zapis 1275,

napięcie 6,00V - zapis 600

System magistral.

Aby uniknąć skomplikowanych procedur ustawiających pojedynczo końcówki adresowe lub danych w układach równoległych system ma możliwość definiowania magistral.

Można zdefiniować dwie magistrale: adresową i danych

Magistrala adresowa.

Definiowana rozkazem

ADRESMASK(numer końcówki adresu bit 0, bit 1, ...)

Do tak zdefiniowanej magistrali uzyskuje się dostęp równoległy pojedynczą komendą.

ADRESOUT(wartość) - wysyła na końcówki magistrali zadaną wartość.

Szerokość magistrali do 24 bitów.

Magistrala adresowa może być jedynie zapisywana.

Magistrala danych.

Definiowana rozkazem

DATAMASK(numer końcówki danych bit 0, bit 1, ...)

Do tak zdefiniowanej magistrali uzyskuje się dostęp równoległy pojedynczą komendą.

DATAOUT(wartość) - wysyła na końcówki magistrali zadaną wartość.

DATAIN(zmienna) - pobiera wartości z końcówek magistrali i zapisuje do zmiennej.

Szerokość magistrali do 16 bitów.

Dostęp do bufora.

System wyposażony jest w dwa bufory pamięci, każdy o pojemności 2MB.

Bufor pierwszy główny nazywany będzie po prosu buforem. Drugi bufor pomocniczy nazywany będzie COMPARE.

Zewnętrznie do bufora użytkownik ma dostęp poprzez edytor hex lub ładowanie plików z dysku.

ISPA daje dostęp do pamięci bufora głównego poprzez komendy:

MEMORYIN(Adres,Zmienna) - odczyta wartości z bufora z pod adresu i zapis do zmiennej

MEMORYOUT(Adres,Zmienna) - zamis wartości ze zmiennej do pamięci bufora pod adresem.

Analogicznie do bufora COMPARE dostęp umozliwiają rozkazy:

COMPAREIN, COMPAREOUT.

Adresowanie może mieć charakter 8,16 lub 32 bitowy.

Przy adresowaniu 8 bitowym adres 0 to pierwsze 8 bitów bufora adres 1 to następne 8 bitów itd.

Przy adresowaniu 16 bitowym adres 0 to pierwsze 16 bitów bufora adres 1 to następne 16 bitów itd.

Przy adresowaniu 32 bitowym adres 0 to pierwsze 32 bity bufora adres 1 to następne 32 bity itd.

Przykład. Jeżeli zapiszemy jakąś wartość 32 bitową pod adresem 1 to przy czytaniu jej w systemie 8 bitowym pierwszy jej bajt dostępny będzie pod adresem 4, drugi pod 5 itd.

Blok rozkazowy.

W przypadku niektórych rozkazów warunkowych lub pętli potrzebne jest wykonanie zestawu rozkazów, a nie pojedynczej komendy. Aby pozbyć się skoków znanych np. z assemblera system udostępnia tzw. blok rozkazowy. Jest to konstrukcja powszechnie znana z takich języków jak np. Pascal.

Begin

Rozkaz1

Rozkaz2

Rozkaz3

End

Blok rozpoczyna się komendą Begin a kończy komendą End. Pomiędzy nimi znajdują się kolejne rozkazy.

Procedury takie jak

IF a=b THEN

rozkaz

traktują blok jako jedną komendę.

System zmiennych.

System udostępnia możliwość deklarowania zmiennych. Bufor zmiennych ma pojemność 64KB.

Do deklaracji zmiennej służy komenda

VAR Name:Type

Deklaraja zmiennej o nazwie Name typu Type.

Dostępne typy: Byte, Word, LongWord.

Zmienna Byte zajmuje 1 Bajt, zmienna Word 2 Bajty zmienna LongWord 4 Bajty.

Nazwa zmiennej musi być unikatowa inaczej kompilator wyświetli błąd.

Np.     VAR Zmienna:Byte;

VAR Zmienna:Word;

VAR Zmienna:LongWord;

Systemy liczbowe.

Kompilator ISPA operuje trzema systemami liczbowymi: dziesiętnym, szesnastkowym i binarnym.

Liczby dziesiętne: zapis w klasycznej postaci, cyfry od 0 do 9.

Np. 1234, 2345, 0012 itd.

Liczby szesnastkowe: cyfry od 0 do 9 i od A do F. Liczba musi być zakończona literą "H". Należy pamiętać aby pierwszą cyfrą liczby nie była litera. Jeżeli tak się zdarzy należy literę poprzedzić cyfrą zero.

Np. 12Ah, 0A12h, 0Dh itd.

Liczby binarne: cyfry od 0 do 1. Liczba musi być zakończona literą "B". Np. 001110101b, 10b, 101b itd.

System graficzny.

Zasadniczym elementem programu obsługi programatora jest panel sterujący (główna część okienka aplikacji). Wynikiem kompilacji algorytmu ISPA jest umieszczenie na panelu elementów graficznych zdeklarowanych w algorytmie. Sterowanie programatorem odbywa się poprzez intuicyjne graficzne wybieranie elementów z panelu. Jest to zupełnie inne podejście niż w przypadku zwykłych programatorów używających klasycznego menu.

Programowanie panelu odbywa się w podobny sposób w jaki pisane są programy okienkowe pod Windows.

Dostępne komponenty graficzne:

LABEL - etykieta tekstowa umieszczana w dowolnym miejscu panelu, ma znaczenie informacyjne

BUTTON - przycisk uruchamiający określoną przez algorytm procedurę np.: Read - powoduje odczytanie układu.

EDITHEX - okienko wprowadzania danych w postaci szesnastkowej np.: rozmiar pamięci. Zawsze poprzedzone jest etykietą opisującą jego nazwę.

PROGRESSRECT - pasek przebiegu procesu. Wskazuje graficznie jak zaawansowane jest wykonanie określonej funkcji. Kolor czerwony określa ilościowo dokonanie procesu.

TEXTFRAME - ramka z komunikatami dla użytkownika. Na ogół zajmuje centralną część ekranu. Wykonanie operacji na układzie powoduje wyświetlenie informacji o aktualnym stanie systemu - zawartości pamięci, błędach itd. Pojawiające się komunikaty zależą od zastosowanego algorytmu.

CHECKBOX - pole zaznaczenie. Popularny krzyżyk. Pozwala na aktywację lub dezaktywację określonej opcji. Zawsze poprzedzony jest opisującą go etykietą.

RADIOGROUP - pole wyboru jednej opcji z szeregu dostępnych. Grupa opisana jest etykietą.

FRAME - ramka prostokątna. Element graficzny służący poprawie czytelności danych na panelu.

Sposób opisu parametrów:

Name - ciąg znaków identyfikujący zmienną, stałą, etykietę. Nie może zaczynać się od cyfry. Np. Zmienna, Count, enable

Label - ciąg znaków identyfikujący etykietę. Nie może zaczynać się od cyfry. Np. Zmienna, Count, enable

Number - liczba w jednym z trzech formatów. Patrz systemy liczbowe.

NumB - liczba 8 bitowa. Zapisana jako bezpośrednia wartość w jednym z trzech systemów lub jako stała (czyli ciąg znaków). Np. 123, 0Ah, stala1.

NumW - liczba 16 bitowa. Zapisana jako bezpośrednia wartość w jednym z trzech systemów lub jako stała (czyli ciąg znaków). Np. 1234, 0ABCh, stala1.

NumL - liczba 32 bitowa. Zapisana jako bezpośrednia wartość w jednym z trzech systemów lub jako stała (czyli ciąg znaków). Np. 128123, 0ABCDEFh, stala1.

Uwaga !!! Stałe Num są ze sobą kompatybilne w dół. Oznacza to że zamiast stałej NumL możemy wstawić stałą NumW lub NumB. Odwrotnie nie jest to możliwe. Konwersja dokonywana jest na etapie kompilacji.

VarB - zmienna 8 bitowa. Reprezentowana przez ciąg znaków. Nie może zaczynać się od cyfry. Definiowana instrukcją Var Zmienna:Byte; Zajmuje 1 bajt pamięci.

VarW - zmienna 16 bitowa. Reprezentowana przez ciąg znaków. Nie może zaczynać się od cyfry. Definiowana instrukcją Var Zmienna:Word; Zajmuje 2 bajty pamięci.

VarL - zmienna 32 bitowa. Reprezentowana przez ciąg znaków. Nie może zaczynać się od cyfry. Definiowana instrukcją Var Zmienna:LongWord; Zajmuje 4 bajty pamięci.

UWAGA!!! Stała lub zmienna poprzedzona znakiem "%" może być podana opcjonalnie, ale nie musi. Wszystkie pozostałe muszą bezwzględnie występować.

Equ - ciąg znaków reprezentujący jedną ze stałych wygenerowanych uprzednio przez rozkazy TEXTFRAME lub PROGRESSRECT.

String - stała tekstowa. Ciąg dowolnych znaków ujęty w apostrofy. Np. 'tekst'

Opis rozkazów ISPA:

TESTCONTACT=OFF

Wyłączenie testowania jakości połączeń końcówek układu z kontaktami podstawki.

Równoznaczne z odznaczeniem opcji TestContact na pulpicie programu, ale wykonywane podczas każdej kompilacji algorytmu.

VAR Parametr1:Parametr2

Zdefiniowanie zmiennej o nazwie Parametr1 typu Parametr2. Patrz system zmiennych.

VAR Name:Byte

VAR Name:Word

VAR Name:LongWord

EQU Parametr1=Parametr2

Przypisanie stałej o nazwie Parametr1 wartości Parametr2. Wartość musi być liczbą dziesiętną, szesnastkową lub binarną 8,16 lub 32bitową. Stała spełnia w programie taką samą funkcję jak liczba, a pozwala identyfikować się poprzez nazwę. Nazwa stałej musi być unikatowa. Patrz systemy liczbowe.

EQU Name:Number

@Parametr1:

Deklaracja etykiety o nazwie Parametr1. Etykieta wyznacza miejsce skoku w komendzie GOTO. W przyjętej budowie proceduralnej programu korzystanie z etykiet nie jest niezbędne. Etykieta ma charakter lokalny jest widziana przez kompilator jedynie w obrębie danej procedury.

@Name:

GOTO Parametr1

Skok do miejsca programu oznaczonego etykietą Parametr1. Komenda ma charakter lokalny, działa tylko w obrębie danej procedury.

GOTO Label

END.

Deklaracja końca programu. Tekst po etykiecie nie jest kompilowany.

END.

PROCEDURE(Parametr1)

Deklaracja procedury o nazwie Name. Nazwa musi być unikatowa. Po deklaracji następuje ciało procedury aż do komendy ENDPROC. Nazwa procedury musi być unikatowa, także różna od nazwy stałej lub zmiennej.

Przykład

Procedure(READ);

.

.

.

EndProc;

PROCEDURE(Name)

ENDPROC

Deklaracja końca procedury. Po wykonaniu procedury interpreter wraca do miejsca jej wywołania i wykonuje następną instrukcję.

ENDPROC

BEGIN

Deklaracja początku bloku rozkazowego. Patrz blok rozkazowy.

BEGIN

END

Deklaracja końca bloku rozkazowego. Patrz blok rozkazowy.

END

HALT

Bezwarunkowe zatrzymanie programu. Interpreter przestaje działać.

HALT

EXIT

Zakończenie działania procedury. Interpreter omija wszystkie pozostałe rozkazy i wraca do miejsca wywołania procedury.



EXIT

BREAK

Zakończenie działania bloku rozkazowego. Interpreter omija wszystkie pozostałe rozkazy w bloku i wykonuje rozkaz znajdujący się za deklaracją END

BREAK

ADRESMASK(Parametr1,...,Parametr24)

Definicja magistrali adresowej. Parametr1 do 24 oznacza kolejne numery końcówek układu. Patrz system magistral.

ADRESMASK(NumB%NumB%NumB%NumB%NumB%

NumB%NumB%NumB%NumB%NumB%NumB%NumB%

NumB%NumB%NumB%NumB%NumB%NumB%NumB%

NumB%NumB%NumB%NumB%NumB)

DATAMASK(Parametr1,...,Parametr16)

Definicja magistrali danych. Parametr1 do 16 oznacza kolejne numery końcówek układu. Patrz system magistral.

DATAMASK(NumB%NumB%NumB%NumB%NumB%

NumB%NumB%NumB%NumB%NumB%NumB%NumB%

NumB%NumB%NumB%NumB)

Komponenty graficzne:

LABEL(Tekst,x,y)

Definicja etykiety tekstowej o treści Tekst(jedna linia tekstu) na panelu. Współrzędne x, y. Patrz system graficzny.

LABEL(String,NumW,NumW)

FRAME(x,y,w,h)

Definicja ramki graficznej o szerokości W i wysokości H. Współrzędne x, y. Ramka jest elementem estetycznym, nie są z nią związane żadne akcje systemu. Patrz system graficzny.

FRAME(NumW,NumW,NumW,NumW)

TEXTFRAME(x,y,w,h, Identyfikator)

Definicja ramki tekstowej o szerokości W, wysokości H. Współrzędne x, y. Identyfikator jest nazwą identyfikującą jednoznacznie ramkę podczas późniejszych czynności zapisu tekstu. Możemy wprowadzić kilka ramek i poprzez identyfikator wysyłać do nich różne teksty. Patrz system graficzny.

TEXTFRAME(NumW,NumW,NumW,

NumW,Name)

TEXT(Identyfikator,Tekst)

Wyświetlenie w ramce tekstowej związanej z Identyfikatorem tekstu Tekst. Patrz TEXTFRAME i system graficzny.

TEXT(Equ,String)

TEXTHEX(Identyfikator, Liczba)

Wyświetlenie w ramce tekstowej związanej z Identyfikatorem liczby Liczba w postaci szesnastkowej. Patrz TEXT i system graficzny.

TEXTHEX(Equ,NumB)

TEXTHEX(Equ,NumW)

TEXTHEX(Equ,NumL)

TEXTHEX(Equ,VarB)

TEXTHEX(Equ,VarW)

TEXTHEX(Equ,VarL)

BUTTON(Nazwa,x,y,w,h,NazwaIkony,

NazwaProcedury

Wyświetla przycisk o nazwie Nazwa. Współrzędne x,y, Szerokość W, Wysokość H

Przycisk może być opatrzony ikoną pobraną z pliku o nazwie NazwaIkony w formacie bmp. Po naciśnięciu przycisku wywoływana jest procedura o nazwie NazwaProcedury. Patrz system graficzny.

BUTTON(String,NumW,NumW,NumW,

NumW,String,Label)

EDITHEX(Nazwa,PrzesunięcieNazwy,x,y,

w,h,Zmienna,Minimum,Maximum,Domyślnie

Wyświetla pole edycyjne poprzedzone nazwą Nazwa. Przesunięcie Nazwy od okienka określone jest liczbą punktów PrzesunięcieNazwy.

Wprowadzana wartość jest zapisywana w zmiennej Zmienna.

Współrzędne pola x,y, szerokość W, wysokość H.

Minimum określa dopuszczalną wartość minimalną.

Maximum określa dopuszczalną wartość maksymalną.

Domyślnie określa wartość wpisywaną w pole po kompilacji algorytmu.

Patrz system graficzny.

EDITHEX(String,NumW,NumW,NumW,NumW,NumW,

VarB,NumB,NumB,NumB)

EDITHEX(String,NumW,NumW,NumW,NumW,NumW,

VarW,NumW,NumW,NumW)

EDITHEX(String,NumW,NumW,NumW,NumW,NumW,

VarL,NumL,NumL,NumL)

EDITHEX(String,NumW,NumW,NumW,NumW,NumW,

VarB,NumB,VarB,NumB)

EDITHEX(String,NumW,NumW,NumW,NumW,NumW,

VarW,NumW,VarW,NumW)

EDITHEX(String,NumW,NumW,NumW,NumW,NumW,

VarL,NumL,VarL,NumL)

EDITHEX(String,NumW,NumW,NumW,NumW,NumW,

VarB,NumB,NumB,VarB)

EDITHEX(String,NumW,NumW,NumW,NumW,NumW,

VarW,NumW,NumW,VarW)

EDITHEX(String,NumW,NumW,NumW,NumW,NumW,

VarL,NumL,NumL,VarL)

EDITHEX(String,NumW,NumW,NumW,NumW,NumW,

VarB,NumB,VarB,VarB)

EDITHEX(String,NumW,NumW,NumW,NumW,NumW,

VarW,NumW,VarW,VarW)

EDITHEX(String,NumW,NumW,NumW,NumW,NumW,

VarL,NumL,VarL,VarL)

PROGRESSRECT(x,y,w,h,Identyfikator)

Definicja słupka postępu współrzędnych x,y, szerokości W, wysokości H. Identyfikator jest nazwą identyfikującą jednoznacznie słupek podczas późniejszych czynności zapisu. Patrz system graficzny.

PROGRESSRECT(NumW,NumW,NumW,NumW,Name)

PROGRESSMIN(Identyfikator, Liczba)

Ustala wartość minimalną słupka związanego z Identyfikatorem. Nowa wartość równa jest Liczbie.

Patrz system graficzny.

PROGRESSMIN(Equ,NumL)

PROGRESSMIN(Equ,VarB)

PROGRESSMIN(Equ,VarW)

PROGRESSMIN(Equ,VarL)

PROGRESSMAX(Identyfikator, Liczba)

Ustala wartość maksymalną słupka związanego z Identyfikatorem. Nowa wartość równa jest Liczbie.

Patrz system graficzny.

PROGRESSMAX(Equ,NumL)

PROGRESSMAX(Equ,VarB)

PROGRESSMAX(Equ,VarW)

PROGRESSMAX(Equ,VarL)

PROGRESS(Identyfikator, Liczba)

Ustala aktualną wartość słupka związanego z Identyfikatorem. Nowa wartość równa jest Liczbie.

Patrz system graficzny.

PROGRESS(Equ,NumL)

PROGRESS(Equ,VarB)

PROGRESS(Equ,VarW)

PROGRESS(Equ,VarL)

CHECKBOX(Nazwa,x,y,Zmienna, Domyślnie)

Definicja okienka opcji o nazwie Nazwa, współrzędnych x, y. Wynik zaznaczenie lub odznaczenie przechowywany jest w zmiennej Zmienna. Parametr Domyślnie określa wartość początkową okienka po kompilacji algorytmu. Zmienna i Domyślnie są liczbami 8 bitowymi. Pod uwagę jednak brany jest jedynie najmłodszy bit. Patrz system graficzny.

CHECKBOX(String,NumW,NumW,

VarB,NumB)

RADIOGROUP(Nazwa,x,y,w,h,Zmienna, Element1,...,Element10)

Definicja ramki wyboru opcji o nazwie Nazwa, współrzędnych x, y, szerokości w, wysokości h. Numer wybranej opcji przechowywany jest w zmiennej Zmienna. Parametry Element1,...,Element10 określają nazwy kolejnych pozycji. Patrz system graficzny.

RADIOGROUP(String,NumW,NumW,NumW,NumW,

VarB,String,String%String%String%String

%String%String%String%String%String)

Rozkazy dotyczące rejestrów:

RESET

Całkowite wyłączenie podstawki. Wszystkie końcówki jako otwarty kolektor. PULLUP na 5V. Dystrybutory napięć wyłączone. Dioda BUSY zgaszona.

RESET

VCCON

Włączenie dystrybutora 141b17b napięcia VCC. Patrz struktura zasilania.

VCCON

VCCOFF

Wyłączenie dystrybutora 141b17b napięcia VCC. Patrz struktura zasilania.

VCCOFF

VPPON

Włączenie dystrybutora 141b17b napięcia VPP. Patrz struktura zasilania.

VPPON

VPPOFF

Wyłączenie dystrybutora 141b17b napięcia VPP. Patrz struktura zasilania.

VPPOFF

LEDON

Zapalenie diody BYSY.

LEDON

LEDOFF

Zgaszenie diody BYSY.

LEDOFF

CLOCKON

Podłączenie do końcówki 23 (dla ERICA) lub 15 (dla PS32) sygnału zegarowego 6MHz. Amplituda 0-2V. Wypełnienie 50%. Należy pamiętać o uprzednim ustawieniu końcówki na poziomie otwarty kolektor. Rozkaz stosowany np. przy procesorach MCS51-87xxx wymagających sygnału zegarowego

CLOCKON

CLOCKOFF

Odłącznie sygnału zegarowego od końcówki 23 sygnału zegarowego 6MHz. Patrz rozkaz CLOCKON.

CLOCKOFF

PULLUP5V

Ustawienie poziomu napięcia dystrybutora 141b17b PULLUP na 5V. Patrz struktura zasilania.



PULLUP5V

PULLUP3V

Ustawienie poziomu napięcia dystrybutora 141b17b PULLUP na 3V. Patrz struktura zasilania.

PULLUP3V

VCCSET(Parametr1)

Ustawienie poziomu napięcia zasilającego o wartości Parametr1 na końcówkach VCC. Patrz struktura zasilania.

VCCSET(NumW)

VCCSET(VarW)

VPPSET(Parametr1)

Ustawienie poziomu napięcia zasilającego o wartości Parametr1 na końcówkach VPP. Patrz struktura zasilania.

VPPSET(NumW)

VPPSET(VarW)

VCC(Parametr1,...,Parametr4)

Podłączenie dystrybutora 141b17b VCC do końcówki o numerze Parametr1,..., Parametr4. Patrz struktura zasilania.

VCC(NumB%NumB%NumB%NumB)

VPP(Parametr1,...,Parametr4)

Podłączenie dystrybutora 141b17b VPP do końcówki o numerze Parametr1,..., Parametr4. Patrz struktura zasilania.

VPP(NumB%NumB%NumB%NumB)

PINL(Parametr1,...,Parametr8)

Ustawienie poziomu 0 na końcówce o numerze Parametr1,..., Parametr8. Obciążenie do 500mA przy poziomie do 500mV.

PINL(NumB%NumB%NumB%NumB %NumB%NumB%NumB%NumB)

PINH(Parametr1,...,Parametr8)

Ustawienie poziomu 1 na końcówce o numerze Parametr1,..., Parametr8. Wszystkie końcówki podstawki są podłączone poprzez rezystor 2K2 do linii zasilania PULLUP. Patrz struktura zasilania.

PINH(NumB%NumB%NumB%NumB %NumB%NumB%NumB%NumB)

PININ(Parametr1,Parametr2)

Odczytanie poziomu sygnału z końcówki o numerze Parametr1. Poziom zapisywany jest w zmiennej o nazwie parametr2 na najmniej znaczącym bicie. Pozostałe bity ustawiane są na 0. Należy pamiętać aby uprzednio na czytaną końcówkę podać sygnał H - otwarty kolektor. Inaczej wartość będzie zawsze wynosić 0.

PININ(NumB,VarB)

PININ(VarB,VarB)

PULSELH(Parametr1)

Wysłanie na końcówkę o numerze Parametr1 sygnału 1,0,1. Szerokość impulsu 0 wynosi od 1 do 6uS. Impuls wyzwalany jest sprzętowo. Na jego szerokość nie ma wpływu przerywanie działania aplikacji przez system Windows. Należy stosować w sytuacjach krytycznych czasowo np. układy AT29Cxxx.

PULSELH(NumB)

PULSELH(VarB)

PULSEHL(Parametr1)

Wysłanie na końcówkę o numerze Parametr1 sygnału 0,1,0. Szerokość impulsu 0 wynosi od 1 do 6uS. Impuls wyzwalany jest sprzętowo. Na jego szerokość nie ma wpływu przerywanie działania aplikacji przez system Windows. Należy stosować w sytuacjach krytycznych czasowo np. układy AT29Cxxx.

PULSEHL(NumB)

PULSEHL(VarB)

ADRESOUT(Parametr1)

Wysłanie wartości Parametr1 na magistralę adresową. Patrz system magistral.

ADRESOUT(NumL)

ADRESOUT(VarB)

ADRESOUT(VarW)

ADRESOUT(VarL)

DATAOUT(Parametr1)

Wysłanie wartości Parametr1 na magistralę danych. Patrz system magistral.

DATAOUT(NumW)

DATAOUT(VarB)

DATAOUT(VarW)

DATAIN(Parametr1)

Pobranie poziomów z końcówek magistrali danych i zapisanie do zmiennej o nazwie Parametr1. Patrz system magistral.

DATAIN(VarB)

DATAIN(VarW)

LOOP(Parametr1)

Wprowadzenie pętli czasowej o czasie trwania Parametr1. Wartość parametru równa 0 powoduje opóźnienie 10uS. Przy innych wartościach jedna jednostka to 100uS. Czas opóźnienia generowany jest sprzętowo przez elektronikę programatora. Nie jest zależny od szybkości komputera.

LOOP(NumW)

LOOP(VarW)

LOOP(VarL)

SERIALOUT(Zmienna,Count,Clkpin,

Datapin,PozClk,PozData,MsbLsb

Szeregowa transmisja danej (nadanie) interfejsem dwuliniowym.

Zmienna-wartość do wysłania

Count-liczba bitów do wysłania

ClkPin-numer końcówki zegarowej

DataPin-numer końcówki danych

PozClk- 1- impuls

010 _/\_

0- impuls

101 ^\/^

PozData 1 - normalny

0 - inwers

MsbLsb 1 - MsbLsb

0 - LsbMsb

Częstotliwość transmisji około 60kHz. Nie może być regulowana.

SERIALOUT(NumL,NumB,NumB,NumB%NumB%NumB%NumB)

SERIALOUT(VarB,NumB,NumB,NumB%NumB%NumB%NumB)

SERIALOUT(VarW,NumB,NumB,NumB%NumB%NumB%NumB)

SERIALOUT(VarL,NumB,NumB,NumB%NumB%NumB%NumB)

SERIALOUT(VarB,VarB,NumB,NumB%NumB%NumB%NumB)

SERIALOUT(VarW,VarB,NumB,NumB%NumB%NumB%NumB)

SERIALOUT(VarL,VarB,NumB,NumB%NumB%NumB%NumB)

SERIALIN Zmienna,Count,Clkpin,Datapin,

PozClk,PozData,MsbLsb,Przed-po zboczu)

Szeregowa transmisja danej (odbiór) interfejsem dwuliniowym.

Zmienna-miejsce docelowe,wartość odebrana

Count-liczba bitów do odebrania

ClkPin-numer końcówki zegarowej

DataPin-numer końcówki danych

PozClk-1-impuls    010 _/\_

0-impuls

101 ^\/^

PozData 1 - normalny

0 - inwers

MsbLsb 1 - MsbLsb

0 - LsbMsb

Przed 1 - read na pierwszym zboczu _^...

0 - read na drugim zboczu ...^_

Częstotliwość transmisji około 60kHz. Nie może być regulowana.

SERIALIN(NumL,NumB,NumB,NumB%NumB%NumB%NumB%NumB)

SERIALIN(VarB,NumB,NumB,NumB%NumB%NumB%NumB%NumB)

SERIALIN(VarW,NumB,NumB,NumB%NumB%NumB%NumB%NumB)

SERIALIN(VarL,NumB,NumB,NumB%NumB%NumB%NumB%NumB)

SERIALIN(VarB,VarB,NumB,NumB%NumB%NumB%NumB%NumB)

SERIALIN(VarW,VarB,NumB,NumB%NumB%NumB%NumB%NumB)

SERIALIN(VarL,VarB,NumB,NumB%NumB%NumB%NumB%NumB)

Rozkazy przesłań do pamięci:

MEMORYIN(Parametr1,Parametr2)

Pobranie wartości z pamięci bufora głównego z pod adresu Parametr1 i zapisanie do zmiennej o nazwie Parametr2. Patrz Dostęp do bufora.

MEMORYIN(VarB,VarB)

MEMORYIN(VarB,VarW)

MEMORYIN(VarB,VarL)

MEMORYIN(VarW,VarB)

MEMORYIN(VarW,VarW)

MEMORYIN(VarW,VarL)

MEMORYIN(VarL,VarB)

MEMORYIN(VarL,VarW)

MEMORYIN(VarL,VarL)

MEMORYIN(NumL,VarB)

MEMORYIN(NumL,VarW)

MEMORYIN(NumL,VarL)

MEMORYOUT(Parametr1,Parametr2)

Zapisanie wartości ze zmiennej o nazwie Parametr2 do pamięci bufora głównego pod adres Parametr1. Patrz Dostęp do bufora.

MEMORYOUT(VarB,VarB)

MEMORYOUT(VarB,VarW)

MEMORYOUT(VarB,VarL)

MEMORYOUT(VarW,VarB)

MEMORYOUT(VarW,VarW)

MEMORYOUT(VarW,VarL)

MEMORYOUT(VarL,VarB)

MEMORYOUT(VarL,VarW)

MEMORYOUT(VarL,VarL)

MEMORYOUT(NumL,VarB)

MEMORYOUT(NumL,VarW)

MEMORYOUT(NumL,VarL)

MEMORYOUT(VarB,NumB)

MEMORYOUT(VarB,NumW)

MEMORYOUT(VarB,NumL)

MEMORYOUT(VarW,NumB)

MEMORYOUT(VarW,NumW)

MEMORYOUT(VarW,NumL)

MEMORYOUT(VarL,NumB)

MEMORYOUT(VarL,NumW)

MEMORYOUT(VarL,NumL)

MEMORYOUT(NumL,NumB)

MEMORYOUT(NumL,NumW)

MEMORYOUT(NumL,NumL)

COMPAREIN(Parametr1,Parametr2)

Pobranie wartości z pamięci bufora COMPARE z pod adresu Parametr1 i zapisanie do zmiennej o nazwie Parametr2. Patrz Dostęp do bufora.

COMPAREIN(VarB,VarB)

COMPAREIN(VarB,VarW)

COMPAREIN(VarB,VarL)

COMPAREIN(VarW,VarB)

COMPAREIN(VarW,VarW)

COMPAREIN(VarW,VarL)

COMPAREIN(VarL,VarB)

COMPAREIN(VarL,VarW)

COMPAREIN(VarL,VarL)

COMPAREIN(NumL,VarB)

COMPAREIN(NumL,VarW)

COMPAREIN(NumL,VarL)

COMPAREOUT(Parametr1,Parametr2)

Zapisanie wartości ze zmiennej o nazwie Parametr2 do pamięci bufora COMPARE pod adres Parametr1. Patrz Dostęp do bufora.

COMPAREOUT(VarB,VarB)

COMPAREOUT(VarB,VarW)

COMPAREOUT(VarB,VarL)

COMPAREOUT(VarW,VarB)

COMPAREOUT(VarW,VarW)

COMPAREOUT(VarW,VarL)

COMPAREOUT(VarL,VarB)

COMPAREOUT(VarL,VarW)

COMPAREOUT(VarL,VarL)

COMPAREOUT(NumL,VarB)

COMPAREOUT(NumL,VarW)

COMPAREOUT(NumL,VarL)

COMPAREOUT(VarB,NumB)

COMPAREOUT(VarB,NumW)

COMPAREOUT(VarB,NumL)

COMPAREOUT(VarW,NumB)

COMPAREOUT(VarW,NumW)

COMPAREOUT(VarW,NumL)

COMPAREOUT(VarL,NumB)

COMPAREOUT(VarL,NumW)

COMPAREOUT(VarL,NumL)

COMPAREOUT(NumL,NumB)

COMPAREOUT(NumL,NumW)

COMPAREOUT(NumL,NumL)



Rozkazy warunkowe:

IF Parametr1=Parametr2 THEN

Rozkaz wykonania warunkowego. Jeżeli Parametr1 jest równy Parametr2 to zostaje wykonana komenda z następnego wiersza. W innym wypadku komenda ta jest pomijana. W wierszu po rozkazie IF można zamiast pojedynczej komendy zastosować blok rozkazowy. Patrz blok rozkazowy.

IF VarB=NumB THEN

IF VarB=VarB THEN

IF VarW=NumW THEN

IF VarW=VarW THEN

IF VarL=NumL THEN

IF VarL=VarL THEN

IF NumL=NumL THEN

IF Parametr1>Parametr2 THEN

Rozkaz wykonania warunkowego. Jeżeli Parametr1 jest większy niż Parametr2 to zostaje wykonana komenda z następnego wiersza. W innym wypadku komenda ta jest pomijana. W wierszu po rozkazie IF można zamiast pojedynczej komendy zastosować blok rozkazowy. Patrz blok rozkazowy.

IF VarB>NumB THEN

IF VarB>VarB THEN

IF VarW>NumW THEN

IF VarW>VarW THEN

IF VarL>NumL THEN

IF VarL>VarL THEN

IF NumL>NumL THEN

IF Parametr1<Parametr2 THEN

Rozkaz wykonania warunkowego. Jeżeli Parametr1 jest mniejszy od Parametr2 to zostaje wykonana komenda z następnego wiersza. W innym wypadku komenda ta jest pomijana. W wierszu po rozkazie IF można zamiast pojedynczej komendy zastosować blok rozkazowy. Patrz blok rozkazowy.

IF VarB<NumB THEN

IF VarB<VarB THEN

IF VarW<NumW THEN

IF VarW<VarW THEN

IF VarL<NumL THEN

IF VarL<VarL THEN

IF NumL<NumL THEN

IF Parametr1<>Parametr2 THEN

Rozkaz wykonania warunkowego. Jeżeli Parametr1 jest różny od Parametr2 to zostaje wykonana komenda z następnego wiersza. W innym wypadku komenda ta jest pomijana. W wierszu po rozkazie IF można zamiast pojedynczej komendy zastosować blok rozkazowy. Patrz blok rozkazowy.

IF VarB<>NumB THEN

IF VarB<>VarB THEN

IF VarW<>NumW THEN

IF VarW<>VarW THEN

IF VarL<>NumL THEN

IF VarL<>VarL THEN

IF NumL<>NumL THEN

Rozkazy arytmetyczne:

LET Parametr1=Parametr2

Rozkaz przypisuje zmiennej wartość. Parametr1 określa zmienną docelową, Parametr2 źródło wartości.

LET VarB=NumB

LET VarW=NumW

LET VarL=NumL

LET VarB=VarB

LET VarW=VarB

LET VarW=VarW

LET VarL=VarB

LET VarL=VarW

LET VarL=VarL

LET Parametr1=BYTE(Parametr2)

Rozkaz przypisuje zmiennej o rozmiarze bajtu wartość o rozmiarze word lub longword po konwersji. Parametr1 określa zmienną docelową, Parametr2 źródło wartości.

LET VarB=BYTE(VarW)

LET VarB=BYTE(VarL)

LET VarW=BYTE(VarL)

LET Parametr1+Parametr2

Rozkaz dodaje Parametr1 do Parametr2 i wynik umieszcza w zmiennej Parametr1.

LET VarB+NumB

LET VarW+NumW

LET VarL+NumL

LET VarB+VarB

LET VarW+VarB

LET VarW+VarW

LET VarL+VarB

LET VarL+VarW

LET VarL+VarL

LET Parametr1-Parametr2

Rozkaz odejmuje od Parametr1 Parametr2 i wynik umieszcza w zmiennej Parametr1.

LET VarB-NumB

LET VarW-NumW

LET VarL-NumL

LET VarB-VarB

LET VarW-VarB

LET VarW-VarW

LET VarL-VarB

LET VarL-VarW

LET VarL-VarL

LET Parametr1*Parametr2

Rozkaz mnoży Parametr1 przez Parametr2 i wynik umieszcza w zmiennej Parametr1.

LET VarB*NumB

LET VarW*NumW

LET VarL*NumL

LET VarB*VarB

LET VarW*VarB

LET VarW*VarW

LET VarL*VarB

LET VarL*VarW

LET VarL*VarL

LET Parametr1/Parametr2

Rozkaz dzieli Parametr1 przez Parametr2 i wynik umieszcza w zmiennej Parametr1.

LET VarB/NumB

LET VarW/NumW

LET VarL/NumL

LET VarB/VarB

LET VarW/VarB

LET VarW/VarW

LET VarL/VarB

LET VarL/VarW

LET VarL/VarL

LET Parametr1 AND Parametr2

Rozkaz wykonuje mnożenie logiczne Parametr1 przez Parametr2 i wynik umieszcza w zmiennej Parametr1.

LET VarB AND NumB

LET VarW AND NumW

LET VarL AND NumL

LET VarB AND VarB

LET VarW AND VarB

LET VarW AND VarW

LET VarL AND VarB

LET VarL AND VarW

LET VarL AND VarL

LET Parametr1 OR Parametr2

Rozkaz wykonuje sumowanie logiczne Parametr1 z Parametr2 i wynik umieszcza w zmiennej Parametr1.

LET VarB OR NumB

LET VarW OR NumW

LET VarL OR NumL

LET VarB OR VarB

LET VarW OR VarB

LET VarW OR VarW

LET VarL OR VarB

LET VarL OR VarW

LET VarL OR VarL

LET Parametr1 XOR Parametr2

Rozkaz wykonuje Exclusive OR logiczne Parametr1 z Parametr2 i wynik umieszcza w zmiennej Parametr1.

LET VarB XOR NumB

LET VarW XOR NumW

LET VarL XOR NumL

LET VarB XOR VarB

LET VarW XOR VarB

LET VarW XOR VarW

LET VarL XOR VarB

LET VarL XOR VarW

LET VarL XOR VarL

LET Parametr1 SHL Parametr2

Rozkaz wykonuje przesunięcie logiczne Parametr1 o Parametr2 pozycji w lewo i wynik umieszcza w zmiennej Parametr1.

Rozkaz ma charakter niecykliczny.

LET VarB SHL NumB

LET VarW SHL NumB

LET VarL SHL NumB

LET VarB SHL VarB

LET VarW SHL VarB

LET VarL SHL VarB

LET Parametr1 SHR Parametr2

Rozkaz wykonuje przesunięcie logiczne Parametr1 o Parametr2 pozycji w prawo i wynik umieszcza w zmiennej Parametr1.

Rozkaz ma charakter niecykliczny.

LET VarB SHR NumB

LET VarW SHR NumB

LET VarL SHR NumB

LET VarB SHR VarB

LET VarW SHR VarB

LET VarL SHR VarB

INC Parametr1

Inkrementacja zmiennej Parametr1.

INC(VarB)

INC(VarW)

INC(VarL)

DEC Parametr1

Dekrementacja zmiennej Parametr1.

DEC(VarB)

DEC(VarW)

DEC(VarL)

SWAP(Parametr1)

Zamiana miejscami bajtów w słowie, lub słów w długim słowie.

SWAP(VarW)

SWAP(VarL)

Petle:

FOR Parametr1 TO Parametr2 THEN

Begin

..

End

Pętla programowana. Dopóki Parametr1 nie jest większy od Parametr2 wykonywany jest blok rozkazowy. Po każdym wykonaniu bloku zmienna Parametr1 jest zwiększana o 1. Przed wejściem w pętlę należy ustalić wartość początkową zmiennej Parametr1. Natychmiastowe opuszczenie pętli wykonywane jest po wykonaniu komendy break.

FOR VarB TO NumB DO

FOR VarW TO NumW DO

FOR VarL TO NumL DO

FOR VarB TO VarB DO

FOR VarW TO VarW DO

FOR VarL TO VarL DO

FOR Parametr1 DOWNTO Parametr2 THEN

Begin

..

End

Pętla programowana. Dopóki Parametr1 nie jest mniejszy od Parametr2 wykonywany jest blok rozkazowy. Po każdym wykonaniu bloku zmienna Parametr1 jest zmniejszana o 1. Przed wejściem w pętlę należy ustalić wartość początkową zmiennej Parametr1. Natychmiastowe opuszczenie pętli wykonywane jest po wykonaniu komendy break.

FOR VarB DOWNTO NumB DO

FOR VarW DOWNTO NumW DO

FOR VarL DOWNTO NumL DO

FOR VarB DOWNTO VarB DO

FOR VarW DOWNTO VarW DO

FOR VarL DOWNTO VarL DO




Document Info


Accesari: 1685
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2025 )