Попробуй
#define KT_PORT (B)
#define KT_PIN (0)
#define DATA_OUT(port, pin) _DATA_OUT(port, pin)
#define _DATA_OUT(port, pin) sbi(DDR##port, PORT##port##pin)
А у тебя после первого прохода препроцессор получает
sbi(DDRKT_PORT, PORTKT_PORTKT_PIN);
что естественно не понимает, поэтому используется дополнительный этап прекомпиляции для разворачивания вложенных макросов.
И усе должно быть ок!
PS: Микрософтовский компилер все-равно не поймет - у него другая методика анализа, а иар, кейл, кодевижен, борланд и др. понимают =)))