Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: порты ввода -вывода (команды in,out)  (Прочитано 27433 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
pokk
Помогающий

ru
Offline Offline

« : 08-10-2011 04:28 » 

Здравствуйте не как не могу разобраться с командами  in out.  

в общем мне надо вывести   на шину данных  или адреса процессора К1810 ВМ86   какое-то   число.
Как такое сделать можно ?

out  номер порта,акамулятор  
так вот самая не понятная часть номер порта  что это такое ?







« Последнее редактирование: 08-10-2011 05:26 от pokk » Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 08-10-2011 06:36 » 

Ввод-вывод и шины - это понятия разного уровня. Шины адреса и данных в архитектуре x86 одни и те же - и для работы с памятью, и для ввода-вывода в порты, и для обработки прерываний.

Указанный тобой процессор имеет мультиплексированную шину адреса и данных. Ширина шины - 20 бит. Для данных используются младшие 16 бит. Адреса портов в x86 16-битные - используются младшие биты. Затруднюсь сказать, что происходит на шине данных при 8-битном вводе-выводе, но ты это можешь найти в литературе.

PS: знаки препинания придумали лохи?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
pokk
Помогающий

ru
Offline Offline

« Ответ #2 : 08-10-2011 06:50 » 

 Так всё таки как  вывести число 3 ?
 что бы  AD0=1 AD1=1   AD2-AD15=0


 
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 08-10-2011 06:52 » 

pokk, твой вопрос абстрактен. Почитай ка про архитектуру этого процессора. Литературы по нему - море.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 08-10-2011 10:48 » 

У процессора есть адресная шина. К этой шине подключаются устройства (в частности, ОЗУ), так, что если процессор посылает запрос по шине, соответствующее устройство опознаёт, что обращение идёт именно к нему, и как-то реагирует (например, ОЗУ или ПЗУ возвращают содержимое ячейки памяти, а какой-нибудь контроллер может возвратить значение своего регистра).

На уровне команд x86 есть различие между пространством адресов памяти и пространством адресов портов ввода/вывода. К первому пространству адресов подключаются ОЗУ, ПЗУ, но и могут быть устройства (например, видеосистема), которые тоже отображаются в памяти. Доступ к содержимому этого адресного пространства происходит при помощи соответствующих адресных регистров и команд пересылки данных между памятью и регистрами. (Например, ассемблерная мнемокоманда MOV с двумя операндами в зависимости от типа источника и приёмника преобразуется в разные машинные коды). Ко второму пространству адресов подключаются разные периферийные устройства, и оно служит для обмена данными между устройствами и процессором. Поэтому каждый адрес этого пространства называется портом ввода/вывода. Доступ к этому пространству осуществляется при помощи команд ввода/вывода IN и OUT.

Порты ввода/вывода и ячейки памяти чисто технически (для процессора) представляют собой одно и то же с точки зрения адресации. Но для программиста они идеологически различаются. Память - это хранилище данных. Если ты туда что-то записал, оно там и будет лежать, и его оттуда можно прочитать обратно. Порт - это не хранилище. Т.е. записав что-то в порт, обратно можешь прочитать совсем другое значение, зависящее от работы устройства.
« Последнее редактирование: 08-10-2011 10:50 от Dimka » Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
pokk
Помогающий

ru
Offline Offline

« Ответ #5 : 08-10-2011 11:03 » 

Dimka,  не много понятнее стало спасибо.

Цитата
У процессора есть адресная шина. К этой шине подключаются устройства (в частности, ОЗУ), так, что если процессор посылает запрос по шине, соответствующее устройство опознаёт, что обращение идёт именно к нему, и как-то реагирует (например, ОЗУ или ПЗУ возвращают содержимое ячейки памяти, а какой-нибудь контроллер может возвратить значение своего регистра).

Я вот как раз этим занимаюсь, пытаюсь понять, как же  отправить запрос (выбор кристалла)  на внешнее устройство.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 08-10-2011 15:21 » 

pokk, для этого надо скачать datasheet на процессор (на сайте intel.com - даташит существует) и посмотреть распиновку и диаграммы циклов шины.
http://datasheets.chipdb.org/Intel/x86/808x/datashts/8086/
« Последнее редактирование: 08-10-2011 15:23 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 08-10-2011 15:54 » 

в общем мне надо вывести   на шину данных  или адреса процессора К1810 ВМ86   какое-то   число.
Как такое сделать можно ?

Такое можно вообще никак не делать. При работе программы процессор выводит на шину адреса/данных (как уже сказал RXL, она мультиплексированная) "какие-то числа" несколько миллионов раз в секунду, и если немного подождать, любое нужное число там появится без каких-то дополнительных действий.

Как выглядит задача на самом деле?
Записан

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

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
pokk
Помогающий

ru
Offline Offline

« Ответ #8 : 08-10-2011 16:17 » 

Цитата
Как выглядит задача на самом деле?

Разработать пульт оператора базовой мпс, включающий клавиатуру.
для ввода данных в 16ричной системе и цифровой дисплей для отображения в 16ричной системе адреса (4 цифры) и данных (2 цифры).
Составить программу чтения памяти с отображением на индикаторах.

В общем считаем,что во внешней памяти пзу уже находятся данные и мне надо только вывести.
для этого на матричной клавиатуре 4 на 4  набираю адрес ,а выводится они должны на Семисегментный индикатор(на чёт семи не уверен наверное на 16тисигментные надо) 

для этого всего я выбрал память К537РФ2 или К537РР2 (отличаются они только методом стирания в моём случае это не принципиально =) объём 2кб на 8 ). так же  выбрал микросхему     КР580ВВ79 для опроса клавиатуры и вывода на индикаторы, ещё  хочу поставить шинный формирователь ир82 но с ним не разобрался ещё


Цитата
Такое можно вообще никак не делать. При работе программы процессор выводит на шину адреса/данных (как уже сказал RXL, она мультиплексированная) "какие-то числа" несколько миллионов раз в секунду, и если немного подождать, любое нужное число там появится без каких-то дополнительных действий.

вообще-то хотел  пару  разрядом  из адреса забить что бы ими можно было выбирать внешние    устройства

Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 08-10-2011 17:22 » 

для ввода данных в 16ричной системе и цифровой дисплей для отображения в 16ричной системе адреса (4 цифры) и данных (2 цифры).

(на чёт семи не уверен наверное на 16тисигментные надо)

4 + 4 * 16 = тебе нужен 128-сегментный индикатор Ага

А микросхемы должны быть исключительно отечественного производства?
« Последнее редактирование: 08-10-2011 17:28 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 08-10-2011 17:55 » 

Разработать пульт оператора базовой мпс, включающий клавиатуру.
...
так же  выбрал микросхему     КР580ВВ79 для опроса клавиатуры и вывода на индикаторы

Честно говоря, сегодня трудно выбрать что-то более неподходящее, чем К1810ВМ86 и КР580ВВ79. Это древние микросхемы (им уже лет 30, а их фирменным прототипам наверняка и все 40), которым сегодня место лишь в политехническом музее, но никак не в разработках.

Моя рекомендация: возьмите современный микроконтроллер. На них и систему делать проще (все уже собрано на одном кристалле), и программировать/отлаживать легче, и по деньгам гораздо дешевле. Да и сам проект на старой элементной базе не имеет никаких перспектив.
Записан

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

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 08-10-2011 19:10 » 

Ну, почему же? Помню, писали, в некоторых блоках Шатлов они еще стоят. Ага

pokk, элементная база жестко указана в задании или можно выбирать ее по собственному усмотрению? Я бы порекомендовал AVR или клоны 8051 - они намного больше подходят для такой задачи. И схемотехника будет проще. ОЗУ и ПЗУ (точнее Flash) уже встроены и надо только взять типовые решения для подключения индикаторов и клавиатуры. Программы работы с ними тоже типовые. Останется только написать десяток строчек на Си для описания логики. Поверь, с 8086 ты намучаешься.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 08-10-2011 20:21 » 

Ну, почему же? Помню, писали, в некоторых блоках Шатлов они еще стоят. Ага

Так это вполне естественно: последний Space Shuttle построен в 1991-м, а разработка проекта была начата в 1971-м. Много воды утекло.
Записан

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

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
pokk
Помогающий

ru
Offline Offline

« Ответ #13 : 09-10-2011 00:42 » 

К сожалению, да  К1810ВМ86  указан   т.к  типо мы его изучили =)
на счёт остального  не знаю   возможно можно что-то и современно.
Была идея  в качестве индикатора использовать   LCD дисплей на контроллере HD44780  ,но смысл если всё равно надо будет использовать КР580ВВ79  для клавиатуры


