#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