OS_RI (temp_gie)
Восстановить сохраненные в OS_DI значения GIEx. Для PIC16 восстанавливается GIE. Для PIC18 при IPEN=1 восстанавливаются GIEH и GIEL, а при IPEN=0 - только GIEH.
Если перед вызовом OS_DI GIE = 0, а после вызова он устанавливается сервисом OS_EI, то OS_RI не восстановит нулевое значение GIE.
Только не из прерывания
temp_gie |
Сохраненные сервисом OS_DI значения битов GIEx |
Нет
void Task (void) { char temp; for (;;) { /*...*/ temp = OS_DI(); // Прерывания запрещены, а GIEx - сохранены в temp /*...*/ OS_RI (char); // GIEx восстановлены из temp /*...*/ } }