Поработаю за деЮзера, чтоб ему поменьше исправлять). Применение операции |= опасно тем, она может в регистре очистить лишние, чужие флаги от других прерываний с тем же или меньшим приоритетом, которые спокойно дожидались своей очереди на активацию. |= убьет их ихними же 1, и они пропадут, и никто не узнает что они вообще были.