Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Интерфейс USB в современных нестандандартных периферийных устройствах - Слизовский Е.В

..pdf
Скачиваний:
146
Добавлен:
24.05.2014
Размер:
1.07 Mб
Скачать

For I := 0 to ( FC1 - 1 ) do

If FT_Out_Buffer[I] <> FT_In_Buffer[I] then Passtest := False; End;

Until FC1 <> FT_In_Buffer_Size; CloseFile(OpenFile); CloseFile(SaveFile);

If PassTest then Memo1.Lines.Add('Проверка пройдена успешно !') else Memo1.Lines.Add('Проверка не пройдена!')

End;

end;

procedure TForm1.BitBtn2Click(Sender: TObject);

var S:String; DeviceIndex : DWord; I : Integer; LV : TListItem; begin

Cfg_f.ListView1.Items.clear; GetFTDeviceCount;

S := IntToStr(FT_Device_Count);

Caption := 'D2XX Тестовая программа - '+S+' устройств подключено ...'; DeviceIndex := 0;

If FT_Device_Count > 0 then

For I := 1 to FT_Device_Count do Begin

LV := Cfg_f.ListView1.Items.Add; LV.Caption := 'Устройство '+IntToStr(I); GetFTDeviceSerialNo( DeviceIndex ); LV.SubItems.Add(FT_Device_String); GetFTDeviceDescription ( DeviceIndex ); LV.SubItems.Add(FT_Device_String); DeviceIndex := DeviceIndex + 1;

End;

end;

procedure TForm1.BitBtn4Click(Sender: TObject); begin

Close;

end;

procedure TForm1.ListView1Click(Sender: TObject); var LV : TListItem;

begin

{If Listview1.SelCount > 0 then Begin

LV := ListView1.Selected;

BitBtn1.Enabled := True; Selected_Device_Serial_Number := LV.SubItems[0]; Selected_Device_Description := LV.SubItems[1]; End else

BitBtn1.Enabled := False; }end;

procedure TForm1.About1Click(Sender: TObject); begin

MessageDlg('программа тестирования FT2XX by ESl <slizovskij@mail.ru>', mtInformation, [mbOk], 0);

end;

procedure TForm1.N3Click(Sender: TObject); begin

MessageDlg('Справка недоступна в данной версии. приносим свои извинения', mtError, [mbOk],0);

end;

procedure TForm1.kugfkgf1Click(Sender: TObject);

61

begin Form1.Close; end;

procedure TForm1.FormCreate(Sender: TObject); begin

//Cfg_f.FTSendFile:= FTSendFile;

//Cfg_f.FTReceiveFile:=FTReceiveFile;

//Cfg_f.FTResend:=FTResend;

end;

procedure TForm1.N7Click(Sender: TObject); begin

Cfg_f.ShowModal; end;

procedure TForm1.Timer2Timer(Sender: TObject); begin

ReceiveFile1.Enabled:=(devConfig.Selected_Device_Serial_Number=''); Configure1.Enabled:=ReceiveFile1.Enabled; SendRxvCompare1.Enabled:=ReceiveFile1.Enabled; ReSend1.Enabled:=ReceiveFile1.Enabled;

end;

procedure TForm1.StartBTNClick(Sender: TObject); begin

stopBtn.Enabled:=true;

StartBtn.Enabled:=false;

Timetime.enabled:=true;

tt:=0;

pointCount:=0;

FTResendExecute(Sender);

min:=0;

max:=0;

sredn:=0;

end;

procedure TForm1.StopBTNClick(Sender: TObject); begin

StopBtn.Enabled:=false;

StartBtn.Enabled:=true;

Timetime.enabled:=false;

end;

function sf(s:string):string; begin

if length(s)<2 then s:='0'+s; result:=s;

end;

procedure TForm1.TimeTimeTimer(Sender: TObject); var

h,m,s:integer; begin

tt:=tt+1; h:=tt div 3600;

tt:=tt-(h*3600); m:=tt div 60; s:=tt mod 60;

label10.Caption:=sf(inttostr(h))+':'+sf(inttostr(m))+':'+sf(inttostr(s));

end;

end.

62

Приложение 3. Некоторые формы программы опроса датчика ускорения.

Рис. 1 Форма конфигурации устройств

Рис. 2 Основная форма.

63

Приложение 4. Библиотека арифметических подпрограмм для МК ЕР1878ВЕ1

;МАТЕМАТИЧЕСКАЯ БИБЛИОТЕКА

-

 

;--------------------------------------------------------

 

 

 

 

 

 

;

 

 

 

 

 

 

;Таблица векторов прерываний

 

 

S::

JMP

T_FSA

 

;<0> Начальный пуск

 

 

JMP

ERR

 

;<1> Сторожевой таймер

 

JMP

ERR

 

;<2> Сбой программы (стеки, память)

 

JMP

ERR

 

;<3> Таймер A

 

 

 

JMP

ERR

 

;<4>

 

 

 

JMP

ERR

 

;<5>

 

 

 

JMP

ERR

 

;<6> Порт A

 

 

 

JMP

ERR

 

;<7>

 

 

 

JMP

ERR

 

;<8>

 

 

 

JMP

ERR

 

;<9>

 

 

 

JMP

ERR

 

;<10>

 

 

 

JMP

ERR

 

;<11>

 

 

 

JMP

ERR

 

;<12>

 

 

 

JMP

ERR

 

;<13>

 

 

 

JMP

ERR

 

;<14>

 

 

 

JMP

ERR

 

;<15>

 

 

;

 

 

 

 

 

:

;---------------------------------------------------

Нормальный выход (без ошибок)

 

;

 

:

;---------------------------------------------------

 

EXIT

 

 

 

:

EXIT: JMP

 

 

 

 

;

 

 

 

 

 

:

;---------------------------------------------------

 

Обработка ошибок

:

;

 

:

;---------------------------------------------------

JMP

ERR

 

 

 

ERR:

 

 

 

 

;Точка старта программы

 

 

 

T_FSA:

8

;IE=0

 

 

 

 

cst

;Установка сегмента A

 

 

ldr

#0,40h

 

 

ldr

#1,48h

;Установка сегмента B

 

 

ldr

#2,50h

;Установка сегмента C

 

 

ldr

#3,58h

;Установка сегмента D

 

 

ldr

#4,40h

;Установка IR0 (мл.)

 

 

ldr

#5,40h

;Установка IR0 (ст.) (Auto+)

 

ldr

#6,00h

;Установка IR1 (мл.)

 

 

ldr

#7,00h

;Установка IR1 (ст.)

 

;Умножение

 

 

 

 

 

;====================================================

;=

Вариант с беззнаковым умножением 8x8

=

;=

movl

%a0,0Fh

;Исходные

 

=

;=

movl

%a1,0Fh

; данные

 

=

;=

jsr

MU_8U ;Вызов рабочей подпрограммы =

;=

JMP

EXIT

;Выход

=

 

;====================================================

;====================================================

;=

Вариант со знаковым умножением 8x8

=

;=

movl

%a0,0Fh

;Исходные

 

=

;=

movl

%a1,0Fh

; данные

 

=

;=

jsr

MU_8S ;Вызов рабочей подпрограммы =

;=

JMP

EXIT

;Выход

=

 

;====================================================

;====================================================

64

;=

Вариант с беззнаковым умножением 16x16

=

;=

movl

%a0,0Fh

;Исходные

 

 

=

;=

movl

%a1,0Fh

; данные

 

 

=

;=

movl

%a2,0Fh

;Исходные

 

 

=

;=

movl

%a3,0Fh

; данные

 

 

=

;=

jsr

MU_16U

;Вызов рабочей подпрограммы =

;=

JMP

EXIT

;Выход

 

=

 

 

;====================================================

;====================================================

;=

Вариант со знаковым умножением 16x16

=

;=

movl

%a0,0Fh

;Исходные

 

 

=

;=

movl

%a1,0Fh

; данные

 

 

=

;=

movl

%a2,0Fh

;Исходные

 

 

=

;=

movl

%a3,0Fh

; данные

 

 

=

;=

jsr

MU_16S

;Вызов рабочей подпрограммы =

;=

JMP

EXIT

;Выход

 

=

 

 

;====================================================

;Деление

 

 

 

 

 

 

 

;====================================================

;=

Вариант с беззнаковым делением 8x8

 

=

;=

movl

%a0,0Fh

;Исходные

 

 

=

;=

movl

%a1,02h

; данные

 

 

=

;=

jsr

DI_8U ;Вызов рабочей подпрограммы =

;=

JMP

