Grundsätzlich geht sowas. Und die Funktion sieht auch nicht so teuer aus. Im schlimmsten Fall nimmst Du eben die Baudrate runter auf 9600 Baud. Und weil es eine Funktion ohne Seiteneffekte ist brauchst Du auch nirgends volatile. Volatile brauchst Du eigentlich nur bei (globalen) Variablen auf denen Du in Interrupts Seiteneffekte erzeugst.