Microchip
直播中

李蕊

7年用户 222经验值
私信 关注
[问答]

PIC1XF1XXX增强型中档器件的上下文保存

我正在使用PIC12F1840增强的中档设备。我正在为这些设备编写一个多任务操作系统PIC1XF1XXX。当事件发生时,我需要保存状态。我正在保存W、状态、BSR、ITCN、PCLAST、FSR0L、FSR0H、FSH1L、FSR1H。(我需要保存更多吗?)我需要一个地方来放置这9, 8位寄存器。当事件发生时,我不知道我在哪一个银行,我需要保存寄存器而不干扰它们的内容。所以我把它们保存在每个银行的临时空间。我正在使用CCS C。我不确定这些位置不会被CCS C或Microchip C所困扰(我该怎么办?)我很希望能够将它们保存在C(即核心)可以访问的9个变量中,但不知道我所处的银行是复杂的事物。我如何解决能够存储寄存器而不打扰他们的问题,不管我在哪家银行?

回帖(16)

丁亚念

2019-10-8 07:44:59
是什么触发了你的“事件”?如果它们是中断,那么PIC已经为您保存了大部分寄存器,您可以从上一个存储库中的阴影抓取位置检索它们。如果由于某种原因而不可行,则必须为操作系统保留一个全局寄存器。
举报

李天竹

2019-10-8 07:53:03
你说的“事件”是什么意思?如果是中断,那么硬件会自动将这些信息保存在银行31(INTCON除外)。如果不是中断,您只需要一个地方来保存BSR。然后你可以切换你的银行并保存剩下的。你可能需要保留一个公共空间(0x70~0x7f)。没有其他选择,因为你将无法恢复BSR不知道它在哪个银行。
举报

刁文洁

2019-10-8 08:06:18
打扰自己照顾自己。事件是操作系统宏调用,如.()或.()或在其中一个事件之后准备执行新任务。当产生或延迟宏激活时,所有寄存器(9)都需要保存,而不改变它们的上下文。每个银行的末端都有公共RAM。这就是我试图在不改变银行的情况下使用的方法。除非我能保存一个寄存器(BSR)?或FSR,然后保存到我自己的变量,我可以从我的C程序访问。
举报

刘馨

2019-10-8 08:25:56
请看RIC的回复。我有点得出这个结论(保存BSR),但我不知道什么bank将被用于我的C程序变量——我想我需要测试当我在C中保存一个变量时发生了什么,看看在执行赋值时使用哪些寄存器。除非我可以强迫CCS C使用银行1把我的临时保存区放在寄存器中。一旦我的寄存器被保存,我就可以把它们移到我的任务控制块保存区域。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分