QUOTE (Makeda @ Aug 10 2012, 17:48)

Нельзя ли без него, использовать переменную a в самой программе.
Можно. Компилятор делает тупую текстовую подстановку. Но когда в процессе макетирования или в следующем проекте вы захотите перенести этот сигнал с P2^6 на P2^5, проще поменять один #define, чем ползать по всем исходникам. И нет риска по невнимательности оставить в каком-то месте программы P2^6 и потом долго медитировать - почему программа перестала работать.
Кроме того, читая чужую (или свою через несколько дней) программу и встретив, скажем, выражение variable = KEY_OK; вы сразу поймете, что здесь читается кнопка OK, а встретив variable = P2^6 - будете отвлекаться и заглядывать в схему.