EXIT

;Выход

 

=

 

 

;====================================================

;====================================================

;=

Вариант со знаковым делением 8x8

 

=

;=

movl

%a0,0Fh

;Исходные

 

 

=

;=

movl

%a1,02h

; данные

 

 

=

;=

jsr

DI_8S ;Вызов рабочей подпрограммы =

;=

JMP

EXIT

;Выход

 

=

 

 

;====================================================

;====================================================

;=

Вариант с беззнаковым делением 16x16

=

;=

movl

%a0,0Fh

;Исходные

 

 

=

;=

movl

%a1,03h

; данные

 

 

=

;=

movl

%a2,03h

;Исходные

 

 

=

;=

movl

%a3,00h

; данные

 

 

=

;=

jsr

DI_16U

;Вызов рабочей подпрограммы =

;=

JMP

EXIT

;Выход

 

=

 

 

;====================================================

;

 

 

 

 

 

 

 

 

;Собственно библиотечные подпрограммы

 

 

;

 

 

 

 

 

 

 

 

;

 

 

 

 

 

 

 

 

;=========================================

 

;==

Беззнаковое умножение 8x8

==

 

 

;=========================================

 

;--

Вход: %A0 - 1-ый множитель

--

 

 

;--

 

%A1 - 2-ой множитель

--

--

 

;--

Выход:

%A2 - ст. байт рез-та

 

;--

 

%A1 - мл. байт рез-та

--

--

 

;--

Исп-ся:

%A3 - счётчик сдвигов

 

;-----------------------------------------

 

MU_8U:

xor

%a2,%a2

;Инициализация ст. байта результата и CF

 

movl

%a3,9 ;Число битов в байте + 1

 

$2:

jmp

$4

;На нулевой сдвиг 2-го множителя

add

%a2,%a0

;Сложение

ст. байта результата с 1-ым множителем

$3:

rrc

%a2

;Циклич. сдвиг вправо ст. байта результата

$4:

rrc

%a1

;Циклич. сдвиг вправо мл. байта рез-та и 2-го множ-ля

 

jc

$5

;Если CF=1

 

 

 

 

65

dec

%a3

;Пока не все

jnz

$3

; сдвиги

rts

%a3

;Выход из подпрограммы

$5: dec

;Пока не все

sst

1

;CF=1

jnz

$2

; сдвиги

rts

 

;Выход из подпрограммы

;

;=========================================

;==

Знаковое умножение 8x8

 

==

 

;=========================================

;--

Вход: %A0 - 1-ый множитель

--

 

;--

 

%A1 - 2-ой множитель

--

--

;--

Выход:

%A2 - ст. байт рез-та

;--

 

%A1 - мл. байт рез-та

--

--

;--

Исп-ся:

%A3 - счётчик сдвигов

;-----------------------------------------

MU_8S:

xor

%a2,%a2

;Инициализация ст. байта результата и CF

 

movl

%a3,8

;Число битов в байте

 

$2:

jmp

$3

;На битовую проверку

 

add

%a2,%a0

;Сложение ст. байта результата с 1-ым множителем

$3:

bttl

%a1,0001b ;Установлен бит 0 в мл. байте рез-та и 2-го множ-ле?

 

jz

.+1

;Нет

;Восстановление ст. байта результата

 

sub

%a2,%a0

 

shra

%a2

;Арифметич. сдвиг вправо ст. байта результата

 

rrc

%a1

;Циклич. сдвиг вправо мл. байта рез-та и 2-го множ-ля

 

jc

$5

;Если CF=1

 

 

 

 

dec

%a3

;Пока не все

 

 

 

jnz

$3

; сдвиги

 

 

 

$5:

rts

%a3

;Выход из подпрограммы

 

dec

;Пока не все

 

 

 

sst

1

;CF=1

 

 

 

 

 

jnz

$2

; сдвиги

 

 

 

;

rts

 

;Выход из подпрограммы

 

 

 

 

 

 

 

 

;===============================================

;==

Беззнаковое умножение 16x16

 

==

;===============================================

;--

Вход: %A0 - мл. байт 1-го множ-ля

--

;--

 

%A1 - ст. байт 1-го множ-ля

--

;--

 

%A2 - мл. байт 2-го множ-ля

--

;--

 

%A3 - ст. байт 2-го множ-ля

--

;--

Выход:

