Страница 1 из 1

Передача порта как параметра

Добавлено: Вт мар 21, 2017 07:32:14
daaar
Как передать порт в качестве параметра в функцию? Я понимаю что PORTx это адрес, передаю как uint8t, код компилится без ошибок и варнингов, но на железе не работает

Re: Передача порта как параметра

Добавлено: Вт мар 21, 2017 07:51:46
ARV
вы уже спрашивали, и вам отвечали. судя по всему, на вашей платформе - никак. ищите иные пути

Re: Передача порта как параметра

Добавлено: Вт мар 21, 2017 08:22:38
oleg110592

Re: Передача порта как параметра

Добавлено: Вт мар 21, 2017 08:41:10
ARV
не пригодится, если меня память не подводит: у него Keil и 51-я архитектура, не прокатывает указатель на порт.

Re: Передача порта как параметра

Добавлено: Вт мар 21, 2017 09:16:54
oleg110592
ну в этих и портов то с гулькин...

Код: Выделить всё

void setpin( port_num, bit_index )
{
  switch port_num
  {
    case 2:
       P2 |= ( 1 << bit_index );
находится поиском на сайте Кейла

Re: Передача порта как параметра

Добавлено: Вт мар 21, 2017 11:56:01
BOB51
Отчего не прокатит?
В ассемблере через @Ri - заносим адрес порта в регистр - указатель и работаем как с ячейкой ОЗУ...
:dont_know:

Re: Передача порта как параметра

Добавлено: Вт мар 21, 2017 12:14:08
ARV
BOB51 писал(а):Отчего не прокатит?
В ассемблере через ...
В том-то и дело, что в ассемблере отсутствует понятие "передача параметров функции". Поскольку все РОН в 51-й архитектуре отображены в область RAM, наверняка должен быть способ объявить какой-то сишный указатель на соответствующую ячейку, просто я не знаю, как это следует делать. может быть, какой-нибудь unsigned char near *ptr нужно сделать...

Re: Передача порта как параметра

Добавлено: Вт мар 21, 2017 12:21:53
BOB51
МНДЯа....
А может чего в этой доке накопается - там, кроме самого МК еще и приемы работы с компиляторами ассемблера и СИ в конце описаны:
STC15F204EA-series-english.pdf
(3.46 МБ) 203 скачивания
:dont_know:

Re: Передача порта как параметра

Добавлено: Вт мар 21, 2017 12:25:40
ARV
Увы и ах, желаемое топикстартером НЕВОЗМОЖНО в принципе: C pointers cannot be used to access the 8051's SFRs (special function registers) - это сам Keil говорит :)

Добавлено after 2 minutes 12 seconds:
меньше минуты гугления...

Re: Передача порта как параметра

Добавлено: Вт мар 21, 2017 13:58:01
BOB51
ГЫММ...
"плюсик" в пользу ассемблерных вставок...
:wink: