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.

[参考译文] MSP430G2433:寻址模式和调试

Guru**** 2387830 points
Other Parts Discussed in Thread: MSP430G2433
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1180500/msp430g2433-addressing-mode-and-debugging

器件型号:MSP430G2433

嗨、我目前正在尝试使用汇编语言在 MSP430G2433中实现时间敏感型中断。 我想知道是否可以对端口和计时器寄存器等外设地址使用寄存器寻址模式?

此外、我似乎会得到不同的计时器计数、具体取决于我在调试时是单步执行还是运行、这是正常问题吗?
我指的是何时使用 SMCLK 作为时钟来计算 TA0R 和 TA1R 中的计数

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    当然、您可以使用寄存器寻址模式、但速度可能不会快。 与源模式相比、目的寻址模式受到限制。 具体而言、虽然可以将"@R15"写入目标模式、汇编器会很乐意接受该模式、但您得到的结果是0 (R15)。 它需要与地址执行相同的时间。

    调试时、我不希望获得准确的计时器计数、因为调试器将对时钟执行一些操作。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢你们的回应:-)
    您能否举一个在外设地址上使用寄存器模式寻址的示例?
    我尝试以不同的格式写入寄存器、但似乎寄存器模式是以我找不到的特定格式写入的、或者只是不打算用于 PC、SP、SR 和 R3-R15以外的其他格式。
    我 以前在使用间接寻址模式("@Rn")时没有遇到任何问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    除了 r0-R15、没有 CPU 寄存器。 我开始认为您对术语感到困惑。 器件寄存器只是存储器中的特殊位置、不是 CPU 寄存器。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    哦,可能是这样的,我在这个领域是相当新 的:-)  
    考虑到外设的地址也会被视为寄存器、因为它们被数据表中的"寄存器"所指的位置。 由于我找不到任何指定寄存器寻址模式只在 CPU 寄存器上工作的内容、我希望情况不是这样。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。


    我正在处理的项目很快将在上图中描述。 我明白我所提出的问题可能比我原先预期的更复杂。
    在图的步骤1中,“nop”和“adc.w R10”指令需要1个时钟周期才能执行。
    但是,“mov.b P1IN,P2OUT”需要6个时钟周期,“RRa.b P2OUT”需要4个时钟周期。
    是否有任何方法可以使 mov 和 RRA 指令使用更少的时钟周期?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    否 每个存储器访问基本上需要1个周期的指令。 因此、对于 mov.b &P1IN、&P1OUT:

    1) 1)提取指令

    2)获取第一个操作数(&P)

    3)获取第二操作数(&P)

    4) 4)读取 P1IN 处的存储器

    5) 5)在 P1OUT 处写入存储器。

    如果 P1IN 的地址在寄存器中、则可以将其缩短一个周期、但代价是需要两个周期的指令才能将其实现。 您无法使用 P1OUT 地址保存周期、因为没有@Rx 寻址模式。 只需编制索引、即使为零、仍需提取索引。

    (注意:出于某种原因、CPU 的 CPUx 版本在五个周期内执行此指令、而旧的 CPU 则需要六个周期。 我不知道它浪费周期的原因和地点。)