Перейти к содержанию
    

#define  LED    A, 1, H
#define _setH(port,bit)         LAT##port |= (1 << bit)
#define _clrH(port,bit)         LAT##port &= ~(1 << bit)
#define _set(port,bit,val)      _set##val(port,bit)
#define on(x)                   _set (x)
#define _clr(port,bit,val)      _clr##val(port,bit)
#define off(x)                  _clr (x)

void Test()
{
   on(LED);
   off(LED);
}

Не компилится. Путается в количестве аргументов.

Даа... , я как понимаю влезь в ухо и вылези через ж..у. :cranky: Это так буквально программисты понимают слово кодирование. :-) Не обижайтесь Сергей, просто зачем так, даже если это только пример?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Даа... , я как понимаю влезь в ухо и вылези через ж..у.

Незабвенная Эллочка-людоедка тоже не смогла-бы оценить ни одно литературное произведение - уж больно у нее словарный запас и круг потребностей был мал.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Незабвенная Эллочка-людоедка тоже не смогла-бы оценить ни одно литературное произведение - уж больно у нее словарный запас и круг потребностей был мал.

:-) Ваш юмор понятен:-). Просто когда программисты, в этих трёх строчках, ошибки ищут по три месяца, тогда да.... Кстати, в двоичном кодировании 2 знака и всё прекрасно, а можно было и все 33 буквы русского могучего использовать - представляете, как бы выглядели эти сочинения! :-) Имхо, чем проще написан код, тем работоспособнее он, отпадает зависимость от своеобразностей разных компиляторов, повышается читаемость итд. итп.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Просто когда программисты, в этих трёх строчках, ошибки ищут по три месяца

Может это на самом деле не программисты???

тем работоспособнее он, отпадает зависимость от своеобразностей разных компиляторов, повышается читаемость итд. итп.

Вот именно с этой целью подобные макросы и пишутся (правда классические ляпы с экономией () в этих присутствуют :( ). Хотя лично я подобными не пользуюсь (интересует обычно более высокие уровни абстракции), но это уже мое личное.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

именно с этой целью

Как раз эта цель и привела к тому, что компилятор оказался не работоспособен.

Может это на самом деле не программисты???

Может.

Не все художнинки аля Малевич.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как раз эта цель и привела к тому, что компилятор оказался не работоспособен.
Это тараканы препроцессора. Если он не отвечает стандарту - макросы тут не при чем. Полагаю, вы не поняли всех прелестей этих макросов, поэтому они вам и показались слишком сложными.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

интересует обычно более высокие уровни абстракции

Sorry за флуд :-) я это в этом контексте понимаю:

С точки зpения банальной эpудиции, каждый индивидуум, кpитически мотивиpующий абстpакцию, не может игноpиpовать кpитеpии утопического субьективизма, концептуально интеpпpетиpуя общепpинятые дефанизиpующие поляpизатоpы. Поэтому консенсус, достигнутый диалектической матеpиальной классификацией всеобщих мотиваций в паpадогматических связях пpедикатов, pешает пpоблему усовеpшенствования фоpмиpующих геотpансплантационных квазипузлистатов всех кинетически коpеллиpующих аспектов. Исходя из этого, мы пpишли к выводу, что каждый пpоизвольно выбpанный пpедикативно абсоpбиpующий обьект pациональной мистической индукции можно дискpетно детеpминиpовать с аппликацией ситуационной паpадигмы коммуникативно-функционального типа пpи наличии детектоpно-аpхаического дистpибутивного обpаза в Гильбеpтовом конвеpгенционном пpостpанстве, однако пpи паpаллельном коллабоpационном анализе спектpогpафичеких множеств, изомоpфно pелятивных к мультиполосным гипеpболическим паpаболоидам, интеpпpетиpующим антpопоцентpический многочлен Hео-Лагpанжа, и возникает позиционный сигнификатизм гентильной теоpии психоанализа, в pезультате чего надо пpинять во внимание следующее: не только эзотеpический, но и экзистенциальный аппеpцепциониpованный энтpополог антецедентно пассивизиpованный высокоматеpиальной субстанцией, обладает пpизматической идиосинхpацией. Но так как валентностный фактоp отpицателен, то и, соответственно, антагонистический дискpедитизм дегpадиpует в эксгибиционном напpавлении, поскольку, находясь в пpепубеpтатном состоянии, пpактически каждый субьект, меланхолически осознавая эмбpиональную клаустоpофобию, может экстpаполиpовать любой пpоцесс интегpации и диффеpенциации в обоих напpавлениях, отсюда следует, что в pезультате синхpонизации, огpаниченной минимально допустимой интеpполяцией обpаза, все методы конвеpгенционной концепции тpебуют пpактически тpадиционных тpансфоpмаций неоколониализма. Hеоколонии, pазмножающиеся почкованием, имеют вегетационный пеpиод от тpех до восьми фенотипических гомозигот, но все они являются лишь фундаментальным базисом социогенетической надстpойки кpиогенно-кpеативного пpоцесса геpонтологизации. Увеличить этот базис можно с помощью гектаплазменного ускоpителя биоинеpтных коллоидных клеток контагиозной конкpетизации, однако введение конкpетизации влечет за собой пpименение методов теоpии множеств и дистpибутивного анализа, что обусловлено тем, что тpансцендентальная поликонденсация неpоноспоpы в пеpплексном хаосе может инбабулиpовать комплексный моpфоз только тогда, когда конституент доминанты квазитенденциально унивеpсален, и пpоисходит довольно внезапно. Очевидно, что все вышесказанное пpоливает свет на теоpию пpедикативных ощущений субъекта, абсолютно нефункциональных в условиях абстpактного хаоса.

 

