Рефераты. Программатор ПЗУ (программный интерфейс) p> При одновременном нахождении в помещениях УВЦ технических и периферийных устройств ПЭВМ, программистов и операторов вычислительных систем, когда температура внешней среды выше +25 оС, допустимая температура воздуха в помещениях не должна превышать +31...+33 оС со значительным избытком тепла от ПЭВМ. При длительном воздействии повышенной температуры происходит нарушение водно-солевого, белкового и витаминного обменов в организме студентов УВЦ. В результате наступает расслабление организма учащихся, снижение внимания и скорости восприятия с устройств отображения информации.

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;

End;

Procedure Loc(x,y: byte);

Begin px:=x; py:=y;

End;

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;

End;

End;

Procedure Shade(x : byte);

Var m : byte;

Begin

For m:=1 To x Do

Begin

Screen[py*160+px+px+1]:=screen[py*160+px+px+1] And $7; inc(px);

If px=80 Then

Begin px:=0; inc(py);

If py>25 Then py:=25;

End;

End;

End;

Procedure Wrt(s : string);

Var x: word;

Begin

For x:=1 To length(s) Do WChar(s[x]);

End;

Procedure WrtLn(s : string);

Var x: word;

Begin

For x:=1 To length(s) Do WChar(s[x]); px:=0; inc(py);

If py>25 Then py:=25;

End;

Procedure Map;

Begin

Move(screen,mem[$b800:0],80*50);

End;

Procedure Cls;

Begin

FillChar(screen,80*50,0);

End;

Procedure ReadKey; assembler;

Asm xor ax,ax int 16h

End;

Function ScanKey : char;

Var x : byte;

Begin x:=255;

Asm mov ah,01 int 16h jz @nokey mov x,al mov ScanCode,ah

@nokey:

End;

If x255 Then ReadKey;

ScanKey:=char(x);

End;

Procedure SkipTime;

Var h,m,s,c : word; lh,lm,ls,lc : longint; abstime1,abstime2: longint;

Begin

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);

End;

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;

End;

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];

End;

Procedure HexB2Str(l : byte; var s : string);

Begin s:=hex[(l shr 4)and 15]; s:=s+hex[(l)and 15];

End;

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;

Begin

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

Begin

MenuP:=8; exit;

End;

If MenuP=2 Then

Begin

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;

End;

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

Begin

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

Begin

Seek(f,lpos); blockwrite(f,buffer^,readsize);

End;

MorPhL(0,0,77,24);

Color(7,6);

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

Begin

Loc(2,x);

HexL2Str(l+(l1 and (32767 xor $FFFFFFFF)),s);

Wrt(s+': ');

For y:=1 to 16 do

Begin

HexB2Str(buffer^[l],s);

Wrt(s+' '); inc(l);

End;

For y:=16 Downto 1 Do

Begin

Wrt(char(buffer^[l-y]));

End;

End; l:=l1 and 32767;

Repeat

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));

If flag Then

Begin color(7,4);

MorPhL(24,7,50,14);

WindowL('Save Changed Data?');

Menu(36,9,3,2,$4b,'YES','NO','','','',6);

If MenuP=0 Then

Begin

Seek(f,lpos); blockwrite(f,buffer^,readsize);

End;

End; close(f);

End;

Function LowCase(s : string) : string;

Var x : integer;

Begin

LowCase:=s;

For x:=1 To length(s) Do

Begin

If (s[x]>='A')And(s[x](z-1) Then maxp:=(z-1);

For y:=curp To maxp Do

Begin

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);

End;

Repeat

WaitKey;

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:

Begin

MOrPhL(10,10,40,15);

WindowL('Input File Name .ROM'); y :=1; zs:=' ';

Loc(22,12);

Wrt('-');

Repeat

WaitKey;

Loc(21+y,12);

If (Keychr(13))And(Keychr(27)) Then

If (Keychr(08)) Then

Begin

If y9 Then

Begin zs[y]:=Key;

Wrt(key+'-'); inc(y);

End;

End

Else

If y1 Then

Begin dec(y);

Loc(21+y,12); zs[y]:=' ';

Wrt('- ');

End;

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;

End;

End;

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);

End;

End;

End;

MenuP:=5;

End;

1:

Begin

Repeat

MenuP:=1;

MorPhL(20,2,50,22); color(7,1);

WindowL('Выберите файл');

FFile(s);

If s'' Then

Begin

MorPhL(0,0,77,24);

Color(7,6);

WindowL('Редактировение прошивки');

MemEd(s);

Color(7,4);

MorPhL(24,7,60,14);

WindowL('Прошить ПЗУ?');

Menu(40,9,3,2,$4b,'YES','NO','xxx3','xxx4','xxx5',6);

If MenuP=0 Then

Begin

MorPhl(22,7,50,11);

Color(7,1);

WindowL('Прошиваем ПЗУ');

Loc(24,9);

Wrt('-------------------------');

For l:=0 To romsize Do

Begin

Loc(24+(l*24 div romsize),9);

Wrt ('-'+chr(208));

Color (3,1);

Map;

ReadROM(l);

End;

End;

End;

Until MenuP8; end;

2:

Begin

MorPhl(22,7,50,11); color(7,1);

WindowL('Тестируем программатор');

Loc(24,9);

Wrt('-------------------------');

For l:=0 To 1000 Do

Begin

Loc(24+(l*24 div 1000),9);

Wrt ('-'+chr(208));

Color (3,1);

Map;

End;

Loc(23,9);

Wrt(chr(209)+' Все в порядке, аднака '); waitkey;

End; end;

Until MenuP=3;

MenuP:=5; end;

2:

Begin

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('Алексек А. Иванов');

WaitKey;

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



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.