Реферат Курсовая Конспект
Література - раздел Электроника, Протокол RS-232C А.в. Гордеев, А.ю. Молчанов. Системное Програ...
|
А.В. Гордеев, А.Ю. Молчанов. Системное программное обеспечение. – СПб.: Питер, 2001.
Гук М. Аппаратные средства IBM PC. Энциклопедия, 2-е изд.– СПб.: Питер, 2001
Фаронов В.В. Турбо Паскаль 7.0. Учебное пособие. Издание 7-е, переработанное. –М.: «Нолидж», 2000
Юров В. Ю78 Assembler: специальный справочник – СПб: Питер, 2001
DOS варіант програми.
{$N+}
uses crt, dos;
const
ratebuf: array[1..10] of word = { масив дільників швидкостей }
(1047,192,96,48,24,12,6,3,2,1); {передавання}
var
com1, com2:word; { адреси портів СОМ1 та СОМ2}
t1, t2, freq: comp; { змінні для визначення часу }
inbuf: array[1..128] of byte; { буфер для отриманих байтів }
ff: TEXT;
{--------- процедура иніціалізаціїї портів ----------------}
procedure InitCom(com:word);
begin
port[com+3]:=$03; { встановлення кількості бітів даних та стоп бітів}
port[com+1]:=$01; { встановлення переривання по прйому символа}
port[com+4]:=$1F; {встановлення діагностичного режиму}
end;
{-------- процедура встановлення швидкості обміну ----------}
procedure SetRate(rate: word; com: word);
var
rr: byte;
begin
port[com+1]:=port[com+1] or $80;
port[com]:=Lo(rate); { запис молодшої частини дільника}
port[com+1]:=Hi(rate); { запис старшої частини дільника }
port[com+1]:=port[com+1] and $7F;
rr:=port[com];
rr:=port[com];
end;
{-------- процедура виведення індикатора процесу перевірки ----------------------}
procedure indicate(i: byte);
var
c: byte;
begin
gotoxy(20, WhereY); {переміщення курсору}
if odd(i) then write('/')
else write('');
end;
{--------- процедура зчитування поточного такту процесора ---}
function Timer:comp ; assembler;
asm
dw $310F {Clock to edx:eax}
mov bx, sp
db $66 ; push dx
db $66 ; push ax
db $36, $DF, $6F, $F8 {fild qword ptr ss:[bx-8]}
add sp, 8
end;
{------------ процедура передачі/прийому байта -------------------------------------}
procedure PortRT(com: word);
var
i,j, err,er: byte;
s: string;
tt1, tt2, tt:comp;
begin
err:=0; {кількість загальних помилок}
for i:=1 to 10 do
begin
indicate(i); {виведення індікатора процесу}
er:=0;
SetRate(ratebuf[i], com); {встановлення швидкості}
str(115200 div ratebuf[i], s);
writeln(ff,'rate: ', s);
tt1 := Timer; {запис кількості тактів процесора}
for j:=0 to 127 do
begin
repeat until (port[com+5] and $20) <> 0;
port[com]:=j; {передача байту}
repeat until (port[com+5] and $01) <> 0;
inbuf[j+1]:=port[com]; {прийом байту}
end;
tt2 := Timer; {запис кількості тактів процесора}
tt:= tt2-tt1; {визначення часу передачі}
write(ff,'Sent: ');
for j:=0 to 127 do
write(ff,chr(j));
writeln(ff);
write(ff,'Received: ');
for j:=1 to 128 do
begin
if(j-1) <> inbuf[j] then {порівняння прийнятої}
begin {та переданої}
inc(err); {послідовності байтів}
inc(er);
end;
write(ff,chr(inbuf[j])); {запис в файл}
end;
if er = 0 then writeln(ff,' OK')
else writeln(ff,' ',er,' errors');
writeln(ff,' time of transmition: ', tt/freq,' sec');
end;
if err=0 then writeln(' OK')
else writeln(' ',err,' errors');
end;
begin
clrscr;
t1 := Timer; {визначення}
Delay(1000); {тактової частоти}
t2 := Timer; { процесора}
freq := t2-t1;
com1:=memw[$40:$00]; {визначення адрес портів}
com2:=memw[$40:$02]; {СОМ1 та СОМ2}
if(com1=$03F8) then
writeln('COM1 presents');
if(com2=$02F8) then
writeln('COM2 presents');
assign(ff, 'result.txt'); {відкриття/створення }
rewrite(ff); {файлу для запису результатів}
writeln(ff,'COM1');
write('checking COM1...');
InitCom(com1); {перевірка}
PortRT(com1); {порту}
writeln(ff); {СОМ1}
writeln(ff);
gotoxy(wherex-1,wherey);
writeln(' ');
writeln(ff,'COM2');
write('checking COM2...'); {перевірка}
InitCom(com2); {порту}
PortRT(com2); {СОМ2}
gotoxy(wherex-1,wherey);
writeln(' ');
close(ff);
writeln('Process complit... (see result.txt)');
readln;
end.
– Конец работы –
Эта тема принадлежит разделу:
Сучасні засоби тестування ПК утіліта CheckIt... Загальні Відомості Після запуску... Під час тестування на екран виводиться індикатор стану перевірки та приблизний час що залишився до закінчення...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Література
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов