roboforum.ru

Технический форум по робототехнике.

Codevision и обращение к портам

Codevision и обращение к портам

Slava Tutushkin » 15 июл 2005, 21:21

Подскажите, люди добрые, есть ли в codevision какая-нибудь функция вида OUTP(addr, val)?
Хочу читать/писать произвольный порт. Но, оказывается, PORTx в этом уродском компиляторе не являются переменными. Пока что у меня получается только обращение к порту через его имя (например, PORTD=0x00). Компилятор при этом генерит
OUT  0x12,R30

А я хочу вызвать что-нибудь вроде "OUTP(0x12, 0x00)", и чтобы при этом компилятор сгенерил то же самое.

Такие дела.

nest » 16 июл 2005, 00:17

смотреть инструкцию по codevision, как писать/читать в порт
или делать ассемблерные вставки.

Slava Tutushkin » 16 июл 2005, 10:40

nest писал(а):смотреть инструкцию по codevision, как писать/читать в порт
или делать ассемблерные вставки.

Смотрел.
Не нашёл.
Подскажите, пожалуйста, куда конкретно смотреть?

nest » 17 июл 2005, 12:57

а фиг знает ... я с ним не работал : )
но обязаны быть точно.

slava » 17 июл 2005, 16:59

Например так:

PORTB=0x00;
DDRB=0x00;

или так:

void main(void) {
/* set bit 0 of Port A as output */
DDRA.0=1;

/* set bit 1 of Port A as input */

DDRA.1=0;

/* set bit 0 of Port A output */
PORTA.0=1;

/* test bit 1 input of Port A */
if (PINA.1) { /* place some code here */ };



Но по-битный доступ работает не со  всеми портами (от F и далее нужно по-другому)

Slava Tutushkin » 19 июл 2005, 21:31

nest писал(а):а фиг знает ... я с ним не работал : )
но обязаны быть точно.

А что же Вы тогда выступаете с заявлениями, раз не работали?

Slava Tutushkin » 19 июл 2005, 21:32

slava писал(а):Например так:

PORTB=0x00;
DDRB=0x00;

или так:

void main(void) {
/* set bit 0 of Port A as output */
DDRA.0=1;

/* set bit 1 of Port A as input */

DDRA.1=0;

/* set bit 0 of Port A output */
PORTA.0=1;

/* test bit 1 input of Port A */
if (PINA.1) { /* place some code here */ };



Но по-битный доступ работает не со  всеми портами (от F и далее нужно по-другому)

Перечитайте, пожалуйста, моё сообщение внимательно. Там я написал, что именно этот способ мне известен и мне он не подходит.

Re: Codevision и обращение к портам

wolf » 23 июл 2005, 00:45

Slava Tutushkin писал(а):Подскажите, люди добрые, есть ли в codevision какая-нибудь функция вида OUTP(addr, val)?
Хочу читать/писать произвольный порт. Но, оказывается, PORTx в этом уродском компиляторе не являются переменными. Пока что у меня получается только обращение к порту через его имя (например, PORTD=0x00). Компилятор при этом генерит
OUT  0x12,R30

А я хочу вызвать что-нибудь вроде "OUTP(0x12, 0x00)", и чтобы при этом компилятор сгенерил то же самое.

Такие дела.


Если учитывать тот факт, что любой порт в AVR может адресоваться, как ячейка памяти, проблема легко решается и без OUTP.
Насчёт компилятора не согласен, вовсе он не уродский :) а простой и удобный.

Re: Codevision и обращение к портам

Slava Tutushkin » 25 июл 2005, 07:55

wolf писал(а):Если учитывать тот факт, что любой порт в AVR может адресоваться, как ячейка памяти, проблема легко решается и без OUTP.
Насчёт компилятора не согласен, вовсе он не уродский :) а простой и удобный.

А мне всё-таки хочется через OUTP. И ещё чтобы SBI и CBI были =)
Я думаю, должно оно быть в компиляторе. Потому что делается просто, а эффективность в ряде случаев повышает существенно.


Rambler\'s Top100 Mail.ru counter