根据经验发现该程序段有几处问题,每条语句详解见下
INCF MAL,F ;MAL寄存器内的值+1后,将结果送入本身寄存器
MOVLB H'03' ; 将存储区号03送入存储区选择寄存器BSR
MOVF UARTRX_R_DCNT,W,1 ;这条语句应该有语法错误,该指令的逗号后面应该是F或者W,也可以写成1或者0,不能同时跟W再(,1)。
;该指令的寄存器后面跟(,W),表示将寄存器里的值送入临时寄存器W里,如果后面跟的是(,F),表示将值送入本身寄存器
MOVLB H'00' ; 将存储区号01送入存储区选择寄存器BSR
SUBWF MAL,W ;用MAL里的值减去W寄存器里的值,结果送入W寄存器
BTFSS FC ;该指令语法有错,初衷应该是想判断FC里的值的某位为1进行跳转,但该条语句没有指明是判断哪一位的值
GOTO UART_RX_INTDATA;跳转到该标号所指的程序段
追答之前这句描述有误,更正一下
MOVLB H'00' ; 将存储区号00送入存储区选择寄存器BSR