ВСТУП
Основним символом сучасного, наукового та технічного світу є комп’ютер, саме за допомогою комп’ютера вирішуються усі сучасні задачі у промисловості (розробка нових типів автомобілів, побутових приладів, моделювання різних типів задач за допомогою комп’ютера), медицини (для зменшення ризику травмування пацієнта під час операції, майбутніх лікарів тренують за допомогою спеціальних програм імітуючи процес операції на певній ділянці тіла). Сучасна комп’ютерна техніка представляє потужний інструмент для розробки та реалізації задач, які направлені на поліпшення життя людей, як у містах, так і в цілому у державі. За допомогою спеціальних програм стає можливим визначення вигідного життєвого комплексу по відношенню до інших будівель, кліматичних умов, особливостей рельєфу місцевості. За допомогою конструктивних програм можливо спрямовувати розташування невеликого міста або селища на місцевості, яке згодом буде побудоване знову ж за допомогою комп’ютерних машин. Національні банки різних держав можуть прогнозувати розвиток національної економіки, шукаючи шляхи до найвигіднішого вкладання коштів на майбутні роки, передбачення застійних явищ в економіці та пошук шляхів їх уникнення.
Основним завданням кожного комп’ютера є передача та прийом даних, яку можна прослідкувати в даній курсовій роботі в режимі 1 за допомогою програмованого паралельного інтерфейсу вводу-виводу І8255.
1 ПРИЗНАЧЕННЯ І ОБЛАСТЬ ВИКОРИСТАННЯ
Кожен елемент системи повинен так чи інакше бути з’єднаним з іншими пристроями, інакше система просто-напросто не буде працювати. В мікропроцесорній техніці цю роль виконують ВІС паралельного інтерфейсу. Завдяки даній мікросхемі ЦП отримує дані, які потрібно опрацювати і керує їхньою подальшею долею та підтримує функціонування системи вцілому. Яскравим прикладом такого пристрою є І8255.
І8255 – це мікросхема контролера програмованого паралельного інтерфейсу, створена у 1976 році. Спочатку дана мікросхема була розроблена для мікропроцесора американської фірми Intel, а саме для моделі Intel 8085. Використовувалась в різних моделях комп’ютерів, спільно з Intel 8086, Z-80 й іншими процесорами.
І8255 має 3 восьмирозрядні канали вводу-виводу, восьмирозрядний канал для підключення по шині даних, 2 адресних входи. Третій канал вводу-виводу може бути розділений на два по 4 біти.
Щоб докладніше розібратись з принципом дії мікросхеми, пропоную розглянути її блок-схему, зображеної на рис.1.1.
На мікросхему І8255 покладено дуже багато. Основним завданням є посилання та прийом сигналів від зовнішніх пристроїв.
Рисунок 1.1 – Блок схема адаптера
Основними сигналами та елементами є:
D0…D7 – лінії даних
REZET – апаратне скидання
CS/ – вибір корпусу ВІС
RD – вхід керування введенням
WR/ – вихід керування висновком
А0, А1 – адреса порту
РА0…РА7 – порт А
РВ0…РВ7 – порт В
РС0…РС7 – порт С
2. ОГЛЯД АНАЛОГІЧНИХ ІСНУЮЧИХ СИСТЕМ
2.1 Огляд існуючих систем, технологій, архітектур та програмних рішень по профілю теми курсової роботи
Як приклад типового паралельного периферійного адаптера, або програмованого паралельного інтерфейсу, нижче розглядається мікросхема КР580ВВ55А (аналога І8255).
На рисунках 2.a) і 2.б) наведені структурна схема адаптера і його програмна модель. Підключення периферійного обладнання виконується через три двонаправлених 8-бітних порти (або канали) A, B і C. Інтерфейс із системною шиною здійснюється за допомогою ліній:
Рисунок 2. Блок схема адаптеру та схема з’єднання з МП
D0…D7 – лінії даних, вихідне положення
REZET – скидання пристрою.
CS – вибір корпусу ВІС
RD – вхід керування введенням
WR/ – вихід керування висновком
А0, А1 – адреса порту
РА0…РА7 – порт А
РВ0…РВ7 – порт В
РС0…РС7 – порт С
D(0-7) – двонаправлена шина даних з тристабільними каскадами.
A1, A0 – лінії адреси, котрі вибирають внутрішній регістр адаптера, комутований на шину даних:
00 – порт A,
01 – порт B,
10 – порт C,
11 – регістр управляючого слова.
CS – активний вхід вибірки кристала; високий рівень забороняє, а низький дозволяє зв'язок приладу із системною шиною даних.
RD – активний вхід зчитування інформації із адресованого по лініям A0, A1 регістру на шину даних.
WR – активний вхід запису інформації з шини даних в адресований по A0 і A1 внутрішній регістр адаптера.
RESET – активний сигнал для приведення приладу у вихідний стан; при дії сигналу регістр управління обнуляється, а всі три порти налаштовуються в режим введення.
Слід зазначити, що зчитування з регістру управління (RD=0, A1=1, A0=1) не допускається, а одночасний запис та зчитування (RD=0, WR=0) призводять до непередбачуваних наслідків.
Програмування адаптера полягає в завантаженні керуючого слова в регістр управління. Формат керуючого слова визначення режиму, що ідентифікується умовою D7=1, наведені на мал. 1.2. Потрібно взяти до уваги те, що 8-бітні порти A і B не розділені, а лінії порту C розділені на дві 4-бітні групи, що являють собою два незалежних порти. Наприклад, управляюче слово конфігурації порту A на введення в режимі 0, порта B на виведення в режимі 1, біта 3 порту C на введення та біта 7 порту C на виведення матиме код 11010101b.
Управляюче слово з нульовим старшим бітом D7=0 використовується для встановлення і скидання будь-якого біту порту C. Біти D(6-4) в цьому випадку не використовуються і містять нулі, біти D(3-1) містять двійковий номер (адресу) модифікованого біта порту С, а біт D0 задає встановлення (D0=1) або обнулення (D0=0) адресованого біту.
2.2 Обґрунтування вибору засобів для побудови системи
Адаптер має 3 режима роботи – 0,1,2. Розглянемо кожний з них.
В режимі 0 (базового введення-виведення) можуть працювати всі три порти, причому порт C розділюється на два незалежних 4-бітних порти.
Таким чином, виходить два 8-бітних і два 4-бітних порти паралельного введення або виведення, що забезпечує 16 можливих конфігурацій адаптера в режимі 0. Дані, що виводяться, фіксуються в регістрах-фіксаторах, що входять до складу всіх портів, а введені дані не запам'ятовуються, тобто в операціях зчитування вхідного порту на шину даних передається поточний стан вхідних ліній.
Режим 0 застосовується при програмно-управляючому введенні-виведенні з повільнодіючими периферійними пристроями.
Для організації введення-виведення необхідна підпрограма ініціалізації адаптера і три аналогічні підпрограми введення і виведення для кожного периферійного пристрою. Кожна з них виконує такі дії : введення стану пристрою, перевірку готовності, виведення або введення даних і формування супровджуючого стробу. Якщо пристрій не готовий до обміну, мікропроцесор входить в цикл очікування.
Режим 1 (стробоване введення-виведення) призначений для однонаправленої передачі даних, ініційованих перериваннями. Власне передача слів даних здійснюється через порти B і A, а шість ліній порту C використовуються для управління обміном. Даний режим надає користувачеві такі можливості: запрограмувати один або два паралельних порти з лініями квітування і переривання, кожний з яких може працювати на введення або виведення; при використанні тільки одного порту решту 13 ліній запрограмувати в режим 0; при встановленні двох портів в режим 1 інші 2 лінії використати для вводу чи виводу.
В режимі 2 (двонаправлена шина, що забезпечує введення і виведення даних) може працювати тільки група A. Порт A використовується для передачі власне 8-бітних даних, а п'ять ліній порту C виконують функції квітування і переривань. Загальна дисципліна квітування аналогічна режиму 1, але є окремі тригери дозволу переривань по виводу INTE1 (управляється встановленням та скиданням біту PC6) та по вводу INTE2 (управляється через біт PC4). Дані, що вводяться та виводяться, фіксуються в регістрах-фіксаторах порту.
На рис. 2 можна побачити не лише блок-схему адаптера, але і те, як він з’єднаний з МП.
3. ОПИС ТА ОБГРУНТУВАННЯ ПРИЙНЯТИХ ПРОЕКТНИХ РІШЕНЬ.
3.1 Принцип роботи ВІС І8255
BІС паралельного інтерфейсу І8255 має три 8 розрядних порти А, В, С. Порти А, В, С мають програмне керування і можуть бути включені в різних функціональних конфігураціях, при цьому кожний з портів має притаманні йому функціональні характеристики. Порти А, В, С включають у собі:
Порт А – один 8-мирозрядний буферний регістр виводу даних і один 8-розрядний регістр вводу даних.
Порт В – один 8-мирозрядний буферний регістр вводу/виводу даних і один 8-мирозрядний буфер вводу даних.
Порт С – один 8-мирозрядний буферний регістр виводу даних і один 8-мирозрядний буфер вводу даних. Цей порт може бути подiлений на два 4-ох розрядних порти. Кожний чотирьохрозрядний порт має чотирьохрозрядний регістр i може бути використований при передачi сигналiв керування і прийому сигналів стану при роботі сумісно з портами А і В. ЦП задає режими роботи портів за допомогою двох типів управляючих слів:
1) команди встановлення режимів роботи (розряд D7=1);
2) команди встановлення розряду порта С (розряд D7=0).
Формати слів керування і встановлення дані відповідно на рис.3.1, 2. Тип слова керування визначається станом розряду D7.
D7
D6
D5
D4
D3
D2
D1
D0
D7 – ознака слова
D6,D5, D4 – не використовуються
D3, D2, D1 – вибір біту порту С
D0 – 0 встановлення в 0; 1-в 1
Рисунок 3.1 – Формат команди встановлення гашення розряда порта С
ВІС паралельного інтерфейсу може працювати в одному з трьох програмно задаваємих режимів:
Режим 0 – основне введення/виведення.
Режим 1 – стробоване введення/виведення.
Режим 2 – двунаправлена передача даних.
При встановленi на входi R рiвня "лог 1" адаптер встановлюється у початковий стан, всi порти налаштовуються на введення в режимі 0 (тобто усi 24 вихiднi лiнiї встановлюются в стан з високим опiром). Пiсля зняття сигналу встановлення у початковий стан порти адаптеру залишаються в цьому режимі, додатковоi команди режиму не потрiбно. Для виконання програми вибору iнших режимів роботи можливо здійснити це за допомогою однiєї команди. Це дозволяє адаптеру обслуговувати велику кiлькiсть зовнішнiх пристроiв засобами програмування.
Режими роботи портiв А i В можуть задаватися незалежно одне від одного, в той час порт С дiлиться на двi частини, режим роботи яких задаються в залежностi вiд призначення режимів портiв А i В. При змiнi режимів роботи усi вихiднi регiстри адаптера а також тригери стану, встановлюється в початковий стан, за виключенням тригера готовності (виведення готове) у режимах 1 i 2. Вибираючи різні комбінації режимів роботи портів можливо забезпечити необхідну функціональну організацію практично для будь-якої структури вводу\виводу.
3.2 Керування портом С
Кожний з 8 розрядів порту С може бути встановлений в «1» або «0» за допомогою однiєї команди виведення. Ця можливість спрощує програмування ВІС паралельного інтерфейсу при використанні керуючих сигналів.
В випадку, коли порт С використовується для керування портом А або В, ці розряди можуть бути встановленi в «1» або «0» словом встановлення порту С. При цьому група порту С, в яку входить встановлюємий розряд, вкючається на вивід:
Керуюче слово
4.ЕКСПЕРИМЕНТАЛЬНЕ ПІДТВЕРДЖЕННЯ ВІРНОСТІ ПРОГРАМНИХ ТА ПРОЕКТНИХ РІШЕНЬ, РЕАЛІЗАЦІЯ ПРОЕКТУ
4.1 Конфігурація існуючого обладнання
Функціональна конфігурація вводу/виводу в цьому режимі забезпечує передачу даних в заданий порт або з нього сумісно з асинхронними сигналами керування передачею. В режимі 1 порт А і порт В використовують порт С для формування або прийому сигналів керування.
Режим 1 має наступні функціональні характеристики:
- 2 порти передачi даних (А i B);
- кожний порт передачi мiстить восьмирозрядний порт даних i чотирьохрозрядний порт керування/даних (порт С);
- восьмирозрядний порт даних може бути включений на ввід або вивід. Ввід і вивід даних здійснюється з проміжним збереженням.
Сигнали керування вводом в режимі 1:
- /STB (Strobe-вхід стробу).
При рівні лог. «0» сигналу дані записуються в вхідний регістр;
IBF (Input Buffer Full – ознака заповнення регістру вводу).
Високий рівень лог. «1» на цьому вході вказує на те, що дані записані у вхідний регістр; сигнал IBF встановлюється в «1» по зрізу сигнала /STB і гаситься по фронту сигналу RD ;
INTR (Interrupt-запит переривання).
Високий рівень на цьому вході може бути використаний для переривання ЦП при запиті обслуговування периферійним пристроєм. Сигнал INTR встановлюється в стан лог. «1» по фронту сигналу /STB при IBF=1 і при внутрішньому сигналі дозволу переривання INTE=1. Гашення запиту переривання виконується зрізом сигналу RD. Такий засіб формування переривання дозволяє периферійному пристрою запитати обслуговування простим стропуванням даних, передаваємих в порт:
- INTRа – внутрішній сигнал дозволу переривання, який встановлює розряд PC3 порту С.
- INTRв – внутрішній сигнал дозволу переривання, який встановлює розряд PC0 порту С.
Конфігурація і часова діаграма вводу в режимі 1 ВІС показані на рисунках 4.1, 4.2
Рисунок 4.1- Часова діаграма роботи ВІС в режимі 2
Рисунок 4.2-Конфігурація
Порти А.В.С для роботи в вище згаданих режимах програмуються незалежно один від одного.
4.2 Розробка структурної схеми
Детальну структурну схему ППІ можна розглянути на рис. 4.3
Рисунок 4.3 – Структурна схема ППІ
4.3 Розробка функціональної схеми
З функціональною схемою можна ознайомитись на рис. 4.4
Рисунок 4.4 – Функціональна схема ППІ
Як видно з рисунків 4.3 та 4.4 структурна та функціональна схеми програмованого послідовного інтерфейсу дає можливість зрозуміти повну будову пристрою та розібратись з логікою пристрою, його роботою та принципом дії на інші елементи ЕОМ
5. ПРОГРАМУВАННЯ І8255 В РЕЖИМІ 1
Програмування ВІС паралельного інтерфейсу І8255 є дуже гнучким завдяки тому, що існує 3 різних режими прийому та передачі даних.
Так як метою курсової роботи є дослідження пристрою в режимі 1, то необхідно переглянути особливості програмування деяких пристроїв через режим 1.
FORM1.CS
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
using System.Threading;
namespace Terminal
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string temp;
serialPort1.PortName = ((string)comboBox1.SelectedItem);
serialPort1.Parity = (Parity)Enum.Parse(typeof(Parity),(string)comboBox3.SelectedItem);
temp = ((string)comboBox2.SelectedItem);
temp = temp.ToString();
serialPort1.BaudRate = (int.Parse(temp));
serialPort1.StopBits = ((StopBits)Enum.Parse(typeof(StopBits),(string)comboBox4.SelectedItem));
try
{
serialPort1.Open();
button1.Enabled = false;
button2.Enabled = true;
button3.Enabled = true;
}
catch (InvalidOperationException)
{
}
}
private void button2_Click(object sender, EventArgs e)
{
serialPort1.Close();
button1.Enabled = true;
button2.Enabled = false;
button3.Enabled = false;
}
public string SetPortName(string defaultPortName)
{
string portName="";
foreach (string portname in SerialPort.GetPortNames())
{
comboBox1.Items.Add(portname); //добавить порт в список
}
comboBox1.SelectedIndex = 0;
if (portName == "")
{
portName = defaultPortName;
}
return portName; //возвращает порт по умолчанию
}
public int SetPortBaudRate(int defaultPortBaudRate)
{
string baudRate = "";
if (baudRate == "")
{
baudRate = defaultPortBaudRate.ToString();
}
return int.Parse(baudRate);
}
public Parity SetPortParity(Parity defaultPortParity)
{
string parity = "";
foreach (string paritybit in Enum.GetNames(typeof(Parity)))
{
parity = paritybit.ToString();
comboBox3.Items.Add(parity);
}
comboBox3.SelectedIndex = 0;
if (parity == "")
{
parity = defaultPortParity.ToString();
}
return (Parity)Enum.Parse(typeof(Parity), parity);
}
public int SetPortDataBits(int defaultPortDataBits)
{
string dataBits = "9600";
if (dataBits == "")
{
dataBits = defaultPortDataBits.ToString();
}
return int.Parse(dataBits);
}
public StopBits SetPortStopBits(StopBits defaultPortStopBits)
{
string stopBits = "";
foreach (string stopbits in Enum.GetNames(typeof(StopBits)))
{
stopBits = stopbits.ToString();
comboBox4.Items.Add(stopbits);
}
comboBox4.SelectedIndex = 1;
if (stopBits == "")
{
stopBits = defaultPortStopBits.ToString();
}
return (StopBits)Enum.Parse(typeof(StopBits), stopBits);
}
public Handshake SetPortHandshake(Handshake defaultPortHandshake)
{
string handshake = "";
foreach (string handshakes in Enum.GetNames(typeof(Handshake)))
{
handshake = handshakes;
}
if (handshake == "")
{
handshake = defaultPortHandshake.ToString();
}
return (Handshake)Enum.Parse(typeof(Handshake), handshake);
}
public void BaudRateget()
{
string[] listbaudrate = new string[15];
listbaudrate[0] = "110";
listbaudrate[1] = "300";
listbaudrate[2] = "600";
listbaudrate[3] = "1200";
listbaudrate[4] = "2400";
listbaudrate[5] = "4800";
listbaudrate[6] = "9600";
listbaudrate[7] = "14400";
listbaudrate[8] = "19200";
listbaudrate[9] = "38400";
listbaudrate[10] = "56000";
listbaudrate[11] = "57600";
listbaudrate[12] = "115200";
listbaudrate[13] = "128000";
listbaudrate[14] = "256000";
comboBox2.Items.AddRange(listbaudrate);
comboBox2.SelectedIndex = 6;
}
private void Form1_Load(object sender, EventArgs e)
{
serialPort1.PortName = SetPortName(serialPort1.PortName);
serialPort1.Parity = SetPortParity(serialPort1.Parity);
serialPort1.BaudRate = SetPortBaudRate(serialPort1.BaudRate);
serialPort1.StopBits = SetPortStopBits(serialPort1.StopBits);
serialPort1.Handshake = SetPortHandshake(serialPort1.Handshake);
BaudRateget();
}
private void button3_Click(object sender, EventArgs e)
{
string writestring;
writestring = textBox2.Text;
try
{
serialPort1.WriteLine(String.Format("{0}", writestring));
textBox2.Clear();
}
catch (TimeoutException)
{
}
}
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string readstring;
try
{
readstring = serialPort1.ReadLine();
textBox1.AppendText(readstring + "\r\n");
}
catch (TimeoutException)
{
}
}
}
}
Перевірити правильність виконання програми можна за допомогою спеціальної програми - стенду STEND.EXE (рис. 5.1, 5.2), попередньо налаштувавши її на потрібний режим та характеристики.
Рисунок 5.1, 5.2- Оболонка стенду “STEND.EXE”
6. ОСНОВНІ ВИСНОВКИ
Персональні комп’ютери посідають значне місце в житті людини. Вони дозволяють спростити життя та працю людини, всі галузі промисловості керуються апаратними засобами, які можуть бути автоматизованими або керуватися людиною. Праця людини стала продуктивнішою і безпечнішою, але використання комп’ютерної техніки у майбутньому буде мати свої переваги та недоліки.
Переваги використання комп’ютерної техніки та прикладних програм у виробництві та повсякденному житті людини:
значно збільшується продуктивність праці у всіх сферах виробництва;
зменшення трудових ресурсів на користь техніки;
вірогідність отримання точного результату наближається до 100%.
Але в світі новітніх технологій завжди буде присутня людина, інтелект якої неможливо замінити жодним пристроєм.
Програмований паралельний інтерфейс І8255, який був розглянутий в даній курсовій роботі, є застарілим і в нових ЕОМ не використовується, але даний ППІ є чудовим наочним прикладом для освоєння ВІС, для роботи з регістрами та для вводу/виводу інформації.
Розглянуті програми написані на мові ASM-80, яка чудово підходить для програмування різних мікросхем, контролерів, таймерів та ін. Дана мова підходить для реалізації поставлених завдань та є орієнтованою на нескладні пристрої.
7. ПЕРЕЛІК СКОРОЧЕНЬ, СИМВОЛІВ ТА СПЕЦІАЛЬНИХ ТЕРМІНІВ
ЕОМ – електронно обчислювальна машина;
ПК – персональний комп'ютер;
МП – мікропроцесор;
ППІ – програмований паралельний інтерфейс;
МПС – мікропроцесорна система;
ЛІТЕРАТУРА
Конспект лекцій
Микропроцессорные системы: Учебное пособие для вузов / Е. К. Александров [и др.]; Под общ. Ред. Д. В. Пузанкова. – СПб.: Политехника, 2002. – 935 с.
Ларионов А. М. [и др.]. Вычислительные комплексы, системы и сети. Л.: Энергоатомиздат. 1987. – 288 с.
Щелкунов Н. Н., Дианов А. П. Микропроцессорные средства и системы. М.: Радиоисвязь, 1989. – 288 с..
Гук. М. Процессоры Intel: от 8086 до Pentium II. Спб.: Питер, 1998. – 224 с.
Проектирование микропроцессорной элекронно-вычислительной
аппаратуры. Справочник.( В.Г.Артюхов и др.); Киев.Техника, 1988.