%A2 - байт 0 рез-та

--

;--

 

%A3 - байт 1 рез-та

 

--

;--

 

%A4 - байт 2 рез-та

 

--

;--

 

%A5 - байт 3 рез-та

 

--

;--

Исп-ся:

%A6 - счётчик сдвигов

--

;-----------------------------------------------

MU_16U:

clr

%a5

;Инициализация байта 3 результата

 

xor

%a4,%a4

;Инициализация байта 2 результата и CF

 

movl

%a6,17

;Число битов в байте + 1

$2:

jmp

$4

;На нулевой сдвиг 2-го множителя

add

%a4,%a0

;Сложение байта 2 результата с мл. байтом 1-го множ-ля

 

adc

%a5

;Сложение байта 3 результата с CF

 

jnc

$100

;Если не установлен CF

 

 

add

%a5,%a1

;Сложение байта 3 результата с ст. байтом 1-го множ-ля

 

sst

1

;Восстановление

 

 

 

jmp

$3

; CF

;Сложение байта 3 результата с ст. байтом 1-го множ-ля

$100: add

%a5,%a1

$3:

rrc

%a5

;Циклич. сдвиг вправо байта 3 результата

$4:

rrc

%a4

;Циклич. сдвиг вправо байта 2 результата

rrc

%a3

;Циклич. сдвиг вправо байта 1 рез-та и мл.б. 2 множ-ля

 

rrc

%a2

;Циклич. сдвиг вправо байта 0 рез-та и ст.б. 2 множ-ля

 

jc

$5

;Если CF=1

 

 

 

66

dec

%a6

;Пока не все

jnz

$3

; сдвиги

rts

%a6

;Выход из подпрограммы

$5: dec

;Пока не все

sst

1

;CF=1

jnz

$2

; сдвиги

rts

 

;Выход из подпрограммы

;

;===============================================

;==

Знаковое умножение 16x16

==

;===============================================

;--

Вход: %A0 - мл. байт 1-го множ-ля

--

;--

%A1 - ст. байт 1-го множ-ля

--

;--

%A2 - мл. байт 2-го множ-ля

--

;--

%A3 - ст. байт 2-го множ-ля

--

;--

Выход:

%A2 - байт 0 рез-та

--

;--

%A3 - байт 1

рез-та

--

;--

%A4 - байт 2

рез-та

--

;--

%A5 - байт 3

рез-та

--

;--

Исп-ся:

%A6 - счётчик сдвигов

--

;-----------------------------------------------

 

 

 

 

MU_16S:

clr

%a5

;Инициализация байта 3 результата

 

xor

%a4,%a4

;Инициализация байта 2 результата и CF

$1:

movl

%a6,16

;Число битов в байте

JNC

$3

 

;Сложение байта 2 результата с мл. байтом 1-го множ-ля

$2:

add

%a4,%a0

 

adc

%a5

;Сложение байта 3 результата с CF

 

jnc

$100

;Если не установлен CF

 

add

%a5,%a1

;Сложение байта 3 результата с ст. байтом 1-го множ-ля

 

sst

1

;Восстановление

 

jmp

$3

; CF

;Сложение байта 3 результата с ст. байтом 1-го множ-ля

$100: add

%a5,%a1

$3:

jsr

RBTTL

 

 

 

;Нет

 

 

jz

.+1

;Восстановление байта 2 результата

 

sub

%a4,%a0

 

jsr

RBTTL

;Нет

 

 

jz

$4

 

 

sbc

%a5

;Восстановление

 

jnc

$200

;Если не установлен CF

 

sub

%a5,%a1

; байта 3 результата

 

sst

1

;Восстановление

 

jmp

$4

; CF

; байта 3 результата

$200: sub

%a5,%a1

$4:

shra

%a5

;Арифметич.сдвиг вправо байта 3 результата

 

 

rrc

%a4

;Циклич. сдвиг вправо байта 2 результата

 

rrc

%a3

;Циклич. сдвиг вправо байта 1 рез-та и мл.б. 2 множ-ля

 

rrc

%a2

;Циклич. сдвиг вправо байта 0 рез-та и ст.б. 2 множ-ля

 

JSR

RDEC

 

;{Это}

 

jnz

$1

 

;{всё}

 

rts

 

 

;{временно}

 

jc

$5

;Если CF=1

 

dec

%a6

