4.3. Меры безопасности при сервисном обслуживании программатора.
В лабораторном макете присутствует опасное для жизни напряжение 220 вольт 50 герц. Это напряжение питает трансформаторный блок. В остальных блоках лабораторного макета напряжения не превышают 27 вольт, что не является опасным. В блоке стабилизатора и блоке нагрузки происходит тепловыделение. Температура частей этих блоков не превышает 50оС, что не представляет опасности для человека.
Корпус блока трансформатора выполнен из диэлектрического материала. Шасси выполнено из дюралюминия. Клемма заземления шасси должна быть выведена на корпус. К этой клемме должно быть подключено заземление.
Шнур питания и вилка должны соответствовать ТУ на них, и не иметь изломов и нарушений в изоляции.
Сетевой тумблер типа ПТ2-2 (напряжение 600 вольт, ток до 2 ампер) отвечает требованиям электробезопасности.
Должны быть использованы сетевые предохранители в стандартных держателях.
Напряжения и температуры в остальных блоках лабораторного макета не представляют опасности и не требуют особых мер предосторожности.
Так как программатор взаимодействует при работе с ПЭВМ, а ПЭВМ является электроустановкой, то к ней предъявляются требования соблюдения всех параметров электробезопасности согласно ТУ на ПЭВМ. Вредными факторами для человека являются: мягкое рентгеновское излучение экрана; мерцание экрана с частотой кадровой развертки; электростатическое поле вокруг экрана; ультрафиолетовое излучение экрана.
СПИСОК ЛИТЕРАТУРЫ
Скотт Мюллер «Модернизация и ремонт персональных компьютеров», Москва, изд. «Восточная Книжная Компания», 1996г., ISBN 0-7897-0321-1 Гук «Аппаратные средства IBM PC», Санкт-Петербург, изд. «Питер Пресс», 1996г., ISBN 5-88782-036-5 Фаронов В.В. «Турбо Паскаль 7.0. Начальный курс. Учебное пособие», Москва, изд. «Нолидж», 1997г., ISBN 5-89251-012-3 М.В. Сергиевский, А.В. Шалашов «Турбо Паскаль 7.0: Язык, среда программирования», Москва, изд. «Машиностроение», 1994г., ISBN 5-217-02468- 2 Абель П. «Язык Ассемблер для IBM PC и программирования», Москва, изд. «Высшая школа», 1992г., ISBN 5-101-123447-1 Гейтс Б. «Дорога в будующее», Москва, изд. «Русская редакция», 1996г., ISBN 5-7502-0019-1 Информация с сервера www.referats.aha.ru, изд. INTERNET CD-библиотека «Все для инженера», изд. InfoLink, 1997г.
ПРИЛОЖЕНИЕ 1
ПРОГРАММНЫЙ ИНТЕРФЕЙС
Uses DOS;
Type TNT = Array[0..65534]Of Byte;
Filearray = Array[1..5000]Of String[12];
Const
U0 = Char(200);
U1 = Char(201);
U2 = Char(202);
U3 = Char(199);
U4 = Char(198);
U5 = Char(203);
U6 = Char(193);
U7 = Char(192);
Up = Char(194)+Char(195);
Uf = Char(196)+Char(185);
Us = Char(197)+Char(186);
Speed = 3;
Hex : Array[0..15]Of Char =
('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
Var
Buffer : ^TNT;
Filx : ^filearray;
Dirx : ^filearray;
Fake : ^TNT;
ScanCode: Byte;
Key : Char;
Screen : Array[0..50*90] of byte;
Segscr : Word;
Ofsscr : Word; px,py : Byte;
Clr : Byte;
MenuP : Byte;
F : File;
RomSize : Longint;
Curd : String;
RomName : String; lxul,lyul,lxdr,lydr : byte;
Procedure WaitRt; assembler;
Asm mov dx,$3da
@wa1: in al,dx test al,8 je @wa1
@wa2: in al,dx test al,8 jne @wa2
End;
Procedure Color(c1,c2 : byte);
Begin clr:=c1+16*c2;
Procedure Loc(x,y: byte);
Begin px:=x; py:=y;
Procedure WChar(c : char);
Begin screen[py*160+px+px]:=byte(c); screen[py*160+px+px+1]:=clr; inc(px);
If px=80 Then
Begin px:=0; inc(py);
If py>25 Then py:=25;
Procedure Shade(x : byte);
Var m : byte;
Begin
For m:=1 To x Do
Screen[py*160+px+px+1]:=screen[py*160+px+px+1] And $7; inc(px);
Procedure Wrt(s : string);
Var x: word;
For x:=1 To length(s) Do WChar(s[x]);
Procedure WrtLn(s : string);
For x:=1 To length(s) Do WChar(s[x]); px:=0; inc(py);
Procedure Map;
Move(screen,mem[$b800:0],80*50);
Procedure Cls;
FillChar(screen,80*50,0);
Procedure ReadKey; assembler;
Asm xor ax,ax int 16h
Function ScanKey : char;
Var x : byte;
Begin x:=255;
Asm mov ah,01 int 16h jz @nokey mov x,al mov ScanCode,ah
@nokey:
If x255 Then ReadKey;
ScanKey:=char(x);
Procedure SkipTime;
Var h,m,s,c : word; lh,lm,ls,lc : longint; abstime1,abstime2: longint;
GetTime(h,m,s,c); lh:=h; lm:=m; ls:=s; lc:=c; abstime1:=lc+(ls*100)+(lm*60*100)+(lh*60*60*100);
Repeat
GetTime(h,m,s,c); lh:=h; lm:=m; ls:=s; lc:=c; abstime2:=lc+(ls*100)+(lm*60*100)+(lh*60*60*100);
Until (abstime2abstime1);
Procedure MoveMan;
Var addr : word; a : byte; x : word;
Begin addr:=0;
For x:=0 To 80*25-1 Do
Begin a:=screen[addr];
If (a>207)And(axt1 Then dec(xf1,((xf1-xt1)Shr speed)+1);
If xf1yt1 Then dec(yf1,((yf1-yt1)Shr speed)+1);
If yf1xt2 Then dec(xf2,((xf2-xt2)Shr speed)+1);
If xf2yt2 Then dec(yf2,((yf2-yt2)Shr speed)+1);
If yf2=x1+lenx; clr:=yt;
MenuP:=yp;
Procedure HexL2Str(l : longint; var s : string);
Begin s:=hex[(l shr (4*7))and 15]; s:=s+hex[(l shr (4*6))and 15]; s:=s+hex[(l shr (4*5))and 15]; s:=s+hex[(l shr (4*4))and 15]; s:=s+hex[(l shr (4*3))and 15]; s:=s+hex[(l shr (4*2))and 15]; s:=s+hex[(l shr (4*1))and 15]; s:=s+hex[(l)and 15];
Procedure HexB2Str(l : byte; var s : string);
Begin s:=hex[(l shr 4)and 15]; s:=s+hex[(l)and 15];
Procedure MemEd(name: string);
Var x,y : word; l,l1,p,lpos : longint; s,st : string; stc : byte; size : longint; readsize : longint; bank : word; b1,b2 : byte; flag : boolean; i : searchrec;
Label Repaint, TryAgain;
TryAgain:
FindFirst(name,AnyFile,i);
If i.Attr And ReadOnly = ReadOnly Then
Begin stc:=clr; color(7,4);
MorPhL(20,7,56,15);
WindowL('File has ReadOnly Attribute!');
Menu(30,9,2,3,$4b,'Remove it','Reselect file','Exit','xxx4','xxx5',6);
If MenuP=1 Then
MenuP:=8; exit;
If MenuP=2 Then
MenuP:=0; exit;
End; clr:=stc; assign(f,name);
SetFattr(f,(i.Attr xor ReadOnly));
MorPhL(0,0,77,24);
Color(7,6);
WindowL('Memory Editor'); goto TryAgain;
Assign(f,name); reset(f,1); size:=FilesiZe(f); l1:=0; p:=0; lpos:=0; bank:=0; flag:=false;
If size>35000 Then readsize:=35000 Else readsize:=size; blockread(f,buffer^,readsize);
RePaint:
If l1 Div 32767 bank Then
If flag Then
Begin color(7,4);
MorPhL(24,7,50,14);
WindowL('Save Changed Data?');
Menu(36,9,3,2,$4b,'YES','NO','xxx3','xxx4','xxx5',6);
If MenuP=0 Then
Seek(f,lpos); blockwrite(f,buffer^,readsize);
WindowL('Memory Editor');
End; lpos:=(l1 div 32767)*32767+(l1 div 32767);
Seek(f,lpos);
If size-l1>35000 Then readsize:=35000 Else readsize:=size- l1; blockread(f,buffer^,readsize); bank:=l1 div 32767; flag:=false; end; l:=l1 and 32767;
Loc(2,1);
Wrt('address 0 1 2 3 4 5 6 7 8 9 A B C D E F
ASCII');
For x:=2 To 22 Do
Loc(2,x);
HexL2Str(l+(l1 and (32767 xor $FFFFFFFF)),s);
Wrt(s+': ');
For y:=1 to 16 do
HexB2Str(buffer^[l],s);
Wrt(s+' '); inc(l);
For y:=16 Downto 1 Do
Wrt(char(buffer^[l-y]));
End; l:=l1 and 32767;
Repeat stc:=clr; color(6,7);
HexB2Str(buffer^[l+p],s);
Loc((((p) and 15)*3)+13,(p) shr 4+2);
Wrt(s);
Loc((((p) and 15))+61,(p) shr 4+2);
Wrt(char(buffer^[l+p])); clr:=stc;
WaitKey;
Until (Key=chr(13))or(ScanCode=$49)or(ScanCode=$51)or(ScanCode=$48) or(ScanCode=$4D)or(ScanCode=$4B)or(ScanCode=$50)or(Key=chr(27))
or((Key>='0')and(Key='A')and(Upcase(Key)='0')And(Key='A')And(Upcase(Key)='0')And(Key='0')and(Key='A')and(Upcase(Key)='0')And(Key='0')And(Key='A')And(Upcase(Key)15)or(l10)then dec(p,16); if p0)or(l10)then dec(p); if p319) then begin dec(l1,320) end else l1:=0; goto
RePaint; end;
$51: begin inc(l1,320); if l1>size-336 then l1:=size-336; goto
RePaint; end; end;
Until (key=chr(13))or(Key=chr(27));
Menu(36,9,3,2,$4b,'YES','NO','','','',6);
End; close(f);
Function LowCase(s : string) : string;
Var x : integer;
LowCase:=s;
For x:=1 To length(s) Do
If (s[x]>='A')And(s[x](z-1) Then maxp:=(z-1);
For y:=curp To maxp Do
Loc(23,3+y-curp); name:=filx^[curp+(y-curp)];
For x:=17 DownTo length(filx^[curp+(y-curp)]) Do name:=name+' ';
If curps=(y-curp+1) Then color(1,2) Else color(7,1);
Wrt(' '+name);
Until
(Key=chr(13))or(ScanCode=$48)or(ScanCode=$50)or(Key=chr(27))or(ScanCod e=82);
Case ScanCode Of
$50: inc(curps);
$48: dec(curps);
82:
MOrPhL(10,10,40,15);
WindowL('Input File Name .ROM'); y :=1; zs:=' ';
Loc(22,12);
Wrt('-');
Loc(21+y,12);
If (Keychr(13))And(Keychr(27)) Then
If (Keychr(08)) Then
If y9 Then
Begin zs[y]:=Key;
Wrt(key+'-'); inc(y);
End
Else
If y1 Then
Begin dec(y);
Loc(21+y,12); zs[y]:=' ';
Wrt('- ');
Until (Key=Chr(13))or(Key=chr(27));
MorPhL(20,8,50,12);
Color(7,4);
WindowL('!!!!!!!!!!!!');
Loc(30,10);
Wrt('Жди давай!'+chr(208));
Map;
Assign(f,zs+'.ROM');
Rewrite(f); y:=$FF;
For pos:=1 To romsize Do Write(f,byte(y)); close(f);
Key:=chr(255);
ScanCode:=0; color(7,1);
MorPhL(20,2,50,22);
WindowL('Выберите файл'); s:='';
Goto RePaint;
If curps>(z-1) Then curps:=(z-1);
If (curps>18) Then
Begin curps:=18;
If curp65535 Then y:=65535;
BlockRead(fi,buffer^,y);
BlockWrite(fo,buffer^,y); rsz:=rsz-y;
Until rsz=0;
Close(fi);
Close(fo);
MenuP:=5;
1:
MenuP:=1;
MorPhL(20,2,50,22); color(7,1);
WindowL('Выберите файл');
FFile(s);
If s'' Then
WindowL('Редактировение прошивки');
MemEd(s);
MorPhL(24,7,60,14);
WindowL('Прошить ПЗУ?');
Menu(40,9,3,2,$4b,'YES','NO','xxx3','xxx4','xxx5',6);
MorPhl(22,7,50,11);
Color(7,1);
WindowL('Прошиваем ПЗУ');
Loc(24,9);
Wrt('-------------------------');
For l:=0 To romsize Do
Loc(24+(l*24 div romsize),9);
Wrt ('-'+chr(208));
Color (3,1);
ReadROM(l);
Until MenuP8; end;
2:
MorPhl(22,7,50,11); color(7,1);
WindowL('Тестируем программатор');
For l:=0 To 1000 Do
Loc(24+(l*24 div 1000),9);
Loc(23,9);
Wrt(chr(209)+' Все в порядке, аднака '); waitkey;
End; end;
Until MenuP=3;
MenuP:=5; end;
MorPhL(9,2,70,23); color(7,0);
WindowL('О программе');
Loc(10,10);
For x:=1 To 60 Do Wrt(chr(210));
Loc(12,4);
Wrt('Дипломный проект "Лабораторный макет программатора ПЗУ"');
Loc(11,6);
Wrt('Это программка была написана в среде Borland Pascal v7.0');
Loc(13,8);
Wrt('Программа расчита на роботу с 2 типами микросхем ПЗУ');
Loc(36,12);
Wrt('Авторы:');
Loc(11,14);
Wrt('Идея и текст программы:');
Loc(25,15);
Wrt('Дмитрий В. Румянцев');
Loc(11,17);
Wrt('Помощь в написание программы:');
Loc(25,18);
Wrt('Dead Emotion //HellraiseR Group');
Loc(11,20);
Wrt('Тестирование программы:');
Loc(25,21);
Wrt('Алексек А. Иванов');
MenuP:=5; end; end until MenuP=3;
MorPhL(13,7,13,7); asm mov ax,3 int 10h end; end.
Страницы: 1, 2, 3, 4, 5