【问题标题】:Can someone help me explain the concept of bank select register? [closed]有人可以帮我解释一下银行选择寄存器的概念吗? [关闭]
【发布时间】:2016-11-05 08:50:45
【问题描述】:

有人可以帮我解释一下关于微控制器的银行选择寄存器的概念吗?我正在使用 PIC18F,并且正在阅读和学习课堂上的数据移动。 银行选择寄存器和访问银行的概念对我来说仍然是新的和困惑的。 (尤其是访问银行,当我进行谷歌搜索时,我看到的都是关于普通银行的东西=[)

我读到的令人困惑的例子:

指令:CLRF F,a ==========> 将数据寄存器 F 清零。如果 a = 0,F 位于 access bank 中,如果 a = 1,F 位于 BSR 指定的 bank 中

指令 MOVWF F,a =========> 将数据从 WREG 移入数据寄存器 F。如果 a = 0,F 位于访问 bank,如果 a = 1,则位于 BSR 指定的 bank。

^我了解 WREG 等的第一部分...,但并不真正理解访问银行和 BSR。如果有人知道任何资源或任何可以提供帮助的东西,我们将不胜感激:)

【问题讨论】:

  • 数据表/参考手册中具体的哪些内容您不明白? PIC 文档对此非常清楚。
  • 这个概念?通常:假设 micro 可以寻址 64k 字节,但您希望它具有 128k 字节的 RAM。这不能直接完成,但可以通过拥有 8 个每个 16k 字节的 bank 和一个分页寄存器来选择 8 个 bank 中的哪一个是可评估的来解决。所选择的内存库会出现在内存映射中的同一位置,并且一次只能读取/写入一页。

标签: c assembly binary microcontroller


【解决方案1】:

对存储体的需求来自 PIC 寻址 12 位地址空间的能力,而单字节地址仅适合 8 位。因此,您需要将高四位设置为 Bank Select Register (BSR)。

这种寻址方案很快成为一种负担,因为用于在存储体之间切换的指令开始乱扔汇编程序的文本,这不是特别容易阅读,并且因为这些指令占用了宝贵的空间。为了缓解这个问题,PIC架构引入了所谓的access bank

Access bank 包含一部分 0..128 个特殊字节的特殊地址空间,分布在 BANK 0 中,加上最后一个 bank 中的一些寄存器。 PIC 让您无需切换银行即可访问这些位置,只需将a 设置为零即可。通过将经常访问的数据放在访问寄存器中并使用快速访问寻址模式,仔细规划内存使用可以节省大量程序内存。

有关此主题的更多信息,请参阅此Q&A

【讨论】:

  • 请注意,PIC18F 经常以扩展模式执行,该模式将访问中的固定 RAM 换出从 FSR2 索引的内存,从而允许有效访问本地堆栈帧上的变量以简化 C 代码生成。 I/O 单元仍然存在。
猜你喜欢
  • 2014-04-12
  • 1970-01-01
  • 2017-03-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-26
  • 1970-01-01
  • 1970-01-01
  • 2013-08-26
相关资源
最近更新 更多