roboforum.ru

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

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

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

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

Сообщение Slava Tutushkin » 15 июл 2005, 21:21

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

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

Такие дела.
Slava Tutushkin
 
Сообщения: 26
Зарегистрирован: 21 июн 2005, 23:05
Откуда: Санкт-Петербург

Сообщение nest » 16 июл 2005, 00:17

смотреть инструкцию по codevision, как писать/читать в порт
или делать ассемблерные вставки.
Аватара пользователя
nest
 
Сообщения: 977
Зарегистрирован: 21 янв 2005, 12:16
Откуда: Germany
Предупреждения: -4
прог. языки: asm

Сообщение Slava Tutushkin » 16 июл 2005, 10:40

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

Смотрел.
Не нашёл.
Подскажите, пожалуйста, куда конкретно смотреть?
Slava Tutushkin
 
Сообщения: 26
Зарегистрирован: 21 июн 2005, 23:05
Откуда: Санкт-Петербург

Сообщение nest » 17 июл 2005, 12:57

а фиг знает ... я с ним не работал : )
но обязаны быть точно.
Аватара пользователя
nest
 
Сообщения: 977
Зарегистрирован: 21 янв 2005, 12:16
Откуда: Germany
Предупреждения: -4
прог. языки: asm

Сообщение 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
 
Сообщения: 188
Зарегистрирован: 12 апр 2005, 11:47
Откуда: Москва

Сообщение Slava Tutushkin » 19 июл 2005, 21:31

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

А что же Вы тогда выступаете с заявлениями, раз не работали?
Slava Tutushkin
 
Сообщения: 26
Зарегистрирован: 21 июн 2005, 23:05
Откуда: Санкт-Петербург

Сообщение 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 и далее нужно по-другому)

Перечитайте, пожалуйста, моё сообщение внимательно. Там я написал, что именно этот способ мне известен и мне он не подходит.
Slava Tutushkin
 
Сообщения: 26
Зарегистрирован: 21 июн 2005, 23:05
Откуда: Санкт-Петербург

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

Сообщение wolf » 23 июл 2005, 00:45

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

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

Такие дела.


Если учитывать тот факт, что любой порт в AVR может адресоваться, как ячейка памяти, проблема легко решается и без OUTP.
Насчёт компилятора не согласен, вовсе он не уродский :) а простой и удобный.
wolf
 
Сообщения: 63
Зарегистрирован: 23 июл 2005, 00:39
Откуда: Казань

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

Сообщение Slava Tutushkin » 25 июл 2005, 07:55

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

А мне всё-таки хочется через OUTP. И ещё чтобы SBI и CBI были =)
Я думаю, должно оно быть в компиляторе. Потому что делается просто, а эффективность в ряде случаев повышает существенно.
Slava Tutushkin
 
Сообщения: 26
Зарегистрирован: 21 июн 2005, 23:05
Откуда: Санкт-Петербург


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 7