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

 
 
> 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.
сообщение Jan 30 2008, 10:10
Сообщение #2


Гуру
******

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



То есть другими словами у 51 ядра
сильный нолик, и слабая единичка.
То есть если порт выдает нули, и кто-то подаст на него единички, то это конфликт и что-то может сгореть, а если порт выдает единички, то его состояние можно изменить...


беспокоит 2 вещи:
1. не повлияет ли слабая единичка на работу ключей, ведь ключи считай ее через базу-коллетор на землю просаживают (или я что-то не понимаюsmile.gif))....

2. кто на себя берет труд понимать откуда писать , куда читать? В асьме понятно могут быть разные команды, а в Кеиле?

вот команда P4^=0x01; надо же сначала прочитать состояние порта, а потом туда записать измененное, не получится ли так, что прочитается состояние входного буфера?
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Jan 30 2008, 17:52
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(Golikov A. @ Jan 30 2008, 13:10) *
То есть другими словами у 51 ядра
сильный нолик, и слабая единичка.
То есть если порт выдает нули, и кто-то подаст на него единички, то это конфликт и что-то может сгореть, а если порт выдает единички, то его состояние можно изменить...
Именно так.
У 51-го двунаправленный ввод-вывод "не настоящий". По сути, это открытый сток с подтяжкой в "1" слабым током. Правда, в конце цикла вывода в порт "единичка" на короткое время становится достаточно "сильной", чтобы быстрее перезаряжать ёмкости монтажа. Но замыкать вывод на "землю" неопасно.

Цитата(Golikov A. @ Jan 30 2008, 13:10) *
...беспокоит 2 вещи:
1. не повлияет ли слабая единичка на работу ключей, ведь ключи считай ее через базу-коллетор на землю просаживают (или я что-то не понимаюsmile.gif))....
Какие ключи и какая база-коллектор? 07.gif Вы о чём вообще?
Базу биполярного транзистора с заземлённым эмиттером можно подключать к выводу порта непосредственно.

Цитата(Golikov A. @ Jan 30 2008, 13:10) *
...2. кто на себя берет труд понимать откуда писать , куда читать? В асьме понятно могут быть разные команды, а в Кеиле?

вот команда P4^=0x01; надо же сначала прочитать состояние порта, а потом туда записать измененное, не получится ли так, что прочитается состояние входного буфера?
Данная операция относится к типу "чтение-модификация-запись". При этом нужно соблюдать осторожность, потому что если из порта читается истинное состояние линий ввода-вывода, они могут "залипнуть".
Если компилятор переводит данную операцию в XRL P4,#1, произойдёт чтение защёлки (а не порта), модификация и запись в защёлку, без залипаний. Я с компилером С для 51-х не работал, и точно сказать не могу, какой именно код он сгенерит, хотя, очень вероятно, что именно такой.

Цитата(Мария Е @ Jan 30 2008, 20:23) *
В принципе, я это знала, просто вызывает большие сомнения насчет использования портов как входов. Сначала записать туда все единички, а потом считывать пришедшие данные... странно как-то.
Да, так. Потому, что порты у 51-го контроллера "недоделанные". smile.gif

ЗЫ. Извиняюсь за некоторую путанность - торопился.
На сайте Атмел есть хорошие мануалы. Почитать будет весьма не лишне.

Сообщение отредактировал Stanislav - Jan 30 2008, 19:41


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
Egor-ka
сообщение Jan 31 2008, 09:59
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 9-10-07
Пользователь №: 31 202



Цитата(Stanislav @ Jan 30 2008, 20:52) *
Данная операция относится к типу "чтение-модификация-запись". При этом нужно соблюдать осторожность, потому что если из порта читается истинное состояние линий ввода-вывода, они могут "залипнуть".
Если компилятор переводит данную операцию в XRL P4,#1, произойдёт чтение защёлки (а не порта), модификация и запись в защёлку, без залипаний. Я с компилером С для 51-х не работал, и точно сказать не могу, какой именно код он сгенерит, хотя, очень вероятно, что именно такой.


Проверял как компилятор Кейла переводит P4^=0x01, да, действительно, он переводит эту операцию в XRL P4,#1.
Если подвести итог, то получается чтобы считать данные с выводов нужно выполнить следующую последовательность операций:

P2=0xff; //для записи всех единиц, чтобы настроить порт P2 на прием данных
P2&=0xff; // для чтения, т.к. после этой операции состояние регистра не меняется
A=P2; // теперь А равна пришедшим значениям на ножки P2 ?

Так?

Сообщение отредактировал Egor-ka - Jan 31 2008, 10:05
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 31 2008, 10:16
Сообщение #5


Гуру
******

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



Цитата(Egor-ka @ Jan 31 2008, 12:59) *
...чтобы считать данные с выводов нужно выполнить следующую последовательность операций:
P2=0xff; //для записи всех единиц, чтобы настроить порт P2 на прием данных
P2&=0xff; // для чтения, т.к. после этой операции состояние регистра не меняется
A=P2; // теперь А равна пришедшим значениям на ножки P2 ?
Вторая строка - лишняя:
P2= 0xFF; // Настройка Р2 на прием данных (можно проделать однажды в начале программы)
A= P2; // Чтение данных
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.   Большое спасибо, теперь стало все на свои места......   Jan 30 2008, 20:06
||- - Мария Е   ЦитатаНу сейчас меня будут пинать, но ассемблер в ...   Jan 30 2008, 21:39
- - Мария Е   Цитата(Golikov A. @ Jan 29 2008, 21:28) н...   Jan 30 2008, 17:23
- - Golikov A.   Вопрос такой: если в случайной точке программы над...   Feb 4 2008, 10:42
|- - Палыч   Цитата(Golikov A. @ Feb 4 2008, 13:42) Во...   Feb 4 2008, 11:13
|- - Golikov A.   Цитата(Палыч @ Feb 4 2008, 14:13) Обычно,...   Feb 4 2008, 11:41
|- - Палыч   Цитата(Golikov A. @ Feb 4 2008, 14:41) да...   Feb 4 2008, 12:03
- - StasK   А если, например пин P1_0 настроен на выход от тай...   Apr 21 2008, 05:04


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

 


RSS Текстовая версия Сейчас: 11th August 2025 - 22:06
Рейтинг@Mail.ru


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