Автор: Пользователь скрыл имя, 05 Января 2012 в 11:35, курсовая работа
Микропроцессорные системы в зависимости от их функционального  назначения используют различные устройства ввода и отображения (УВО) информации.
 Целью данного курсового проекта является разработка устройства ввода и отображения  информации на базе БИС КР580ВВ79.
Введение 5
       1 Описание контроллера  КР580ВВ79 6
       1.1 Структура контроллера КР580ВВ79. 7
       1.2 Связь с системной шиной 9
       1.3 Программирование 10
       1.4 Работа БИС КР580ВВ79 11
       1.5 Интерфейс клавиатуры 15
       1.6 Интерфейс дисплея. 17
       2 Описание параллельного  интерфейса ввода-вывода    ЭВМ. 20
       3 Описание разрабатываемого  устройства 22
       4 Разработка программного  обеспечения 23
       5 Выбор элементной  базы. 26
       вывод 27
       ЛИТЕРАТУРА. 28 
       ПРИЛОЖЕНИЕ  А. СХЕМА ЭЛЕКТРИЧЕСКАЯ ПРИНЦИПИАЛЬНАЯ
       ПРИЛОДЕНИЕ  б. СХЕМА ЭЛЕКТРИЧЕСКАЯ  СТРУКТУРНАЯ
       Приложение  В. программА УПРАВЛЕНИЯ СХЕМОЙ 
       ПРИЛОЖЕНИЕ  Г. АЛГОРИТМ РАБОТЫ УСТРОЙСТВА
1. Лю Ю-Чжен, Гибсон Г. Микропроцессоры семейства 8086/8088. Архитектура, программирование и проектиро вание микропроцессорных систем., Пер. с англ. , М.: Р и С, 1987г.
2. Аналоговые 
и цифровые интегральные схемы.
3. Микропроцессорные средства и системы, журнал.
{программа управления 
устройством ввода и 
program KR580;
uses crt,dos;
const Recode: array[1..16] 
of byte = ($01,$02,$04,$08,$10,$20,$40,$
                              
{код}
      
Code: array[1..16] of integer = (1,2,3,3,3,4,4,5,6,6,0,0,0,0,
var i,k:integer;
Display:array[1..16] 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[1..15] of 
byte = ($60,$da,$f2,$66,$b6,$be,$e0,$
begin
OutByte($37A,$09);
OutByte($378,Recode[Symbol]);
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;
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;
ResetINT;
end;
begin
AGAIN:
Init;
k := 0;
repeat
begin
Wait;
tmp := GetChar;
i := 0;
repeat
inc(i);
until Recode[i] = tmp;
inc(k);
case i of
0..13: begin
Display[k] := i;
OutToDisplay(i);
end; {цифры}
14: k:=16; {ВВОД}
15: goto AGAIN;{СБРОС}
end(*case*);
end;
until k=16;
for i:=0 to 16 do
end.