Olá Mulder_Fox, não estou abusando da sua boa vontade, mas preciso tirar uma dúvida referente a oitava parte do seu tutorial, entendi perfeitamente como funciona o modo capture e também como realizar os cálculos, porém nesse trecho de subtração ocorre que:
CALC_INC MOVF REG1A,W ;W = REG1A SUBWF REG1B,F ;REG1B = REG1B -REG1A BTFSC STATUS,C ;RESULTADO NEGATIVO? GOTO SEG_SUB ;NÃO DECF REG2B,F ;SIM, DECREMENTA REG2B MOVLW .255 ;W = 255 XORWF REG2B,W ;W = REG2B XOR 255 BTFSS STATUS,Z ;REG2B = 255? GOTO SEG_SUB ;NÃO
Se por acaso o STATUS constar que o valor é negativo, ele decrementa o REG2B e verifica se o mesmo é igual a zero para posteriormente se for necessário decrementar o REG3B, porém não deveríamos somar 10 na unidade (REG1B), conforme fazemos no método decimal?
Não estou dizendo que o programa esta errado, muito pelo contrário, pois montei na prática e funcionou perfeitamente e também na simulação do MPLAB, a minha dúvida é onde é realizado esse (acréscimo de 10) para tornar possível uma subtração positiva?
Analisei um pouco aqui mais não sei se estou falando besteira, se eu estiver me corrija por favor, ao realizar o teste do STATUS,C ele mesmo se encarregará dessa função de acréscimo para tornar a subtração positiva?