Вы можете рассчитать скорость передачи данных, используя следующую формулу:
U2BRG = (unsigned short int)(((float)PERIPHERAL_CLOCK / ((float)BAUD_RATE * (float)BAUD_CLOCK)) - (float)0.5);
Если для U2MODEbits.BRGH установлено значение High Baud Rate, то значение BAUD_CLOCK должно быть равно 4, в противном случае - 16.
А для записи символа путем опроса флага TRMT:
while(!U2STAbits.TRMT) {}
U2TXREG = (char) i;
Вы должны установить следующий бит только один раз, так как это процесс инициализации, нет необходимости делать это каждый раз, когда вы собираетесь отправитьchar.
U2STAbits.UTXEN = 1; // Make sure transmitter is enabled
И у вас также нет основного цикла while (), и ваша программа, вероятно, падает каждый раз, когда процессор завершает выполнение цикла for.