;Пока не все

 

jnz

$3

; сдвиги

$5:

rts

%a6

;Выход из подпрограммы

dec

;Пока не все

 

sst

1

;CF=1

 

 

jnz

$2

; сдвиги

;

rts

 

;Выход из подпрограммы

 

 

 

 

67

;=========================================

;==

Беззнаковое деление 8/8

==

 

;=========================================

;--

Вход: %A0 - делимое

 

--

 

;--

 

%A1 - делитель

 

--

--

;--

Выход:

%A0 - частное

--

;--

 

%A2 - остаток

 

--

;--

Исп-ся:

%A3 - счётчик сдвигов

;-----------------------------------------

DI_8U:

xor

%a2,%a2

;Инициализация остатка и CF

$1:

movl

%a3,9

;Число битов в байте + 1

rlc

%a0

;Циклич. сдвиг влево делимого и частного

 

jc

$4

;Если CF=1

 

 

 

 

dec

%a3

;Пока не все

 

 

 

jnz

$2

; сдвиги

 

 

 

$4:

rts

%a3

;Выход из подпрограммы

 

dec

;Пока не все

 

 

 

sst

1

;CF=1

 

 

 

 

 

jnz

$2

; сдвиги

 

 

 

$2:

rts

%a2

;Выход из подпрограммы

 

rlc

;Циклич. сдвиг влево остатка

 

sub

%a2,%a1

;Вычитание из остатка делителя

 

jnc

$3

;Если разность >0

 

 

 

add

%a2,%a1

;Иначе - восстанавливается остаток

 

cst

1

;CF=0

 

 

 

 

$3:

jmp

$1

;Следующий цикл

 

 

sst

1

;CF=1

 

 

 

 

;

jmp

$1

;Следующий цикл

 

 

 

 

 

 

 

 

 

;=========================================

;==

Знаковое деление 8/8

 

==

 

;=========================================

;--

Вход: %A0 - делимое

 

--

 

;--

 

%A1 - делитель

 

--

--

;--

Выход:

%A0 - частное

--

;--

 

%A2 - остаток

 

--

;--

Исп-ся:

%A3 - счётчик сдвигов

;--

 

 

%A4 - знаковый регистр

--

;-----------------------------------------

DI_8S:

%a4,%a0

;Делимое - в знаковый регистр

 

mov

 

xor

%a4,%a1

;XOR знакового регистра с делителем

 

btth

%a1,1000b ;Делитель <0?

 

 

 

jz

.+1

;Нет

 

 

 

 

 

neg

%a1

;Смена знака делителя

 

 

btth

%a0,1000b ;Делимое <0?

 

 

 

jz

.+1

;Нет

 

 

 

 

 

neg

%a0

;Смена знака делимого

 

 

clr

%a2

;Инициализация остатка

 

$1:

movl

%a3,9

;Число битов в байте + 1

rlc

%a0

;Циклич. сдвиг влево делимого и частного

 

jc

$4

;Если CF=1

 

 

 

 

dec

%a3

;Пока не все

 

 

 

jnz

$2

; сдвиги

 

 

 

$4:

jmp

$5

;

 

 

 

 

dec

%a3

;Пока не все

 

 

 

sst

1

;CF=1

 

 

 

 

$5:

jnz

$2

; сдвиги

 

 

 

btth

%a4,1000b ;Знаковый регистр <0?

 

jz

.+1

;Нет

 

 

 

 

 

neg

%a0

;Смена знака знакового регистра

 

rts

 

;Выход из подпрограммы

 

68

$2:

rlc

%a2

;Циклич. сдвиг влево остатка

 

sub

%a2,%a1

;Вычитание из остатка делителя

 

jnc

$3

;Если разность >0

 

add

%a2,%a1

;Иначе - восстанавливается остаток

 

cst

1

;CF=0

 

$3:

jmp

$1

;Следующий цикл

sst

1

;CF=1

 

 

jmp

$1

;Следующий цикл

;

;==========================================

;==

Беззнаковое деление 16/16

==

;==========================================

;--

Вход: %A0 - мл. байт делимого

--

;--

%A1 - ст. байт делимого

--

;--

%A2 - мл. байт делителя

--

;--

%A3 - ст. байт делителя

--

;--

Выход:

%A0 - мл. байт частного --

;--

%A1 - ст. байт частного

--

