Da "C", außer bei einfachsten Befehlen, sowieso Funktionen einbindet,
warum nicht?
Normalerweise kannst Du innerhalb von Unterbrechungen machen was Du
willst.
Wichtig ist nur, dass Du garantiert fertig wirst, mit etwas Reserve,
bevor ein erneuter Aufruf erfolgt.
Schön wäre es auch, wenn noch etwas Zeit, für die Hauptroutine und
eventuelle andere Unterbrechungen, übrig bleibt.
Alles in allem ein zeitliches Problem. Es besteht ja auch kein
Unterschied zwischen einem linearen Programmablauf und einem mit
Unterprogrammen.
Natürlich kosten der Aufruf (call), ein eventuelles Registersichern
(push), die Restauration von Registern (pop) und der Rücksprung ihre
Zeit (ret).
Bei längeren Routinen ist das prozentual Vertretbar. Für kürzere
Sequenzen bietet sich die Anweisung Inline an.
Ob damit mehr als das call und ret gespart werden ist eine andere Sache.