8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 39 40 41 42 43 44 45 ... 55

loop i=l to 25 do INBYTE

out (3fch,Y01h) blank

show(2,1,SI) Вывод на экран принятой информации. SN=sub(Sl,5,3)

blank

if (SN=836)or (SN=834) or (SN=832) then goto V115KB.

if (SN=816)or (SN=824) then goto SH. goto M

V115KB

Установка скорости 115 кбод.

loop i=l to 7 M[i] =M115 [i]

do OUTBYTE "Вывод 7-ми байт команды 115 kbod. i=l

do INBYTE!Прием ответа АСК или NAC от ADUC.

if (Ml[l]=7) OR (Ml[l]<>6) type(1 Ошибка... 1);goto M

! Инициализация СОМ-порта на 115 кбод.

out(3fbh,Y80h)! DLAB=1 для установки делителя.

out(3f8h,YOlh)! Установить мл.б. скор.:YOlh-115200 бод,У12-9600 бод.

out(3f9h,YOOh)! Установить ст.б. скор.=0.

out(3fbh,Y03h)! DLAB=0,Режим: 8 бит данных,1 стоп,нет пар.,сброс TxD.

out (3f9h, YOOh). Запрет всех прерываний по порту 3f8h.


! setcursor (4,1)

! type(Установка 115 кбод..<176> Ok<0dh,Oah>) 1220

SH show (4,1, )

show(5,l,ADUC &SN&)!<0dh,0ah>]

show(6,1,)

! type(<0dh,0ah>)

Стирание памяти микроконтроллера

loop i=l to 5 M[i]=MER[i]

do OUTBYTE .Вывод 5-ти байт команды ERASE i=l

do INBYTE!Прием ответа АСК или NAC от ADUC.

if (Ml[l]=7) OR (Ml[l]<>6) type(Ошибка... 1);go to M

type(Стирание памяти..<176> Ok<0dh,0ah>) 1220

Открываем файл file.tsk для программирования.

open(BINARY,OOh)

L=bytes(BINARY)!Длина файла в байтах,

s е t(ВINARY)!Читаем файл

next(BINARY)!файл BINARY.

type(4TeHwe файлаfile.tsk..<178> Ok<0dh,0ah>) setcursor(9,10)

type(Программирование...<0dh,0ah>1)

ADRMAX=16*int(L/16) Щелое количество строк по 16 символов в файле. LOST=L%16!Длина остатка в байтах.

LEND:=16Длина стандартного куска программирования.


if L<=16 then LEND=L.

N=l+int(L/256) k=l

setcursor(10,10) type(<176>{l6}) setcursor(10,10)

! Готовим строку для программирования.

loop ADR=0 to ADRMAX by 16.Начало цикла.

if ADR=ADRMAX then LEND=LOST. S0=

S0=sub(BIN:STR,ADR+1,LEND) Выделяем строку данных - 16 символов, i ---------------------------

NB=LEND+4ЮТ=20-дл« целых, NB=LOST+4 -для остатка.

SD=0!Вычисляем

loop i = l to LEND! сумму

SD=SD+D[i]{данных.

! ------START------ --NB-- --W1-- -ADRU......ADRM........---ADRL----

M[l] =07h;M[2] =0eh;M [3 ] =NB;M [4] =57h;M[5] =0;M[6] =int (ADR/256) ;M[7] =ADR%256 SUM=M[3]+M[4]+M[6]+M[7]+SD !Сумма байт для расчета контрольной суммы. KSUM=256 *(1 + int(SUM/256))- SUM {Вычисляем контрольную сумму.

Полный массив

для вывода

2Ь +

lb + lb+ lb +

2b +

X

+ lb =24(при1б)

START

NB W ADRU

------ADR---------

DATA

KS

07h Oeh

NB 57h 0

Ст.б.Адр. Мл.б.Адр.

D[i]

Контр.с

loop i=l+7 to (LEND+7) Загрузка массива данных для вывода. M[i] =D[i-7]

M[LEND+8]=KSUM!Загрузка контрольной суммы для вывода.



0 ... 39 40 41 42 43 44 45 ... 55