;--

%A4 - мл. байт остатка

--

;--

%A5 - ст. байт остатка

--

;--

Исп-ся:

%A6 - счётчик сдвигов

--

;------------------------------------------

DI_16U:

clr

%a4

;Инициализация мл. байта остатка

 

xor

%a5,%a5

;Инициализация ст. байта остатка и CF

$1:

movl

%a6,17

;Число битов в байте + 1

rlc

%a0

;Циклич. сдвиг влево мл.б. делимого и мл.б. частного

 

rlc

%a1

;Циклич. сдвиг влево ст.б. делимого и ст.б. частного

 

jc

$4

;Если CF=1

 

 

dec

%a6

;Пока не все

 

 

jnz

$2

; сдвиги

 

$4:

rts

%a6

;Выход из подпрограммы

 

dec

;Пока не все

 

 

sst

1

;CF=1

 

 

 

jnz

$2

; сдвиги

 

$2:

rts

%a4

;Выход из подпрограммы

 

rlc

;Циклич. сдвиг влево мл. байта остатка

 

rlc

%a5

;Циклич. сдвиг влево ст. байта остатка

 

sub

%a4,%a2

;Вычитание из мл.б. остатка мл.б. делителя

 

sbc

%a5

;Вычитание из ст.б. остатка CF

 

jc

$5

;Если разность <0

 

 

sub

%a5,%a3

;Вычитание из ст.б. остатка ст.б. делителя

 

jnc

$3

;Если разность >0

 

 

add

%a4,%a2

;Иначе -

 

 

adc

%a5

; восстанавливается

 

 

add

%a5,%a3

; остаток

 

 

cst

1

;CF=0

 

 

$3:

jmp

$1

;Следующий цикл

 

sst

1

;CF=1

 

 

$5:

jmp

$1

;Следующий цикл

 

add

%a4,%a2

;Восстанавливается

 

 

adc

%a5

; остаток

 

 

cst

1

;CF=0

 

 

 

jmp

$1

;Следующий цикл

 

;----------------------------------

 

;подпрограммы для сохранения бита C

 

RDEC: jc

$1

 

 

 

 

dec

%a6

 

 

 

$1:

rts

%a6

 

 

 

dec

 

 

 

 

sst

1

 

 

 

 

rts

 

 

 

 

69

RBTTL:

jc

$1

 

bttl

%a2,0001b

$1:

rts

%a2,0001b

bttl

 

sst

1

 

 

rts

 

 

RBTTH:

jc

$1

 

btth

%a4,1000b

$1:

rts

%a4,1000b

btth

 

sst

1

 

 

rts

 

 

CBTTH1:

jc

.+2

 

btth

%a1,1000b

 

rts

%a1,1000b

 

btth

 

sst

1

 

 

rts

 

 

 

.END

 

;КОНЕЦ

Приложение 5. Исходный текст программы опроса датчика ускорения

#define

ta_dr

%a4

;регистр управления таймера A

#define

ta_wr

%a5

;рабочий регистр таймера

#define

pa_wr

%a1

;рабочий регистр порта А

#define

pb_wr

%a2

;рабочий регистр порта В

#define

pa_dr

%b1

;конфигурационный регистр порта А

#define

pb_dr

%b2

;конфигурационный регистр порта В

#define

datal

%c0

;младший разряд данных

#define

datah

%c1

;старший разряд данных

#define

new

%c2

;флаг появления новых данных

;---

область векторов прерываний процессора-----------------------------

 

jmp

start

;<0> Начальный пуск программы

 

nop

 

;<1> Сторожевой таймер(не используется)

 

rst

err_tmr

;<2> выход за границу стека

 

jmp

;<3> Таймер A

 

 

nop

 

;<8> не используется

 

nop

intpa

;<5> не используется

 

jmp

;<6> Порт A

(сигнальные линии)

 

nop

 

;<7> Порт B

(прерывания не используются)

 

nop

 

;<8>

 

 

nop

 

;<9>

 

 

nop

 

;<10>

 

 

nop

 

;<11>

 

 

nop

 

;<12>

 

 

nop

 

;<13>

 

 

nop

 

;<14>

 

 

rst

 

;<15>Завершение записи в ЭСППЗУ

;#######################################################: ; Точка старта программы : ;#######################################################:

start:

;инициализация портов и таймера

jsr init

70