Контроллер клавиатуры и дисплея К 580 ВВ 79 (Intel 8279)

Контроллер ВВ79 - это программируемое устройство сопряжения микропроцессора с клавиатурой и дисплеем на основе семисегментных светодиодных индикаторов. ВД79 может быть подключен к матрице клавиш 8х8+2 или матрице 8х8 датчиков и имеет память кодов нажатых клавиш на 8 байт, а также память дисплея на 16 байт.

Контроллер ВД79 освобождает микропроцессор от задач постоянного сканирования клавиатуры и поддержания изображения на дисплее.

В процессе выполнения программы периодически опрашивается слово состояния контроллера с целью определения состояния клавиатуры.

В случае, если датчик замкнут или нажато более 0 клавиш, осуществляется выборка данных из внутреннего буфера клавиатуры.

Для вывода данных на дисплей используется следующий формат управляющего слова.

 

13 Лекция 14 – Однокристальный 16-и разрядный процессор К 1810 ВМ 86

Процессор К 1810 ВМ 86 является аналогом процессора 8086 компании Intel, на базе которого был построен первый персональный компьютер IBM PC XT.

Микросхема K1810ВМ86 представляет собой однокристальный 16-битовый МП, выполненный по высококачественной n-МОП-технологии. Процессор содержит около 29000 транзисторов и потребляет 1,7 Вт от источника питания 5B. Частота работы может достигать 25 МГц. Основное отличие от процессора ВМ80 – регистр-регистровая логика, предусматривающая совершение арифметических и логических операций не над аккумулятором, а над любым регистром. Это сокращает число операций пересылки данных из регистров в аккумулятор, упрощает и ускоряет программу.

Микропроцессор K1810BM86 (далее обозначен для краткости ВМ86) содержит 14 16-битовых внутренних регистров и образует 16-битовую шину данных для связи с внешней памятью и портами ввода—вывода. Шина адреса имеет 20 линий, что позволяет непосредственно адресоваться к памяти емкостью до 1 Мбайт. Пространство памяти разделяется на сегменты по 64 Кбайт. Для адресации ячейки памяти используется комбинированный вариант: [номер сегмента]:[адрес в сегменте].

При этом выводы ST3, ST4 используются для указания регистра процессора, в котором содержится номер сегмента памяти.

S4 S3 Сегментный регистр
0 0 ES
0 1 SS
1 0 CS
1 1 DS

 

В процессоре ВМ86 реализована многоуровневая система прерываний с числом прерываний 256.

Чтобы снизить число выводов микросхемы-процессора, используется совмещенная шина адреса/шина данных. При этом принцип работы процессора следующий. Процессор записывает в специальную микросхему – регистр адресную информацию, а затем переключается в режим ввода/вывода данных по шине данных.

Укрупненная структурная схема МП ВМ86 содержит две относительно независимые части: операционное устройство, реализующее заданные командой операции, и устройство шинного интерфейса, осуществляющее выборку команд из памяти, а также обращение к памяти и внешним устройствам для считывания операндов и записи результатов. Оба устройства могут работать параллельно, что обеспечивает совмещение во времени процессов выборки и исполнения команд.

Операционное устройство МП содержит группу общих регистров, арифметико-логическое устройство (АЛУ), регистр флагов F и блок управления.

Процессор содержит восемь 16-битовых регистров общего назначения. Среди них выделяют регистры АХ, ВХ, СХ, DX, используемые прежде всего для хранения данных, и регистры SP, BP, SI, DI, которые хранят главным образом адресную информацию. Особенностью регистров АХ, ВХ, СХ, DX является то, что они допускают раздельное использование их младших байтов AL, BL, CL, DL и старших байтов АН, ВН, СН, DH. Тем самым обеспечивается возможность обработки как слов, так и байтов и создаются необходимые условия для программной совместимости ВМ86 и ВМ80.

Примеры использования регистров.

MOV AX, CS: [BX] — пересылка в АХ слова из кодового сегмента CS со смещением из BX;

ADD ES: [DI], BL — сложение байта из дополнительного сегмента с содержимым регистра BL и размещение результата в ОЗУ на место первого слагаемого.

Управляющее устройство (УУ) дешифрует команды, а также воспринимает и вырабатывает необходимые управляющие сигналы. В его состав входит блок микропрограммного управления, в котором реализовано программирование МП на микрокомандном уровне.

Устройство шинного интерфейса (или просто шинный интерфейс) содержит блок сегментных регистров, указатель команд, сумматор адресов, очередь команд и буферы, обеспечивающие связь с шиной. Шинный интерфейс выполняет операции обмена между МП и памятью или портами ввода — вывода по запросам операционного устройства.

14 Лекция 15 – История развития микропроцессоров производства компании Intel

Компания Intel приступила к созданию своего первого микропроцессора в 1969 г. в рамках проекта по разработке набора микросхем для семейства программируемых калькуляторов по заказу одной из японских компаний.

Первоначальный план работ предполагал создание 12 специализированных чипов. Однако инженера компании Intel разработали концепцию универсального логического устройства, которая и легла в основу первого процессора

Изначально Busicom приобрела права на микропроцессор, заплатив Intel 60 тыс. дол. США. Осознав тот огромный потенциал, который скрывал в себе “интеллектуальный” чип, Intel вернула Busicom деньги, а себе — права на микропроцессор.

После этого процессор был разработан в виде коммерческого образца, и под обозначением 4004 представлен миру. Основное назначение процессора – применение в калькуляторах. Процессор был представлен в 1971 году, имел 2300 транзисторов и имел рабочую частоту 108 КГц. Стоимость процессора составляла 200 долл. США.

Уже в 1972 году был представлен более мощный процессор 8008, на базе которого был построен первый персональный компьютер Mark-8. Тактовая частота процессора составляла 200 КГц, а число транзисторов достигало 3500 штук.

Следующий процессор – 8080 (580 ВМ80А) был представлен на рынок в 1974 году. Он лег в основу первого массового персонального компьютера Altair. Спрос на компьютер оказался столь высок, что копания Intel впервые столкнулась с неспособностью удовлетворить рыночные запросы. Процессор имел 6000 транзисторов, и мог работать на частоте до 2 МГц.

Поворотным моментом в истории развития микропроцессорной техники стал микропроцессор 8086, система команд которого до сих пор лежит в основе всех современных процессоров компании Intel. На базе этого процессора компанией IBM был разработан персональный компьютер PC XT, который с небольшими изменениями дожил до наших дней. Процессор был представлен на рынок в 1978 году, насчитывал 29 тыс. транзисторов, и мог работать с частотой 5, 8 и 10 МГц.

Следующим значимым шагом стало появление в 1982 году процессора 80286, производительность и возможности которого серьезно подхлестнули развитие рынка графических систем и компьютерных игр. Процессор имел 134 тыс. транзисторов, и работал на частотах 6, 8, 10 и 12 МГц.

В 1985 году был разработан процессор 80386, который стал первым 32-х разрядным процессором в мире с поддержкой многозадачности. Именно процессор 80386 был необходимым элементом новой графической операционной системы компании Microsoft, получившей название Windows 3.0. Процессор состоял из 275 тыс. транзисторов, и работал на частотах 16, 20, 25, 33 и 40 МГц.

Следующим процессором стал 80486, представленный в 1989 году. Данный процессор включал в себя математический сопроцессор, существенно ускоряющий выполнение сложных математических операций. Также компанией Intel были выпущены процессоры 486DX2, и 486DX4, функционирующие на частотах вдвое и вчетверо больших, чем остальные устройства. Процессор состоял из 1,2 млн. транзисторов и работал на частотах 33, 40, 66, 100 МГц.

В 1993 году был представлен процессор нового поколения – Pentium, который некоторое время носил индекс 80586. Процессор позволил на качественно новом уровне вести обработку речи, видео, рукописного ввода и пр. Для того, чтобы полностью задействовать возможности нового процессора, компания Microsoft выпустила качественно новую операционную систему – Windows 95. Процессор пентиум насчитывал 3,3 млн. транзисторов и работал на частотах от 60 до 233 МГц.

Через очередные четыре года, в 1997 году был разработан процессор Pentium II, насчитывающий 7,5 млн. транзисторов. Он не имел принципиальных отличий от предыдущего процессора, но позволял строить системы с рабочими частотами от 233 до 450 МГц.

В 1998 году были выпущены облегченные версии процессоров Pentium II, получившие название Celeron. Несмотря на отсутствие ряда функций, данные процессоры позволяли работать на частотах от 450 МГц до 1,2 ГГц, и насчитывали от 19 млн. транзисторов.