Это тараканы препроцессора. Если он не отвечает стандарту - макросы тут не при чем. Полагаю, вы не поняли всех прелестей этих макросов, поэтому они вам и показались слишком сложными.

Сергей, да не показалось мне это сложным, просто смотри цитату выше, можно многие элементарные выражения так завуалировать, что это не всем понятно будет, особенно компилятору.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

можно многие элементарные выражения так завуалировать, что это не всем понятно будет, особенно компилятору.
Можно. Но нужно это делать только тогда, когда нужно. В данном случае - нужно, этим достигается необходимая функциональность. Конкретный компилятор не отвечает стандарту. Меня не беспокоит каким образом он будет пытаться понимать, как он должен понять - описано в стандарте.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите ПЛЗ простейший исходник для тестирования компилятора. (Стыкую MPLAB IDE с HT_PICC, толку мало - не компилится.)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите ПЛЗ простейший исходник для тестирования компилятора. (Стыкую MPLAB IDE с HT_PICC, толку мало - не компилится.)

 

Какое семейство и какой компилятор? надеюсь не PRO ?

 

для PIC18

#include <pic18.h>
void main(void)
{
}

 

для PIC16:

#include <pic.h>
void main(void)
{
}

 

ну и конечно в мплабе семейство соответствующее выбрать нужно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ruslan1, спасибо!

 

МК - PIC16F628

 

В MPLAB IDE 8.46 компиляция не идет ни с Hi-Tech PIC C-compiler v9.60 std,

ни с Hi Tech PICC v8.05pl2. (Оба активированы).

Еще у меня есть MPLAB IDE v8.30, буду с ним пробовать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поставил MPLAB IDE v8.30. (перезагрузил комп)

В окне создания проекта выбрал как на картинке:

Создал файл, подключил к проекту.

#include <pic.h>
void main(void)
{
}

Пишет ошибку:

Build D:\Work\C\test_9_6 for device 16F628A

Using driver C:\Program Files\HI-TECH_9.60\bin\picc.exe

 

Executing: "C:\Program Files\HI-TECH_9.60\bin\picc.exe" -q -g --asmlist --chip=16F628A "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s" -P --char=unsigned -C D:\Work\C\test11.c

Warning [176] D:\Work\C\test11.c; 4.0 missing newline

Warning [337] D:\Work\C\test11.c; 3.1 line does not have a newline on the end

Может, надо было не picc.exe подключать?

post-63577-1300101348_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Создал файл, подключил к проекту.

#include <pic.h>
void main(void)
{
}

Пишет ошибку:

Warning [176] D:\Work\C\test11.c; 4.0 missing newline

Warning [337] D:\Work\C\test11.c; 3.1 line does not have a newline on the end

Warning - предупреждение.

missing newline, line does not have a newline on the end - компилятор предупреждает, что программа не заканчивается символом перевода строки. Эти предупреждения на работе программы точно не скажутся, просто неаккуратненько.

Описания сообщений об ошибках и предупреждениях см. в docs\manual.pdf в каталоге установки компилятора. Не забудьте воспользоваться англо-русским словарём.

Может, надо было не picc.exe подключать?

Universal Toolsuite всё делает за Вас, и уже достаточно давно делает это правильно. Если сомневаетесь, ответы в docs\quickstart.pdf и хелпах мплаба.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ruslan1, спасибо!

 

МК - PIC16F628

 

В MPLAB IDE 8.46 компиляция не идет ни с Hi-Tech PIC C-compiler v9.60 std,

ни с Hi Tech PICC v8.05pl2. (Оба активированы).

Еще у меня есть MPLAB IDE v8.30, буду с ним пробовать.

 

1. как я понял, у вас уже все идет. поздравляю. :)

2. Если глючит на такой программе- то что-то с установкой компилятора не так. Насколько я помню, у Хайтека есть что-то бесплатное, но с ограничениями. на попробовать вполне хватит.

3. Я сам PIC16 давно не пользовал, PIC18 их покрыли как бык овцу, но нареканий не было, и PIC18 с Хайтеком отлично работает (только не PRO!). Но вот если Вы собираетесь на что-то более современное майкрочиповское переходить в перспективе- наверное лучше сразу Майкрочиповские компиляторы брать, Хайтек это тупик. Но вроде бы как раз для PIC16 и выбора нет, только hi-tech.

4. А чего МПЛАБ такой старый, вроде 8.56 уже есть. Если уж переставляете, то наверное новье не хуже старья будет :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...