тестилка
u16 Keyb = 0x1234;
#if 1
u8 cnt = 0;
for( u16 mask = (1 << 0); mask; )
{
if( Keyb & mask )
PORTA = 0xFF;
else
PORTA = 0x00;
mask <<= 1;
cnt++;
}
#else
for( u8 i = 0; i < 16; i++ )
{
if( Keyb & (1 << i ) )
PORTA = 0xFF;
else
PORTA = 0x00;
}
#endif
Первый вариант 29мкс, второй 140мкс
IAR optimize=speed_max,cpu=mega640 8MHz