This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

能不能帮助详细解释一下FR573X的Erratasheet中的这一条?



 

 

CPU40

CPU Module

Function

PC is corrupted when executing jump/conditional jump instruction that is followed by

instruction with PC as destination register or a data section

Description

If the value at the memory location immediately following a jump/conditional jump

instruction is 0X40h or 0X50h (where X = don't care), which could either be an

instruction opcode (for instructions like RRCM, RRAM, RLAM, RRUM) with PC as

destination register or a data section (const data in flash memory or data variable in

RAM), then the PC value is auto-incremented by 2 after the jump instruction is executed;

 

therefore, branching to a wrong address location in code and leading to wrong program

execution.

For example, a conditional jump instruction followed by data section (0140h).

@0x8012  Loop    DEC.W R6

@0x8014          DEC.W R7

@0x8016          JNZ Loop

@0x8018  Value1  DW 0140h

Workaround In assembly, insert a NOP between the jump/conditional jump instruction and program

code with instruction that contains PC as destination register or the data section.

 

能不能用中文帮助解释一下怎么回事?省时间不解释也行,请问是不是给了汇编中的处理方法,那么C编程的时候会遇到这种情况么?