Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопрос по WinAvr
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
all505
Подскажите новичку, почему не работает приведенный ниже код? help.gif
Или как считать данные с порта?
Компилятор Avr-Gcc.

CODE
#include <avr/io.h>
#include <avr/delay.h>
#include <util/delay.h>


int main(void)

{

DDRA&=~_BV(0);//порт А.0 вход
PORTA|=_BV(0);//Резистор ON
DDRD|=_BV(0);// порт D.0 выход

while(1)
{

if(PINA,0) //проверить нажата кнопка <<<<<<<<<<<< Не работает!!!!
{
PORTD|=_BV(0); //выключаем светодиод
}else{
PORTD&=~_BV(0); //включаем светодиод
};

};
}

Огурцов
На вскидку - не вижу цикл
all505
Цитата
На вскидку - не вижу цикл


Поправил.
Все равно не работает?
rezident
Цитата(all505 @ Oct 14 2009, 06:37) *
Поправил.
Все равно не работает?

А что по-вашему должен делать оператор?
Код
if(PINA,0)
поясните своими словами.
all505
Цитата
А что по-вашему должен делать оператор?
Код
if(PINA,0)
поясните своими словами.


Сделать что-то если на ножке 0 порта A будет лог.1.

В CodeVision работает. excl.gif
smac
Цитата(all505 @ Oct 14 2009, 05:34) *
...В CodeVision работает. excl.gif

Дык Вы же не для кодевижена пишете. Я бы на месте компилятора был в затруднении, что сделать с тем оператором. Если вам нужно проверить состояние на ноге 0 то нужно так делать
Код
if (PINA&(1<<PC0)) {...
}

А вообще почитайте книги по C и документацию к компилятору.
_Pasha
Цитата(all505 @ Oct 14 2009, 04:34) *
Сделать что-то если на ножке 0 порта A будет лог.1.
В CodeVision работает. excl.gif

С точки зрения Си получаем: if(PINA,0) берется самое правое выражение, при этом компилер матюкаеццо:
Цитата
warning: left-hand operand of comma expression has no effect

Поскольку приняли во внимание только 0 - получили всегда ложное условие. Поятому ничего не выполнилось.

В связи с этим вопрос: насколько вообще кодвижн близок к Си, если там такая ботва? cranky.gif
Сергей Борщ
Цитата(_Pasha @ Oct 14 2009, 09:10) *
В связи с этим вопрос: насколько вообще кодвижн близок к Си, если там такая ботва? cranky.gif
Вообще-то в CV результат будет идентичным. В CV работет запись PINA.0, но на нее WinAVR выругался и автор, видимо, решил заменить точку на запятую.
all505
Цитата
Вообще-то в CV результат будет идентичным. В CV работет запись PINA.0, но на нее WinAVR выругался и автор, видимо, решил заменить точку на запятую.


Так и есть!

Цитата
Дык Вы же не для кодевижена пишете. Я бы на месте компилятора был в затруднении, что сделать с тем оператором. Если вам нужно проверить состояние на ноге 0 то нужно так делать
Код
if (PINA&(1<<PC0)) {...
}

А вообще почитайте книги по C и документацию к компилятору.


Спасибо все заработало laughing.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.