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

 
 
> Работа с SFR по указателю
Alexashka
сообщение Jan 10 2013, 05:29
Сообщение #1


Практикующий маг
******

Группа: Свой
Сообщений: 3 634
Регистрация: 28-04-05
Из: Дубна, Моск.обл
Пользователь №: 4 576



Добрый день всем! Тут знакомый задал задачку, которую с наскоку не смог решить, хотя с виду простая. Может я туплю, но чтото с кейлом у нас взаимопонимания не получилось. Смысл задачи в следующем: нужно в функцию передать адрес SFR регистра (ну допустим адрес ноги порта Р0, в которую мы хотим вывести бит данных, или прочитать ее значение), номер изменяемого бита и собсно бит данных, который по этому адресу нужно прописать. Собственно попытка передать адрес (например порта Р0) со смещением на номер бита и затем приведение его к типу sbit провалилась. Примеров много просмотрел, хэлп читал, но чтото безрезультатно. Подскажите как тут можно поступить, желательно без запихивания всей функции в дефайны.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ChipKiller
сообщение Jan 21 2013, 10:09
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 26-12-11
Пользователь №: 69 097



Цитата("Alexashka")
Т.е адрес SFR фактически заложен в самой команде? Т.е выходит подставить его "риал-тайм" никак не получится, он должен быть определен на этапе компиляции?
... "подставить" можно, только с оговоркой, что код должен выполняться во внешнем ПЗУ, в качестве которого подключен RAM.
Go to the top of the page
 
+Quote Post
редактор
сообщение Jan 22 2013, 05:03
Сообщение #3


Местный
***

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



Цитата(ChipKiller @ Jan 21 2013, 13:09) *
... "подставить" можно, только с оговоркой, что код должен выполняться во внешнем ПЗУ, в качестве которого подключен RAM.

И схема должна быть разведена под фон-неймановскую архитектуру.
И необходимость в этом как-бы отпадет, поскольку (если брать классику) из 4-х портов 2,5 будут заняты на обслуживание внешней памяти.

Но чисто теоретически сформировать код команды для чтения порта и выполнить его можно.

Если извратить мысль еще больше, то современные МК в большинстве случаев имеют возможности по модификации своего кода. То есть функция может модифицировать код в зависимости от аргумента (всего то один байт) и выполнить данный фрагмент. Накладно, затратно, но теоретически возможно.


--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
Go to the top of the page
 
+Quote Post



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

 


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


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