汇编程序到C转换INCF和CPFSLT

时间:2012-01-09 10:41:42

标签: c microchip interrupt pic18

这两个代码是否相同?

Assambler - >

_asm
    INCF PR4,0,ACCESS
    CPFSLT TMR4,ACCESS
_endasm

C - >

++PR4;
if (PR4 < TMR4)
   PIR3bits.TMR4IF = 1;

如果没有,应如何翻译assambler代码?

亲切的问候:)

2 个答案:

答案 0 :(得分:0)

第一个答案是否定的,但我不确定如何翻译它!

INCF PR4,0,ACCESS //(INCF f,d)(增量f)(f + 1 - &gt; d) “递增PR4寄存器”工作寄存器(累加器)“在ACCESS中换句话说: 获得PR_L的PR +1

WREG = PR +1;

CPFSLT TMR4,ACCESS //(CPFSLT f)(比较f / w,如果f

=&GT;如果TMR4&lt; WREG =&GT;如果TMR4> = WREG

应该给:

if (TMR4 >= WREG)
    WREG = PR4 + 1;
嗯......对吗?

答案 1 :(得分:0)

其他人可以验证这一点,我认为下面的代码是正确的!

_asm
    INCF PR4,0,ACCESS  //PR4+1 destination WREG, Access bank
    CPFSLT TMR4,ACCESS //Compare TMR4 with contents of WREG in Access bank, Skip if TMR4 < WREG
_endasm
/* Above says: if (TMR4 <= PR4 + 1)*/
    PIR3bits.TMR4IF = 1; // Then do this line