我需要计算来自串口的字节数,并在超过 300 时执行某些操作,但内存地址只能从 0 计数到 255,而且我不知道如何计数超过 255
抱歉,这是一个愚蠢的问题,但我没有 asm 开发经验......
PD:我知道我可以用 C 语言对图片进行编程,但我正在编辑一些以前为工作中的其他人制作的软件
图片16f77
COUNT
INCF COUNTRX,1
MOVLW D'255' ;need these value over 300
MOVWF VALUE
MOVF COUNTRX,W
SUBWF VALUE,W
BTFSS STATUS,0
GOTO ITSVALUE
GOTO NOTITSVALUE
最佳答案
有多种方法可以做到这一点,但是您需要额外的变量来存储大于 255 的结果:
1)使用额外的第九位,这样您就可以数到 511 (2^9 - 1)。
;Data memory definition
SomeVariable SET 1
#define CountRxBit9 SomeVariable, n ;define CountRxBit9 bit vhere n is in range 0..7
;...
;Clear variable
CLRF COUNTRX
BCF CountRxBit9
;...
;increment COUNTRX
INCF COUNTRX,1
BTFSC STATUS, 2 ;Test Zero flag after increment
BSF CountRxBit9 ;Set ninth bit if ZERO is one
2)使用一个额外的字节,这样您就可以数到 65535 (2^16 - 1)。
;Data memory definition
HighCountRxBit SET 1
;...
;Clear variable
CLRF COUNTRX
CLRF HighCountRx
;...
;increment COUNTRX
INCF COUNTRX,1
BTFSC STATUS, 2 ;Test Zero flag after increment
INCF HighCountRx, 1;Increment high byte of counter if ZERO is one
关于assembly - pic汇编中如何计算超过255?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18876540/