синтаксическая ошибка рис. 18: RCNT РАВНО 0x20, а MYREG РАВНО 0x21

#inline-assembly #pic

#встроенная сборка #рис.

Вопрос:

Я использую pic 18F4550 с компилятором C от microchip версии 8.63. я использую следующий код из книги «Микроконтроллеры Pic и встроенные системы, использующие сборку и c для pic18».

В следующей строке кода я получаю синтаксическую ошибку: RCNT РАВНО 0x20, а MYREG РАВНО 0x21.

 _asm
    RCNT EQU 0x20
    MYREG EQU 0x21

    BCF TRISB,1
    MOVLW 0x41
    MOVWF MYREG
    BCF STATUS,C
    MOVLW 0x8
    MOVWF RCNT
    BSF PORTB,1
AGAIN
    RLCF MYREG,F
    BNC OVER
    BSF PORTB,1
    BRA NEXT
    OVER BCF PORTB,1
    NEXT DECF RCNT,F
    BNZ AGAIN
    BSF PORTB,1
_endasm
  

Комментарии:

1. Вашему компилятору / ассемблеру C, вероятно, нужен другой синтаксис для этих equates (EQU) — проверьте руководство.

2. В этом проблема. Я не нахожу это..

Ответ №1:

Согласно этой документации по микросхеме, директивы ассемблера (такие как EQU ) не поддерживаются для встроенного asm, поэтому #define это может быть единственным способом определения equates.

Изменить:

 RCNT EQU 0x20
MYREG EQU 0x21
  

Для:

 #define RCNT 0x20
#define MYREG 0x21