Процессор Pentium III был представлен в 1999 году. Этот процессор также работал на частотах от 450 МГц до 1,2 ГГц, но имел 28 млн. транзисторов. Процессор впервые был снабжен специальным набором команд, предназначенных для обработки трехмерной графики и графических образов.

В 2000 году был представлен процессор Pentium IV, насчитывающий 42 млн. транзисторов. Это стал первый в истории процессор, скорость работы которого достигла 2 ГГц и 3 ГГц. Помимо высокой скорости работы, данный процессор не имел принципиальных отличий от Pentium III. Линейка процессоров Pentium IV функционирует на частотах от 1,1 до 3 ГГц.

В следующей таблице представлены основные этапы развития микропроцессорной техники и персональных компьютеров.

Процесссор Год выпуска Число транзисторов, млн. штук Рабочие частоты Объем ОЗУ типового ПК, МБайт Объем жесткого диска типового ПК События
0,0023 108 КГц 16 байт - Калькулятор
0,0035 200 КГц 0,065 -  
0,006 2 МГц 0,065 - Появление домашних ПК
0,029 5-10 МГц 0,64 IBM PC XT
0,134 6-12 МГц IBM PC AT
0,275 16-40 МГц 40-120 Windows 3.0
1,2 25-100 МГц 4-16 120-340 3D процессоры
Pentium 3,3 60-200 МГц 16-32 270-640 Windows 95
Pentium II 7,5 233-450 МГц 32-128 1-8 Гбайт Резкое удешевле-ние комплект.
Celeron 266-1200 МГц 64-128 20-40 Гбайт  
Pentium III 450-1200 МГц 128-256 20-40 Гбайт Windows 2000
Pentium IV 1,1-3 ГГц 256-512 60-160 Гбайт Windows XP

 

15 Приложение – Система команд микропроцессора К580


