Важная, часто вызываемая функция, критическая к тактам. Резонно в ней используется встроенный асм и запрет прерываний. Смотрю листинг.
// Вспомогательный макро. Вход в критическую сексию.
define ENTER_CRITICAL_REGION() uint8_t volatile saved_sreg = SREG; \
cli();
// Сама вызываемая Функция.
void CCPWrite (volatile unsigned char *address, unsigned char value)
CCPWrite: {
\ SBIW R29:R28, 1
ENTER_CRITICAL_REGION( ); //Раджив знает, что надо запретить прер.
\ IN R16, 0x3F
\ ST Y, R16
\ CLI //Раджив их запрещает.
asm("movw r30, r16"); //хочет взять аргументы.Что ты делаешь, сикх?!
\ movw r30, r16 //Ты уверен в R16?
......