Раздел: Документация
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 {Вычисляем контрольную сумму.
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
|