Команда Код Описание
ADD A A<-(A) + (A)
ADD B A<-(B) + (A)
ADD C A<-(C) + (A)
ADD D A<-(D) + (A)
ADD E A<-(E) + (A)
ADD H A<-(H) + (A)
ADD L A<-(L) + (A)
ADD M A<-Loc(HL) + (A)
ADI d8 C6 A<-d8 + (A)
ADC A 8F A<-(A) + (A) + CY
ADC B A<-(B) + (A) + CY
ADC C A<-(C) + (A) + CY
ADC D 8A A<-(D) + (A) + CY
ADC E 8B A<-(E) + (A) + CY
ADC H 8C A<-(H) + (A) + CY
ADC L 8D A<-(L) + (A) + CY
ADC M 8E A<-Loc(HL) + (A) + CY
ACI d8 CE A<-d8 + (A) + CF
ANA A A7 Проверка A
ANA B A0 Логическое И B с A
ANA C A1 Логическое И C с A
ANA D A2 Логическое И D с A
ANA E A3 Логическое И E с A
ANA H A4 Логическое И H с A
ANA L A5 Логическое И L с A
ANA M A6 Логическое И Loc(HL) с A
ANI d8 E6 Логическое И непосредственные данные с A
CALL a16 CD Передать управление подпрограмме по адресу aa
CZ a16 CC Вызвать подпрограмму по адресу aa, если нуль
СNZ a16 C4 То же, если не нуль
СP a16 F4 То же, если плюс
СM a16 FC То же, если минус
CC a16 DD То же, если перенос
CNC a16 D4 То же, если нет переноса
CPE a16 EC То же, если четно
CPO a16 E4 То же, если нечетно
CMA 2F Инвертировать A
CMC 3F Инвертировать перенос
CMP A BF Установить флаг FZ
CMP B B8 Сравнить A с B
CMP C B9 Сравнить A с C
CMP D BA Сравнить A с D
CMP E BB Сравнить A с E
CMP H BC Сравнить A с H
CMP L BD Сравнить A с L
CMP M BE Сравнить A с Loc(HL)
CPI d8 FC Сравнить A с непосредственными данными, заданными в команде
DAD B Сложить BC с HL
DAD D Сложить DE с HL
DAD H Сложить HL с HL (удвоение HL)
DAD SP Сложить SP с HL
DCR A 3D A<-(A) - 1 (декремент A)
DCR B B<-(B) - 1
DCR C 0D C<-(C) - 1
DCR D D<-(D) - 1
DCR E 1D E<-(E) - 1
DCR H H<-(H) - 1
DCR L 2D L<-(L) - 1
DCR M 3D Loc (HL)<-(Loc(HL)) -1
DCX B 0B BC<-(BC) - 1
DCX D 1B DE<-(DE) -1
DCX H 2B HL<-(HL) - 1
DCX SP 0B SP<-(SP) -1
DI F3 Запретить прерывания
EI FB Разрешить прерывания
HLT Останов процессора
IN pp DB Ввести данные из порта pp
INR A 3C A<-(A) + 1 (инкрементировать A)
INR B Инкрементировать B
INR C 0C Инкрементировать C
INR D 3C Инкрементировать D
INR E 3C Инкрементировать E
INR H 3C Инкрементировать H
INR L 3C Инкрементировать L
INR M Инкрементировать содержимое Loc(HL)
INX B Инкрементировать BС
INX D Инкрементировать DE
INX H Инкрементировать HL
INX SP Инкрементировать SP
JMP a16 C3 Перейти по адресу a16
JZ a16 CA То же, если нуль
JNZ a16 C2 То же, если не нуль
JP a16 F2 То же, если плюс
JM a16 FA То же, если минус
JC a16 DA То же, если перенос
JNC a16 D2 То же, если нет переноса
JPE a16 EA Перейти по адресу a16, если паритет четный
JPO a16 E2 Перейти по адресу a16, если паритет нечетный
LDA aaaaa 3A Загрузить A из ячeйки с адресом a16
LDAX B 0A Загрузить A из ячeйки с адресом Loc(BC)
LDAX D 1A Загрузить A из ячeйки с адресом Loc(DE)
LHLD a16 2A Загрузить в HL содержимое ячейки с адресом a16
LXI B,d16 Загрузить в BC непосредственные данные d16
LXI H,d16 Загрузить в HL непосредственные данные d16
LXI SP,d16 Загрузить в SP непосредственные данные d16
MOV A,B Переслать из A в B (B<-(A) )
MOV A,C Переслать из A в C
MOV A,D 7A Переслать из A в D
MOV A,E 7B Переслать из A в E
MOV A,H 7C Переслать из A в H
MOV A,L 7D Переслать из A в L
MOV A,M 7E Переслать из A в Loc(HL)
MOV B,A Переслать из B в A
MOV B,C Переслать из B в C
MOV B,D Переслать из B в D
MOV B,E Переслать из B в E
MOV B,H Переслать из B в H
MOV B,L Переслать из B в L
MOV B,M Переслать из B в Loc(HL)
MOV C,A 4F Переслать из C в A
MOV C,B Переслать из C в B
MOV C,D 4A Переслать из C в D
MOV C,E 4B Переслать из C в E
MOV C,H 4C Переслать из C в H
MOV C,L 4D Переслать из C в L
MOV C,M 4E Переслать из C в Loc(HL)
MOV D,A Переслать из D в A
MOV D,B Переслать из D в B
MOV D,C Переслать из D в C
MOV D,E Переслать из D в E
MOV D,H Переслать из D в H
MOV D,L Переслать из D в L
MOV D,M Переслать из D в Loc(HL)
MOV E,A 5F Переслать из E в A
MOV E,B Переслать из E в B
MOV E,C Переслать из E в C
MOV E,D 5A Переслать из E в D
MOV E,H 5C Переслать из E в H
MOV E,L 5D Переслать из E в L
MOV E,M 5E Переслать из E в Loc(HL)
MOV H,A Переслать из H в A
MOV H,B Переслать из H в B
MOV H,C Переслать из H в C
MOV H,D Переслать из H в D
MOV H,E Переслать из H в E
MOV H,L Переслать из H в L
MOV H,M Переслать из H в Loc(HL)
MOV L,A 6F Переслать из L в A
MOV L,B Переслать из L в B
MOV L,C Переслать из L в C
MOV L,D 6A Переслать из L в D
MOV L,E 6B Переслать из L в E
MOV L,H 6C Переслать из L в H
MOV L,M 6E Переслать из L в Loc(HL)
MOV M,A Переслать из M в A
MOV M,B Переслать из M в B
MOV M,C Переслать из M в C
MOV M,D Переслать из M в D
MOV M,E Переслать из M в E
MOV M,H Переслать из M в H
MOV M,L Переслать из M в L
MVI A,d8 3E Переслать d8 в A
MVI B,d8 Переслать d8 в B
MVI C,d8 0E Переслать d8 в C
MVI D,d8 Переслать d8 в D
MVI E,d8 1E Переслать d8 в E
MVI H,d8 Переслать d8 в H
MVI L,d8 2E Переслать d8 в L
MVI M,d8 Переслать d8 в Loc(HL)
NOP  
ORA A B7 Проверить A и сбросить перенос
ORA B B0 Логичеcкая операция B ИЛИ A
ORA C B1 Логичеcкая операция C ИЛИ A
ORA D B2 Логичеcкая операция D ИЛИ A
ORA E B3 Логичеcкая операция E ИЛИ A
ORA H B4 Логичеcкая операция H ИЛИ A
ORA L B5 Логичеcкая операция L ИЛИ A
ORA M B6 Логичеcкая операция M ИЛИ A
ORI d8 F6 Логичеcкая операция d8 ИЛИ A
OUT pp D3 Записать A в порт pp
PCHL E9 Передать управление по адресу в HL
POP B C1 Извлечь слово из стека в BC
POP D D1 Извлечь слово из стека в DE
POP H E1 Извлечь слово из стека в HL
POP PSW F1 Извлечь слово из стека в PSW
PUSH B C5 Поместить в стек содержимое BC
PUSH D D5 Поместить в стек содержимое DE
PUSH H E5 Поместить в стек содержимое HL
PUSH PSW F5 Поместить в стек содержимое PSW
RAL Циклический сдвиг CY + A влево
RAR 1F Циклический сдвиг CY + A вправо
RLG Сдвинуть A влево на один разряд с переносом
RRG 0F Сдвинуть A вправо на один разряд с переносом
RIM Считать маску прерывания (в 8085)
RET C9 Возврат из подпрограммы
RZ C8 Возврат из подпрограммы, если FZ=0
RNZ C0 Возврат из подпрограммы, если FZ=1
RP F0 Возврат из подпрограммы, если FP=1
RM F8 Возврат из подпрограммы, если FP=0
RC D8 Возврат из подпрограммы, если FC=1
RNC D0 Возврат из подпрограммы, если FC=0
RPE E8 Возврат из подпрограммы, если паритет четный
RPO E0 Возврат из подпрограммы, если паритет нечетный
RST 0 C7 Запуск программы с адреса 0
RST 1 CF Запуск программы с адреса 8h
RST 2 D7 Запуск программы с адреса 10h
RST 3 DF Запуск программы с адреса 18h
RST 4 E7 Запуск программы с адреса 20h
RST 5 EF Запуск программы с адреса 28h
RST 6 F7 Запуск программы с адреса 30h
RST 7 FF Запуск программы с адреса 38h
SPHL F9 Загрузить SP из HL
SHLD a16 Записать HL по адресу a16
STA a16 Записать A по адресу a16
STAX B Записать A по адресу Loc(BC)
STAX D Записать A по адресу Loc(DE)
STC Установить флаг переноса (CF=1)
SUB A 9F Вычесть А из А (очистить А)
SUB B Вычесть B из А
SUB C Вычесть C из А
SUB D 9A Вычесть D из А
SUB E 9B Вычесть E из А
SUB H 9C Вычесть H из А
SUB L 9D Вычесть L из А
SUB M 9E Вычесть M из А
SUI d8 DE Вычесть d8 из А
SBB A 9F Вычесть А из А (очистить А)
SBB B Вычесть c заемом B из А
SBB C Вычесть c заемом C из А
SBB D 9A Вычесть c заемом D из А
SBB E 9B Вычесть c заемом E из А
SBB H 9C Вычесть c заемом H из А
SBB L 9D Вычесть c заемом L из А
SBB M 9E Вычесть c заемом M из А
SBI d8 DE Вычесть c заемом d8 из А
XCHG EB Обмен содержимым DE и HL
XTHL E3 Обмен содержимого вершины стека с содержимым HL
XRA A AF Исключающее ИЛИ A с A (очистка A)
XRA B A8 Исключающее ИЛИ B с A
XRA C A9 Исключающее ИЛИ C с A
XRA D AA Исключающее ИЛИ D с A
XRA E AB Исключающее ИЛИ E с A
XRA H AC Исключающее ИЛИ H с A
XRA L AD Исключающее ИЛИ L с A
XRA M AE Исключающее ИЛИ Loc(HL) с A
XRI d8 EE Исключающее ИЛИ d8 с A