ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 марта
166328 Топик полностью
Vladimir Ljaschko (11.09.2009 08:33, просмотров: 159) ответил Vit на Спасибо. ...изврат ещё тот.
А без оптимизатора задача не имеет решения, иначе нужна отсутствующая вложенность определений. Из-за наличия нескольких очень похожих проектов буквально на днях сделал такое структурирование доступа к портам для MSP: // описание выводов (ввод и вывод могут совпадать, возможны несколько //бит и инверсия порта на вводе) INPUT ( SdaIn , P2 , 0x01 ) OUTPUT ( Sda , P2 , 0x01 ) ADC ( PowerAdc , ADC12MEM6 , 0x40 ) FUNCTION ( SdaLow , P2DIR, mSda ) ... //описание порта направление-начальное значение - маска //функциональных выводов PORT ( P1 , mPulseWdt | mBacklight , 0 , mIrdaTx ) Которые разворачиваются в инлайновые: GetPin(SdaIn); OnPin(Sda); OffPin(Sda); OnFunction(SdaLow); OffFunction(SdaLow); Ну и в ConfigPorts(void) включается инициализация регистров DIR, OUT и SEL. Для конкретного примера с sda OUTPUT можно не определять - управление производится с помощью направления. Пока проблем нет, всем доволен. Беспокоит, конечно, что все отдано на откуп оптимизатору плюс "инлайнингу". Кстати, вчера увидел, что версия 421 химичит с инлайном - вроде включает функцию в код, но самостоятельно группирует отдельные фрагменты кода функции. Нужно проверить, что стоит в оптимизаторе, не balanced ли.