Как избежать предупреждения 1352 в компиляторе xc8? - PullRequest
1 голос
/ 26 сентября 2019

Я использовал этот макрос в компиляторе 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.

1 Ответ

0 голосов
/ 26 сентября 2019

Операция MOVWF занимает всего 7 бит адресного операнда, а вы даете ему 12 бит.Вот почему вы должны выбрать банк заранее.

...