Я использовал этот макрос в компиляторе xc8 из микрочипа:
#define Unlock() \
do { \
asm("BANKSEL PPSLOCK"); \
asm("MOVLB PPSLOCK"); \
asm("MOVLW 0x55"); \
asm("MOVWF PPSLOCK"); \
asm("MOVLW 0xAA"); \
asm("MOVWF PPSLOCK"); \
asm("BCF PPSLOCK,0"); \
} while (0)
Это специальная последовательность, упомянутая в таблице данных, чтобы разблокировать выбор периферийных выводов.
И всегда получать эти предупреждения:
../_main.c:437: warning: (1352) truncation of operand value (0xea0) to 8 bits
../_main.c:437: warning: (1352) truncation of operand value (0xea0) to 8 bits
../_main.c:440: warning: (1352) truncation of operand value (0xea0) to 4 bits
0xEA0
является адресом регистра PPSLOCK
, но я не вижу ничего для усечения, я просто записываю 8-битные значения в 8-битном SFR.