Функции:
- буферизирование всех сигналов шины.
- селекция адреса.
К580ВА86 – двунаправленный шинный формирователь.
КР1533АП6 – двунаправленный шинный формирователь.
Iвых0 ≤ 32 мА.
Iвых1 ≤ 5 мА.
КР580ИР82 – однонаправленный регистр.
КР1533ИР33 – однонаправленный регистр.
КР1533АП6 – двунаправленный шинный формирователь.
Еав = 1 – направление передачи А В.
Еав = 0 – направление передачи В А.
= 1 – выходы в Z состоянии.
SA0 – SA9 – адреса, которые надо декодировать.
300Н – 31FH – адреса для плат расширения.
300Н – 307Н – адреса, которые будет иметь устройство сопряжения.
А9
| А8
| А7
| А6
| А5
| А4
| А3
| А2
| А1
| А0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Декодирует
дешифратор
|
|
|
|
|
|
|
|
|
|
|
Декодируется лог. элементами.
|
|
АЕN – разрешение адреса.
АЕN = 1 – прямой доступ к памяти, поэтому нужно чтобы АЕN = 0.
Набор лампочек и кнопочек:
КР580ВВ55А – адаптер.
А1
| А6
|
| Адрес
|
|
| Порт РА
| 300Н
|
|
| Порт РВ
| 301Н
|
|
| Порт РС
| 302Н
|
|
| РУС
| 303Н
|
РА – на ввод.
РВ – на вывод.
РС – на вывод.
УС: 10010000 = 90Н
Если разомкнут – не горит, если замкнут – горит.
/*svet.cpp*/
# include <stdio.h>
# include <dos.h>
# include <conio.h>
# define PA 0x300
# define PB 0x301
# define RUS 0x303
# define CW 0x90
main ( )
{
unsigned char input;
outportb (RUS, CW); //Инициализация ППА
while (!kbhit( ))
{
input = inportb (PA); //Ввод переключателя SA
outportb (PB,~input);
}
return 0;
}
K1113ПВ1 – 10-разрядный АЦП.
В/ - вход запуска.
Адрес порта запуска .
DD2 – порт ввода младшего байта (адрес ).
DD3 – порт ввода старшего байта (адрес ).
0…+10,24В напряжение.
0…3FFH адреса.
0…1024 разряды.
/*adconv.cpp*/
# include <stdio.h>
# include <dos.h>
# include <conio.h>
# define START 0x304 //адрес порта запуска
# define ADRL 0x305 //адрес порта младшего байта кода
# define ADRH 0x306 // адрес порта старшего байта кода
main ( )
{
while (!kbhit ( ))
{
unsigned code_ADC = 0; //код на выходе АЦП
unsigned char code_L;
unsigned char code_H;
float U; //напряжение на входе.
Outportb (START, 0);
While (((code_H = inportb (ADRH))&0x80)!=0);
Code_L = inportb (ADRL); //ввод младшего байта
Code_Н = inportb (ADRH); //ввод старшего байта
Code_ADC = (code_H&0x03)<<8 + code_L;
U = (float) code_ADC*10.24/1024;
Printf (“Код АЦП = % х, Напряжение = %4.2f \n”, code_ADC, U);
}
return 0;
}