1.6. .
:
, ,
(), ( ,
,
).
.
(. ) ,
.
5.
25 425 200300 |
( 10 ), , , |
, |
|
— 0,75,5 50100 2070 — 2,545 2070 — 0,11,3 |
, , , |
, |
|
20300 4,57,0 2050 70150 |
, |
, |
|
190220 120170 2540 |
, |
( )
, ,
.
, 40 .
58079
.
,
.
,
.
58079
16 .
» »
, (
).
, .
DSPB0DSPB3 ( , D0D3 ) DSPA0DSPA3 ( , D4D7).
, DSP .
«».
00,
. CLR DSP .0.
(,
)
/ » «.
.
, .
, ,
.
, (
),
. . —
,
«» .
, ,
+8 (=07)
, ,
, .
, +4, +8, +0h
(=03).
IBM-
— «Centronics»
( LPT),
.
(), , ,
, -.
IBM PC- .
Centronix, 36
( -).
:
—
,
3BCh — 3BEh;
—
, 378h — 37Ah
( ) 278h — 27Ah ( ).
—
( ); BIOS, 0:408h(LPT1)
LPT4. ,
378h.
────────────────────────────────────────────────────────────────
378h — ,
—
堠 —
,
379h 堠 :
7 6 5
4 3 2 1 0
┌──┬──┬──┬──┬──┬─┬─┬─┐
│
│ │ │
│
│X│X│X│ :
└┬─┴┬─┴┬─┴┬─┴┬─┴─┴─┴─┘
─────
│ │ │
│
└─────────>
3: 0=
│ │ │
└────────────>
4: 0=
│ │
└───────────────>
5: 1= » «
│
└──────────────────>
6: 0=
│
└─────────────────────>
7: 0= ,
37Ah / :
7
6 5 4 3
2 1 0
┌─┬─┬─┬──┬──┬──┬──┬──┐
│X│X│X│ │
│ │ │
│ :
└─┴─┴─┴┬─┴┬─┴┬─┴┬─┴┬─┘
─────
│ │ │
│ └───>
0:
│ │ │
└──────> 1: 1=
│ │ │ ( MS-DOS
│ │ │ )
│ │
└─────────>
2: 1=
│
└────────────>
3: 1= (
│
)
└───────────────>
4: 1=
,
( , ,
). ,
( ),
(16 )
,
. ,
,
.
(),
( , ).
6.
SB1SB13 |
«0»»9″, |
() |
SB14 |
«» |
|
SB15 |
«» |
|
SB16 |
«» |
,
,
.
,
.
7.
DAT0DAT7 |
+ |
+ |
|
INS/D |
+ |
— |
|
IORC |
+ |
— |
|
IOWC |
+ |
— |
|
RESET |
+ |
— |
|
PCLK |
+ |
— |
|
IRQ |
— |
— |
Turbo Pascal 7.0 MS-DOS 6.22 .
— .
. . (378h), (INS/D, IORC, IOWC, RESET, PCLK, IRQ)
(37Ah),
(379h).
8.
.
LPT |
|||||||||||||||||
37Ah |
378h |
||||||||||||||||
X |
X |
X |
INS/D |
IORC |
IOWC |
RESET |
PCLK |
DAT7 |
DAT6 |
DAT5 |
DAT4 |
DAT3 |
DAT2 |
DAT1 |
DAT0 |
||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
||||
X |
X |
X |
1 |
1 |
1 |
1 |
1 |
1 |
|||||||||
( 07) |
X |
X |
X |
1 |
1 |
1 |
1 |
||||||||||
( ) |
X |
X |
X |
1 |
1 |
1 |
1 |
1 |
|||||||||
( ) |
X |
X |
X |
1 |
1 |
||||||||||||
INT |
X |
X |
X |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|||||||
() |
X |
X |
X |
1 |
1 |
X |
X |
X |
|||||||||
() |
X |
X |
X |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
||||||
X |
X |
X |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
||||||||
X |
X |
X |
1 |
1 |
|||||||||||||
X |
X |
X |
1 |
1 |
1 |
||||||||||||
. ; ?
.
,
|
,
|
1.
580
— 58079. ( )
(
)
,
2-23 ,
.
10 ,
, , ,
.
58079
IBM PC.
, .
,
,
, ,
. ,
.
, ,
,
( )
, .
58079,
,
.
1. -,
. 8086/8088. ,
., . . , .: , 1987.
2.
. . .., , 1980.
3.
, .
{
58079
: ..}
program
KR580;
uses
crt,dos;
const
Recode: array of byte = ($01,$02,$04,$08,$10,$20,$40,$80,$03,$05,
$09,$0B,$12,$22,$42,$82);
{}
Code: array of integer = (1,2,3,3,3,4,4,5,6,6,0,0,0,0,0,0);
var
i,k:integer;
Display:array of integer;
tmp:byte;
OK : boolean;
label
NEW,AGAIN;
procedure
OutByte(portN,bte:byte);{ }
begin
case portN of
$378:
asm
mov al,bte
out $378,al
end;
$37A:
asm
mov al,bte
out $37A,al
end;
end(*case*);
Delay(10);
end;
function
InByte(portN:byte):byte;{ }
begin
case portN of
$378:
asm
in al,$378
end;
$379:
asm
in al,$379
end;
$37A:
asm
in al,$37A
end;
end(*case*);
asm
mov InByte,al
end;
Delay(10);
end;
procedure Init; { }
begin
OutByte($37A,$03); {a }
OutByte($37A,$19); { }
OutByte($378,$19);
{ }
end;
procedure Wait; { }
begin
repeat until InByte($379) 0;
end;
procedure
OutToDisplay(Symbol:integer); { }
{ }
const
Recode:array of byte =
($60,$da,$f2,$66,$b6,$be,$e0,$fe,$f6,$fc,$ee,$3e,$9c,$9e,$8c);
begin
OutByte($37A,$09);
OutByte($378,Recode);
end;
function
StatusWord:boolean;{ }
var
SW:byte;
begin
StatusWord := false;
OutByte($37A,$15);
SW := InByte($378);
if SW 0 then StatusWord := TRUE;
end;
procedure
ResetINT; {
INT}
begin
OutByte($37A,$19);
OutByte($378,$F0);
end;
procedure ResetDSPL;{ }
begin
OutByte($37A,$19);
OutByte($378,$D2);
end;
procedure
Bell;{ }
begin
Sound(1200);
Delay(1000);
NoSound;
end;
function
GetChar:byte; { }
begin
If not StatusWord then
begin
OutByte($37A,$19);
OutByte($378,$40);
OutByte($37A,$05);
GetChar := Inbyte($378);
if GetChar = 0 then
begin
OutByte($37A,$19);
OutByte($378,$41);
OutByte($37A,$05);
GetChar := Inbyte($378)+2;
end
else
begin
Bell;Bell;
WriteLN(‘ !!!’);
end;
ResetINT;
end;
begin
AGAIN:
Init;
k := 0;
repeat
begin
Wait;
tmp := GetChar;
i := 0;
repeat
inc(i);
until Recode = tmp;
inc(k);
case i of
1..13: begin
Display := i;
OutToDisplay(i);
end; {}
14: k:=16; {}
15: goto
AGAIN;{}
16: Bell; {}
end(*case*);
end;
until k=16;
for i:=0 to
16 do
if Display Code then OK :=
true; { }
if OK then Exec(‘proc.exe,»); { ,
}
goto AGAIN;
end.
Справочная информация
ДокументыЗаконыИзвещенияУтверждения документовДоговораЗапросы предложенийТехнические заданияПланы развитияДокументоведениеАналитикаМероприятияКонкурсыИтогиАдминистрации городовПриказыКонтрактыВыполнение работПротоколы рассмотрения заявокАукционыПроектыПротоколыБюджетные организацииМуниципалитетыРайоныОбразованияПрограммыОтчетыпо упоминаниямДокументная базаЦенные бумагиПоложенияФинансовые документыПостановленияРубрикатор по темамФинансыгорода Российской Федерациирегионыпо точным датамРегламентыТерминыНаучная терминологияФинансоваяЭкономическаяВремяДаты2015 год2016 годДокументы в финансовой сферев инвестиционной
Бизнес и финансы
БанкиБогатство и благосостояниеКоррупция(Преступность)МаркетингМенеджментИнвестицииЦенные бумагиУправлениеОткрытые акционерные обществаПроектыДокументыЦенные бумаги — контрольЦенные бумаги — оценкиОблигацииДолгиВалютаНедвижимость(Аренда)ПрофессииРаботаТорговляУслугиФинансыСтрахованиеБюджетФинансовые услугиКредитыКомпанииГосударственные предприятияЭкономикаМакроэкономикаМикроэкономикаНалогиАудитМеталлургияНефтьСельское хозяйствоЭнергетикаАрхитектураИнтерьерПолы и перекрытияПроцесс строительстваСтроительные материалыТеплоизоляцияЭкстерьерОрганизация и управление производством
1.6. .
:
, ,
(), ( ,
,
).
.
(. ) ,
.
5.
25 425 200300 |
( 10 ), , , |
, |
|
— 0,75,5 50100 2070 — 2,545 2070 — 0,11,3 |
, , , |
, |
|
20300 4,57,0 2050 70150 |
, |
, |
|
190220 120170 2540 |
, |
( )
, ,
.
, 40 .
58079
.
,
.
.
,
.
58079
16 .
» »
, (
).
, .
DSPB0DSPB3 ( , D0D3 ) DSPA0DSPA3 ( , D4D7).
, DSP .
«».
00,
. CLR DSP .0.
(,
)
/ » «.
.
, .
, ,
.
, (
),
. . —
,
«» .
, ,
+8 (=07)
, ,
, .
, +4, +8, +0h
(=03).
IBM-
— «Centronics»
( LPT),
.
(), , ,
, -.
IBM PC- .
Centronix, 36
( -).
:
—
,
3BCh — 3BEh;
—
, 378h — 37Ah
( ) 278h — 27Ah ( ).
—
( ); BIOS, 0:408h(LPT1)
LPT4. ,
378h.
────────────────────────────────────────────────────────────────
378h — ,
—
堠 —
,
379h 堠 :
7 6 5
4 3 2 1 0
┌──┬──┬──┬──┬──┬─┬─┬─┐
│
│ │ │
│
│X│X│X│ :
└┬─┴┬─┴┬─┴┬─┴┬─┴─┴─┴─┘
─────
│ │ │
│
└─────────>
3: 0=
│ │ │
└────────────>
4: 0=
│ │
└───────────────>
5: 1= » «
│
└──────────────────>
6: 0=
│
└─────────────────────>
7: 0= ,
37Ah / :
7
6 5 4 3
2 1 0
┌─┬─┬─┬──┬──┬──┬──┬──┐
│X│X│X│ │
│ │ │
│ :
└─┴─┴─┴┬─┴┬─┴┬─┴┬─┴┬─┘
─────
│ │ │
│ └───>
0:
│ │ │
└──────> 1: 1=
│ │ │ ( MS-DOS
│ │ │ )
│ │
└─────────>
2: 1=
│
└────────────>
3: 1= (
│
)
└───────────────>
4: 1=
,
( , ,
). ,
( ),
(16 )
,
. ,
,
.
(),
( , ).
6.
SB1SB13 |
«0»»9″, |
() |
SB14 |
«» |
|
SB15 |
«» |
|
SB16 |
«» |
,
,
.
,
.
7.
DAT0DAT7 |
+ |
+ |
|
INS/D |
+ |
— |
|
IORC |
+ |
— |
|
IOWC |
+ |
— |
|
RESET |
+ |
— |
|
PCLK |
+ |
— |
|
IRQ |
— |
— |
Turbo Pascal 7.0 MS-DOS 6.22 .
— .
. . (378h), (INS/D, IORC, IOWC, RESET, PCLK, IRQ)
(37Ah),
(379h).
8.
.
LPT |
|||||||||||||||||
37Ah |
378h |
||||||||||||||||
X |
X |
X |
INS/D |
IORC |
IOWC |
RESET |
PCLK |
DAT7 |
DAT6 |
DAT5 |
DAT4 |
DAT3 |
DAT2 |
DAT1 |
DAT0 |
||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
||||
X |
X |
X |
1 |
1 |
1 |
1 |
1 |
1 |
|||||||||
( 07) |
X |
X |
X |
1 |
1 |
1 |
1 |
||||||||||
( ) |
X |
X |
X |
1 |
1 |
1 |
1 |
1 |
|||||||||
( ) |
X |
X |
X |
1 |
1 |
||||||||||||
INT |
X |
X |
X |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|||||||
() |
X |
X |
X |
1 |
1 |
X |
X |
X |
|||||||||
() |
X |
X |
X |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
||||||
X |
X |
X |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
||||||||
X |
X |
X |
1 |
1 |
|||||||||||||
X |
X |
X |
1 |
1 |
1 |
||||||||||||
. ; ?
.
,
|
,
|
1.
580
— 58079. ( )
.
(
)
,
.
2-23 ,
.
10 ,
, , ,
.
58079
IBM PC.
, .
,
,
, ,
. ,
.
, ,
,
( )
, .
58079,
,
.
1. -,
. 8086/8088. ,
., . . , .: , 1987.
2.
. . .., , 1980.
3.
, .
{
58079
: ..}
program
KR580;
uses
crt,dos;
const
Recode: array of byte = ($01,$02,$04,$08,$10,$20,$40,$80,$03,$05,
$09,$0B,$12,$22,$42,$82);
{}
Code: array of integer = (1,2,3,3,3,4,4,5,6,6,0,0,0,0,0,0);
var
i,k:integer;
Display:array of integer;
tmp:byte;
OK : boolean;
label
NEW,AGAIN;
procedure
OutByte(portN,bte:byte);{ }
begin
case portN of
$378:
asm
mov al,bte
out $378,al
end;
$37A:
asm
mov al,bte
out $37A,al
end;
end(*case*);
Delay(10);
end;
function
InByte(portN:byte):byte;{ }
begin
case portN of
$378:
asm
in al,$378
end;
$379:
asm
in al,$379
end;
$37A:
asm
in al,$37A
end;
end(*case*);
asm
mov InByte,al
end;
Delay(10);
end;
procedure Init; { }
begin
OutByte($37A,$03); {a }
OutByte($37A,$19); { }
OutByte($378,$19);
{ }
end;
procedure Wait; { }
begin
repeat until InByte($379) 0;
end;
procedure
OutToDisplay(Symbol:integer); { }
{ }
const
Recode:array of byte =
($60,$da,$f2,$66,$b6,$be,$e0,$fe,$f6,$fc,$ee,$3e,$9c,$9e,$8c);
begin
OutByte($37A,$09);
OutByte($378,Recode);
end;
function
StatusWord:boolean;{ }
var
SW:byte;
begin
StatusWord := false;
OutByte($37A,$15);
SW := InByte($378);
if SW 0 then StatusWord := TRUE;
end;
procedure
ResetINT; {
INT}
begin
OutByte($37A,$19);
OutByte($378,$F0);
end;
procedure ResetDSPL;{ }
begin
OutByte($37A,$19);
OutByte($378,$D2);
end;
procedure
Bell;{ }
begin
Sound(1200);
Delay(1000);
NoSound;
end;
function
GetChar:byte; { }
begin
If not StatusWord then
begin
OutByte($37A,$19);
OutByte($378,$40);
OutByte($37A,$05);
GetChar := Inbyte($378);
if GetChar = 0 then
begin
OutByte($37A,$19);
OutByte($378,$41);
OutByte($37A,$05);
GetChar := Inbyte($378)+2;
end
else
begin
Bell;Bell;
WriteLN(‘ !!!’);
end;
ResetINT;
end;
begin
AGAIN:
Init;
k := 0;
repeat
begin
Wait;
tmp := GetChar;
i := 0;
repeat
inc(i);
until Recode = tmp;
inc(k);
case i of
1..13: begin
Display := i;
OutToDisplay(i);
end; {}
14: k:=16; {}
15: goto
AGAIN;{}
16: Bell; {}
end(*case*);
end;
until k=16;
for i:=0 to
16 do
if Display Code then OK :=
true; { }
if OK then Exec(‘proc.exe,»); { ,
}
goto AGAIN;
end.
3.2 КР580ВВ79 – программируемый контроллер клавиатуры и дисплея
Основные возможности микросхемы:
- Одновременная работа с клавиатурой и индикатором
- Режим сканирования контактной клавиатуры
- Режим сканирования сенсорной клавиатуры
- Режим стробируемого ввода
- Буферная память на 8 символов
- Режимы:
— блокировка одновременного нажатия
нескольких клавиш;
— независимое восприятие N клавиш.
- Устранение дребезга контактов.
- Микросхема может управлять:
— двумя цифровыми индикаторами по 8 и
16 цифр в строке;
— одним алфавитно-цифровым
индикатором на 16 символов в строке
- 16- байтное ОЗУ для хранения индицируемых знаков
- Строка-индикатор может заполняться символами как слева
направо, так и справа налево - Режимы работы задаются программно
- Частота сканирования задается программно
- По нажатию клавиши выдается прерывание.
Микросхема КР580ВВ79 – это универсальное программируемое
устройство ввода- вывода для сопряжения микропроцессора с клавиатурой и
индикаторным дисплеем.
УГО КP580BB79 приведено на рисунке 3.3.
На рисунке 3.4 представлена блок-схема программируемого интерфейса клавиатуры и дисплея КP580BB79.
Назначение каждого вывода описывается в таблице 3.2.
Одна часть микросхемы обеспечивает связь с клавиатурой,
которая может быть выполнена в виде 64-контактной клавишной матрицы либо в виде
набора сенсорных элементов. Клавиатура может быть выполнена также на основе
эффекта Холла или на основе изменения магнитной проницаемости ферритов – в этих
случаев применяется режим стробируемого ввода.
Возможны два основных варианта работа с клавиатурой:
- Запрещены (и считаются ошибочными) одновременные нажатия
нескольких клавиш. - N клавиш сканируются и воспринимаются независимо
друг от друга.
Коды нажатых клавиш освобождаются от помех, связанных с
дребезгом контактов, и заносятся в 8-байтовый буфер, организованный по принципу
FIFO – “первым записан – первым прочитан”.
Нажатия клавиш приводят к выдаче сигнала прерывания, который должен быть
заведен в микропроцессор, использующий данную микросхему.
Другая часть микросхемы КР580ВВ79 обеспечивает работу в
режиме сканирования (временного мультиплексирования) индикатора на светодиодах,
жидких кристаллах или другого распространенного типа. Можно использовать как
цифровые, так и алфавитно-цифровые индикаторы либо простые лампочки.
Микросхема КР580ВВ79 снабжена ОЗУ 16х8 бит, которое можно
использовать также и как два ОЗУ 16х4 бита. Это ОЗУ, предназначенное для
хранения воспроизводимых на индикаторе символов, может загружаться и
опрашиваться программно – процессором.
Воспроизводимая строка символов может заполняться слева
направо, как в пишущей машинке, либо справа налево, как в калькуляторе. И
чтение, и запись дисплейного ОЗУ могут выполнять с автоматическим прекращением
адреса.
Рисунок 3.3 — УГО КP580BB79
Рисунок 3.4 — Блок-схема
программируемого интерфейса клавиатуры и дисплея КР580ВВ79
Режимы ввода:
Ø Сканирование контактной клавиатуры:
— 8х8 клавиш – в режиме внешней
дешифрации столбцов клавиатуры;
— 4х8 клавиш – в режиме внутренней
дешифрации столбцов клавиатуры;
Нажатие клавиши порождает 6-битовый код, задающий положение
клавиши в матрице (3 бита – номер столбца, 3 бита – номер строки). Координата
клавиши, а также состояние CNTL и SHIFT запоминаются в буфере типа FIFO. Данные автоматически очищаются от
дребезга контактов клавиатуры. При этом возможно блокирование одновременного
нажатия клавиш или же независимое восприятие N клавиш.
Ø Сканирование матрицы сенсорных
элементов:
— 8х8 клавиш – в режиме внешней
дешифрации столбцов клавиатуры;
— 4х8 клавиш – в режиме внутренней
дешифрации столбцов клавиатуры;
Состояние клавишных ключей (разомкнутое или замкнутое)
запоминается в ОЗУ, к которому имеет доступ центральный процессор.
Ø Стробируемый ввод:
данные
с линии RL7..RL, стробируемые сигналом STB, заносятся в
буфер типа FIFO.
Режимы отображения информации:
Ø 8- или 16-символьные динамические
индикаторы, которые могут быть организованы либо как два 4-битовые, либо как
один 8-битовый.
1.1.Структура контроллера КР580ВВ79.
ОМ ОЗУ датчиков обеспечивает хранение инфомрмации, поступающей со входов RET7…RET0, и выдачу ее в микропроцессор через внутраннюю шину данных и буферы канала данных по командам чтения. В этом блоке используются следующие сигналы:
RET7…RET0 – информация, вводимая с клавиатуры или матрицы датчиков. За счет внутренних нагрузок на этих выводах постоянно обеспечивается состояние лог.1 до появления входных сигналов низкого уровня.
SH – входной сигнал, используемый в режиме сканирования клавиауры для расширения (увеличения числа) функций клавиш (вывод SH также имеет внутреннюю нагрузку.
— входной сигнал, назначение которого определяется режимом работы в режиме сканирования (состояние лог.1) увеличивает число конфигураций клавиатуры; в режиме сканирующего ввода (состояние лог.0) используется как строб для ввода информации с линий возврата RET0…RET7 в ОМ ОЗУ датчиков по фронту сигнала (вывод также имеет внутреннюю нагрузку).
INT – выходной сигнал, переходит в состояние лог.1: в режиме сканирования клавиатуры при наличии данных в ОМ ОЗУ датчиков; в режиме сканирования матрицы датчиков при обнаружении изменения в датчиках.
Схема управления и синхронизации программно задает скорость ввода-вывода и синхронизирует работу всех узлов контроллера. Необходимая скорость ввода-вывода создается от деления частоты входной синхронизации на программно задаваемое число, лежащее в диапазоне 2…31. При работе схемы используются сигналы сброс SR, тактовый С и BD, блокирующий индикатор (дисплей в момент смены кодов символов.
Счетчик сканирования – 4-разрядный двоичный счетчик сканирует строки клавиатурной матрицы и регенерирует изображения на дисплее (индикаторе). Программно счетчик можно установить в кодированный или декодированный (дешифрированный режим работы. В кодированном режиме он выдает на линии сканирования S3…S0 4-разрядный двоичный код от 00002 до 11112, который дешифрируется внешними дешифраторами; в декодированном режиме он выдает два младших разряда кода, а на линии сканирования S3…S0 4- разрядный унитарный код (активный уровень – лог.0). Внешних дешифраторов в этом случае не требуется, однако клавиатура может иметь не более четырех строк клавиш, а дисплей не более четырех знакомест при 8-разрядном коде символа и восемь знакомест при 4-разрядном коде.
Буферное ОЗУ отображения – ОЗУ с произвольным доступом, хранит коды символов, отображаемых на дисплее. Каждый байт может рассматриваться как два независимых полубайта. Это позволяет обслужить дисплей с большими функциональными возможностями – на 16 знакомест при восьмиразрядном коде символа и на 32 знакоместа при 4-разрядном коде символа. ОЗУ доступно для записи и чтения информации. Регистр адреса ОЗУ отображения может быть прогаммно установлен в режим автоинкрементирования. В процессе регенерации отображения на дисплее информация из ОЗУ отображения на дисплее циклически выдается на выходы DSPA3…DSPA0 и DSPB3…DSPB0, причем бит DSPA3 соответствует биту D7 шины данных, а DSPB0 – биту D0.
Канал спокойной музыки
Буфер канала данных – двунаправленный трехстабильный, осуществляет стыковку внутренней шины данных БИС КР580ВВ79 с системной шиной данных с помощью линий D7… D0.
Схема управления чтением-записью управляет блоками контроллера при приеме информации с системной шины данных и выдаче информации на эту шину. Для управления схемой используются следуюшие сигналы:
— разрешают проведение операций чтение-запись, выдачу информации на системную шину данных, прием информации с системной шины данных соответственно;
— определяет передачу комманд и слов сотояния (INS=1) или передачу данных (=0).