Vladimir Ljaschko (16.09.2010 23:10, просмотров: 167) ответил Cepгeй Бopщ на у вас 16-битная шина разбросаная по двум портам в одном проце и занимающая половину порта на втором. Сколько займет портирование макросов? С этой библиотекой оно сведется к указанию других ножек в объявлении.
16-битная шина на разных портах? Пример не очень жизненный. Я использую такое определение портов и такие обращения к ним. И даже это считаю перебором. В данном случае я склоняюсь к мнениям zltigo и fk0, но слишком много проектов на одной плате. Хотел бы представить, как можно портировать автоматическое включение функционального вывода AVR при программировании соответствующей периферии контроллера AVR на другой контроллер.
// name port bit
OUTPUT ( PulseWdt , P1 , 0x01u )
OUTPUT ( Backlight , P1 , 0x02u )
OUTPUT ( EmptyError , P1 , 0x04u )
INPUT ( EmptyErrorIn , P1 , 0x04u )
OUTPUT ( IrdaTx , P1 , 0x08u )
INPUT ( KeyStIn , ~P1 , 0x10u )
INPUT ( KeyDnIn , ~P1 , 0x20u )
INPUT ( KeyFnIn , ~P1 , 0x40u )
INPUT ( KeyUpIn , ~P1 , 0x80u )
INPUT ( KbdIn , ~P1 , 0xf0u )
INPUT ( FnFreeIn , P1 , 0x40u )
#pragma inline=forced
unsigned char GetPin(unsigned int name);
#pragma inline=forced
void OnPin(unsigned int name);
#pragma inline=forced
void OffPin(unsigned int name);
#pragma inline=forced
void TogglePin(unsigned int name);
#pragma inline=forced
void OnFunction(unsigned int name);
#pragma inline=forced
void OffFunction(unsigned int name);
#pragma inline=forced
unsigned int GetAdc(unsigned int name);
#pragma inline=forced
void PortsConfiguration(void);