реклама на сайте
подробности

 
 
> I/o порты AT89C5131, подскажите, pls
Мария Е
сообщение Jan 29 2008, 18:02
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 18-11-07
Из: Москва
Пользователь №: 32 424



Здравствуйте!
Подскажите, пожалуйста, как настраивать параллельные порты ввода/вывода в контроллере AT89С5131 на прием данных и на вывод. В даташите ничего не написано кроме того, что каждому порту соответствует один регистр Р0...Р4.
Заранее спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение Feb 4 2008, 10:42
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Вопрос такой: если в случайной точке программы надо узнать что выставлено на порт, как это можно получить. Именно что выставлено из контроллера на ружу. Я так понимаю, что нужна специальная инструкция, обычная считает как раз состояние порта, что выставили на контроллер.
Что за инструкция, и как объяснить кеилу на С чтобы он вызвал именно ее?
Go to the top of the page
 
+Quote Post
Палыч
сообщение Feb 4 2008, 11:13
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Golikov A. @ Feb 4 2008, 13:42) *
Вопрос такой: если в случайной точке программы надо узнать что выставлено на порт, как это можно получить. Именно что выставлено из контроллера наружу.
Обычно, это - не требуется. Команды такой - нет. Если, очень хочется: при выдаче в порт сохраняйте выдаваемое значение в ячейке памяти. Проблема - надуманная: даже в случайную точку программы попадают по какому-то пути и известно, что при этом заносят в регистры порта.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Feb 4 2008, 11:41
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата(Палыч @ Feb 4 2008, 14:13) *
Обычно, это - не требуется. Команды такой - нет. Если, очень хочется: при выдаче в порт сохраняйте выдаваемое значение в ячейке памяти. Проблема - надуманная: даже в случайную точку программы попадают по какому-то пути и известно, что при этом заносят в регистры порта.



Проблема не надуманнаяsmile.gif

даже P4^=0x10; и прочие конструкции [Оператор]= требует знание состояния порта, и под них спец инструкции есть насколько мне известно...

Случайная точка - всякого рода прерывания, так как присвоение переменных в этом контроллере не 1 такт, может спокойно так получится что переменные и значения порта разойдутся, отсюда и такая задача. Если я не прав с тем что прерывание может быть во время присвоения переменной, то уж между присвоением переменной и выставлением значения в порт, точно может быть прерывание... ну что же будем их запрещать на это время.

Спасибо, понял.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Feb 4 2008, 12:03
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Golikov A. @ Feb 4 2008, 14:41) *
даже P4^=0x10; и прочие конструкции [Оператор]= требует знание состояния порта, и под них спец инструкции есть насколько мне известно...
Инструкции Read-Modify-Write (в ассемблере ANL, ORL, XRL и др) собственно и читают регистр-защелку (модифицируют и потом записывают), поэтому в любом месте программы можно пользоваться конструкциями типа P4 ^= 0x10; P4 &= 0x10; P4 |= 0x10; и им подобными, "не зная" что ранее было занесено в регистр.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Мария Е   I/o порты AT89C5131, подскажите, pls   Jan 29 2008, 18:02
- - Golikov A.   Цитата(Мария Е @ Jan 29 2008, 21:02) Здра...   Jan 29 2008, 18:28
|- - SALOME   Цитата(Golikov A. @ Jan 30 2008, 01:28) А...   Jan 30 2008, 03:32
|- - Miron   Цитата(SALOME @ Jan 30 2008, 06:32) Лучше...   Jan 30 2008, 07:56
- - Golikov A.   То есть другими словами у 51 ядра сильный нолик, ...   Jan 30 2008, 10:10
|- - Stanislav   Цитата(Golikov A. @ Jan 30 2008, 13:10) Т...   Jan 30 2008, 17:52
|- - Golikov A.   Большое спасибо, теперь стало все на свои места......   Jan 30 2008, 20:06
||- - Мария Е   ЦитатаНу сейчас меня будут пинать, но ассемблер в ...   Jan 30 2008, 21:39
|- - Egor-ka   Цитата(Stanislav @ Jan 30 2008, 20:52) Да...   Jan 31 2008, 09:59
|- - Палыч   Цитата(Egor-ka @ Jan 31 2008, 12:59)...   Jan 31 2008, 10:16
- - Мария Е   Цитата(Golikov A. @ Jan 29 2008, 21:28) н...   Jan 30 2008, 17:23
- - StasK   А если, например пин P1_0 настроен на выход от тай...   Apr 21 2008, 05:04


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th June 2025 - 21:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.01416 секунд с 7
ELECTRONIX ©2004-2016