Цитата
которым сегодня место лишь в политехническом музее, но никак не в разработках.
уже встречал такое и не раз, пока  искал УГО =)))))

Цитата
.....На них и систему делать проще (все уже собрано на одном кристалле), и программировать/отлаживать легче, и по деньгам гораздо дешевле. Да и сам проект на старой элементной базе не имеет никаких перспектив.
ну это курсовой проект   тут я полагаю отлаживать нечего не надо будет =)
Записан
DneprSMV
Помогающий

kz
Offline Offline
Пол: Мужской

« Ответ #14 : 09-10-2011 01:24 » 

pokk,
Если хочешь смотреть что там на шинах - надо чтобы был аппаратный "шагатель" по циклам  Улыбаюсь
Помнится, он состоит из одного триггера и кнопки. В книжках по x86 есть достаточно примеров.
Работа с портом отличается от работы с памятью стробирующими импульсами. (для памяти они MEMR MEMW а для портов IOR IOW. Но уже не помню.)
Тебе надо "поймать" импульс записи порта + строб адерсного селектора, и их совпадением защелкнуть триггер "останова" процессора  Улыбаюсь После этого можно смотреть, что там на шинах Улыбаюсь

8086 - пожалуй последний из процессоров, более-менее удобный-простой для учебных целей  Улыбаюсь
разве что еще 80188  Улыбаюсь

Добавлено через 11 минут и 59 секунд:
RXL,
"Поверь, с 8086 ты намучаешься."   -  это да  Улыбаюсь
один сигнал режима выборки 8/16 разрядных данных чего стоит Улыбаюсь
Проще взять ископаемую плату XT и ее помучить. Правда там x88 начали ставить - не пройдет по ТЗ.


Добавлено через 23 минуты и 24 секунды:
pokk,
по командам правильно, их кажется 2 формата
для "ближних" портов (0...256)  прямая адресация в команде и для всего диапазона (65535) - косвеная через DX.
За порты уже выше объяснили. Принципиального отличия "портов" от "памяти" со стороны процессора нет (но используются разные упр. сигналы). Разница в самих портах. Если при записи в память числа XX мы при считывании получаем XX (задача хранения ихф-ии), то при работе с портом это уже не факт Улыбаюсь Почему - надо объяснять отличие понятия "периферийного устр-ва" (например ВВ79) от RAM. Простейшее П.У. состоит из 2-х регистров (один на запись, другой на чтение, имеющих один адрес). Если соединить выходы R1 и входы R2 - получим ячейку RAM. А если входы-выходы не соединять, а использовать для записи-считывания какихнить внешних сигналов - простейший порт.


 
« Последнее редактирование: 09-10-2011 01:59 от DneprSMV » Записан

"Не слушайте никаких советов, в том числе и этот" (Сократ ?)
LightSin
The question title sounds to me the same as "Convert banana into a pistol"... :-)
Постоялец

ru
Offline Offline
id/fm105


« Ответ #15 : 09-10-2011 08:09 » 

странно)
Цитата
Разработать пульт оператора базовой мпс, включающий клавиатуру.
занимаюсь на pic на avr сил перейти нету)) позже

а так по идеи 2 варианта подключение com и lpt
скажу как передает com знать нужно что он последовательная шина.... но... ведь есть rs232 и цепляешь к нему контроллер а там уже документаций много как с этим работать

с lpt портом будет попроще с одной стороны,  подключив светодиоды можно будет увидеть что и как... http://bitsofmind.wordpress.com/2008/08/07/led-and-lpt-port/

клавиатуру сделать самому не проблема)) http://www.radiohlam.ru/control/keyboard.htm
   
Записан

Lost in the jungle: 1c, PIC AVR, C++, Python flask, (no Java) JS . for fun: Live For Speed S2 Drift Edition, TeeWorlds
pokk
Помогающий

ru
Offline Offline

« Ответ #16 : 09-10-2011 09:01 » 

Цитата
клавиатуру сделать самому не проблема)) http://www.radiohlam.ru/control/keyboard.htm

Тогда уже какую-нибуть такую  http://www.getchip.net/posts/060-drajjver-sensornojj-klaviatury-touch-me-na-attiny2313/
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines