【问题标题】:Assembler to C conversion INCF and CPFSLT汇编器到 C 的转换 INCF 和 CPFSLT
【发布时间】:2012-01-09 10:41:42
【问题描述】:

这两个代码意思一样吗?

Assambler ->

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

C->

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

如果不是,assambler 代码应该如何翻译?

亲切的问候:)

【问题讨论】:

  • 这是什么 CPU/架构?
  • 是微芯的PIC18F87J50编译器C18

标签: c microchip interrupt pic18


【解决方案1】:

第一个答案是否定的,但我不知道怎么翻译!

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

WREG = PR +1;

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

=> 如果 TMR4 如果 TMR4 >= WREG

应该给予:

if (TMR4 >= WREG)
    WREG = PR4 + 1;

嗯……对吗?

【讨论】:

    【解决方案2】:

    谁能验证一下,我认为下面的代码是正确的!

    _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
    

    【讨论】:

      猜你喜欢
      • 2014-08-20
      • 1970-01-01
      • 1970-01-01
      • 2019-03-05
      • 2014-06-13
      • 2021-04-23
      • 1970-01-01
      • 2011-01-24
      • 1970-01-01
      相关资源
      最近更新 更多