Цитата(morpheus @ Oct 10 2008, 14:56)

ДОброго всем времени суток
есть mega1280 и компилятор CodeVision 1.25.8 prof при попытке считаь пин на портах с G по L
if (PINL.2==0 или PORTL.2) выдает ошибку он это видит как структуру. Хотя на более младших портах все работает. Подскажите пожалеста в чем проблема
Думаю правильнее было-бы написать
if (PINL.2) но для этих портов такая запись в CVAVR всёравно не прокатит. Эти порты лежат не пространстве памяти I/O, а в области оперативной памяти и доступ к ним необходимо осуществлять по-другому:
if (PINL&(1<<2)) //проверка пина PINL.2
PORTL |= (1<<2) //установить PORTL.2
Записи типа
if(PINx.y) допустима для портов только их пространства памяти I/O к которым применимы команды SBIS/SBIC для проверки-пропуска, SBI/CBI для установки/ сброса отдельных битов. Те которые лежат в оперативной памяти должны быть сначала загружены в регистр командой LDS где они могут быть проверены с помощью команд SBRS/SBRC. Для установки бита также необходимо их сначала загрузить (LDS) установить/сбросить бит (SBR/CBR) и занести новое значение в порт (STS). Вот собственно поэтому у меня когдато ругался компилятор на эти записи для портов F, G, H
Пока писал
Petka опередил меня