在 AVR 中断中保留 sreg
AVR 微控制器中用于保存状态寄存器 sreg 的机制是什么? RETI
意味着这些位不在堆栈上。通用寄存器之一也是 sreg 或类似的东西吗?
What is the mechanism used to preserve the status register, sreg, in an AVR microcontroller? RETI
implies that these bits are not on the stack. Is one of the general purpose registers also the sreg or something like that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
每个 AVR 数据表中对此都有解释。例如,ATtiny2313 数据表的第 8 页显示:
您可以通过将其存储在临时寄存器中来实现此目的:
另请注意,如果您正在访问不专门用于此中断例程的寄存器,您也需要保存这些寄存器。此外,如果寄存器不足,您可以将 SREG 的值推送到堆栈:
有关详细信息,请参阅 此处。
This is explained in every AVR datasheet. For example on page 8 of the ATtiny2313 datasheet it says:
You can achieve this by storing it in a temporary register:
Also note that if you're accessing registers that are not exclusively used in this interrupt routine, you need to save those, too. Furthermore you can push the value of SREG to the stack if you're low on registers:
For more information look here.
或者
和
似乎是有效的。
Alternatively
and
seems to be valid.