一种pic单片机的ram寻址方法

文档序号:9667269阅读:574来源:国知局
一种pic单片机的ram寻址方法
【技术领域】
[0001] 本发明涉及Pic单片机领域,尤其涉及一种PIC单片机的RAM寻址方法。
【背景技术】
[0002] 随着半导体和电子技术的发展,PIC(PeripheralInterfaceController,简称 PIC)单片机作为一种集成电路芯片,其CPU所需要处理的数据量也越来越大。在PIC单片 机结构中,RAM(随机存取存储器)作为可以随时读取、写存数据的存储器,在单片机数据读 写中起着重要作用。
[0003] RAM中具有一定数量的BANK区,在每个BANK区内设置有多个寄存器,庞大的数据 便是保存在这些寄存器中。当CPU读写RAM中的数据,即读写寄存器中的数据时,CPU通常 采用RAM寻址的方法来读写目标数据,即CPU依次遍历RAM中所有寄存器中的数据,直到找 到所要读写的目标数据为止。但是,由于存储在RAM中的数据量是庞大的,因此采用常规遍 历式的RAM寻址方法将带来巨大的工作量,会导致CPU读写目标数据的效率降低。

【发明内容】

[0004] 本发明所要解决的技术问题是针对上述现有技术提供一种能够避免CPU遍历寻 址所有寄存器,实现CPU快速读写目标寄存器中数据的PIC单片机的RAM寻址方法。
[0005] 本发明解决上述技术问题所采用的技术方案为:一种PIC单片机的RAM寻址方法, 用于读写目标寄存器中的数据,其特征在于,依次包括如下步骤:
[0006] 步骤1,将单片机的RAM寄存器分割成32个独立的BANK块区,按顺序分别对32个 BANK块区进行编号,并赋予每个编号BANK块区对应的等价数值;
[0007] 步骤2,将每个编号BANK块区分割成128个独立的包括有寄存器的内存单元,并对 各寄存器在对应内存单元中的地址进行统一编址;
[0008] 步骤3,依次分别对每个BANK块区进行统一编址,并分别赋予寻址标识符给每个 BANK块区的首地址;
[0009] 步骤4,把每个BANK块区统一编址的首地址赋予步骤3中BANK块区首地址的寻址 标识符;
[0010] 步骤5,对目标寄存器所在的BANK块区进行声明;
[0011] 步骤6,根据所要读写目标寄存器在对应内存单元中的地址,确定目标寄存器所在 BANK块区的寻址标识符,并得到该寻址标识符所对应BANK块区的首地址;
[0012] 步骤7,获取目标寄存器在对应内存单元中的地址以及对应该目标寄存器的BANK 块区首地址之间的地址差值,并读写该地址差值所对应的数据,即完成对目标寄存器中数 据的读写。
[0013] 进一步地,所述步骤1中每个编号BANK块区对应的等价数值以及步骤2中各寄存 器在对应内存单元中的地址均为十六进制地址。
[0014] 与现有技术相比,本发明的优点在于:在CPU需要读写目标寄存器中的数据时,只 需获取到目标寄存器所在BANK块区的寻址标识符后,通过寻址标识符得到对应的BANK块 区,并根据目标寄存器位于所在内存单元中的地址以及目标寄存器所在BANK块区的首地 址后,得到两个地址之间的地址差值,并对该地址差值进行读写,即完成对目标寄存器中数 据的读写。该PIC单片机的RAM寻址方法,既节约了CPU遍历所有寄存器的时间,提高了 CPU对目标寄存器中数据的读写效率,同时又满足对所有BANK块区的内存单元进行直接方 便的寻址读写操作。
【附图说明】
[0015] 图1为本发明中PIC单片机的RAM寻址方法流程示意图。
【具体实施方式】
[0016] 以下结合附图实施例对本发明作进一步详细描述。
[0017] 为了实现单片机CPU能够在RAM中快速的读写目标寄存器中的数据,如图1所示, 本实施例中PIC单片机的RAM寻址方法,依次包括了如下步骤:
[0018] 步骤1,将单片机的RAM寄存器分割成32个独立的BANK块区,按顺序分别对32个 BANK块区进行编号,并赋予每个编号BANK块区对应的等价数值;其中,每个编号BANK块区 对应的等价数值为十六进制;
[0019] 例如,每个BANK块区经顺序编号后,分别依次标记为ΒΑΝΚ00至BANK31,具体编号 如表1中所示;
[0020] 针对表1中已编号的32个BANK块区,依次赋予十六进制的等价数值给ΒΑΝΚ00 至BANK31,具体参见表2中所示,例如,BANK01块区被赋予的十六进制的等价数值为0X01, BANK10块区被赋予的十六进制的等价数值为0Χ0Α,BANK16块区被赋予的十六进制的等价 数值为0X10,而BANK26块区被赋予的十六进制的等价数值为0X1A;
[0021] 表1编号后的32个BANK块区
[0022]

[0023] 表2被赋予十六进制等价数值的BANK块区
[0024]
[0025] 步骤2,将每个编号BANK块区分割成128个独立的内存单元,内存单元中包括有寄 存器,并对各寄存器在对应内存单元中的地址进行统一编址;其中,本实施例中各寄存器在 对应内存单元中的地址为十六进制地址;
[0026] 步骤3,依次分别对每个BANK块区进行统一编址,并分别赋予寻址标识符给每个 BANK块区的首地址;
[0027] 如表3中,块区ΒΑΝΚ00的首地址为0X00,块区BANK01的首地址为0X80,依次可知 道其他剩余块区BANK02至块区BANK31的首地址;
[0028] ΒΑΝΚ00块区的首地址被赋予寻址标识符后为BANK00_ADDR,BANK01块区的首地址 被赋予寻址标识符后为BANK01_ADDR,依次类推,则BANK31块区的首地址被赋予寻址标识 符后为BANK31_ADDR;其中,寻址标识符用于标识对应的编号BANK,具体标识符的设定情况 参见表3 ;
[0029] 表3编号BANK首地址被赋予寻址标识符情况
[0030]
[0031 ]步骤4,Si母个bank厌凶轨一綱at的自mat赋亇钳步骤3议疋的BANK厌凶的首地 址标识符;
[0032] 步骤5,对目标寄存器所在的BANK块区进行声明;例如,设定目标寄存器 A(RegisterA)对应的内存单元地址为0XC87,确定寄存器A在BANK25块区,则选择利用 M0VLB指令对其声明,其声明格式为:MOVLBBANK25 ;
[0033] 步骤6,根据所要读写目标寄存器在对应内存单元中的地址,确定目标寄存器所在 BANK块区的寻址标识符,并得到该寻址标识符所对应BANK块区的首地址;
[0034] 具体到本实施例中,由于目标寄存器A对应内存单元中的地址为0XC87,确定目 标寄存器A在BANK25块区,查表3可知其对应的寻址标识符是BANK25_ADDR,从而确定 BANK25_ADDR所对应BANK25块区的首地址为0XC80 ;
[0035] 步骤7,获取目标寄存器在对应内存单元中的地址以及对应该目标寄存器的BANK 块区首地址之间的地址差值,并读写该地址差值所对应的数据,即完成对目标寄存器中数 据的读写;
[0036] 例如,在获取到目标寄存器A在对应内存单元中的地址0XC87以及其对应的编号 BANK25块区的首地址0XC80后,则计算地址之间的差值,即0XC87-0XC80 = 0X007,则CPU 通过对该地址差值0X007做数据读写操作,即完成对目标寄存器A中的数据进行读写操作。
[0037] 在CPU需要去读写目标寄存器中的数据时,本实施例中的RAM寻址方法不需要CPU 去遍历搜寻RAM中所有寄存器中的数据,而只需要通过获取到目标寄存器所在BANK块区的 寻址标识符后,则可以通过寻址标识符得到对应的BANK块区,并根据目标寄存器在对应内 存单元中的地址以及目标寄存器所在BANK块区的首地址后,利用两个地址之间的地址差 值,读写该地址差值,即完成对目标寄存器中数据的读写,从而节约了CPU遍历所有寄存器
【主权项】
1. 一种PIC单片机的RAM寻址方法,用于读写目标寄存器中的数据,其特征在于,依次 包括如下步骤: 步骤1,将单片机的RAM寄存器分割成32个独立的BANK块区,按顺序分别对32个BANK块区进行编号,并赋予每个编号BANK块区对应的等价数值; 步骤2,将每个编号BANK块区分割成128个独立的包括有寄存器的内存单元,并对各寄 存器在对应内存单元中的地址进行统一编址; 步骤3,依次分别对每个BANK块区进行统一编址,并分别赋予寻址标识符给每个BANK块区的首地址; 步骤4,把每个BANK块区统一编址的首地址赋予步骤3中BANK块区首地址的寻址标识 符; 步骤5,对目标寄存器所在的BANK块区进行声明; 步骤6,根据所要读写目标寄存器在对应内存单元中的地址,确定目标寄存器所在BANK块区的寻址标识符,并得到该寻址标识符所对应BANK块区的首地址; 步骤7,获取目标寄存器在对应内存单元中的地址以及对应该目标寄存器的BANK块区 首地址之间的地址差值,并读写该地址差值所对应的数据,即完成对目标寄存器中数据的 读写。2. 根据权利要求1所述的PIC单片机的RAM寻址方法,其特征在于,所述步骤1中每个 编号BANK块区对应的等价数值以及步骤2中各寄存器在对应内存单元中的地址均为十六 进制地址。
【专利摘要】本发明涉及PIC单片机的RAM寻址方法,通过分割RAM为32个独立编号BANK区后,将每个编号BANK块区分割成128个独立的具有统一编址的内存单元;依次分别统一编址每个BANK块区,并赋予寻址标识符给每个BANK块区的首地址,并把每个BANK块区首地址赋予BANK块区首地址的寻址标识符;声明目标寄存器所在的BANK块区,根据所要读写目标寄存器在对应内存单元中的地址,确定目标寄存器所在BANK块区的寻址标识符,得到该寻址标识符所对应BANK块区的首地址;获取目标寄存器在内存单元中地址以及对应该目标寄存器的BANK块区首地址之间的地址差值,并读写该地址差值所对应的数据,完成对目标寄存器中数据的读写。该寻址方法节约了CPU遍历所有寄存器的时间,提高了读写目标寄存器中数据的效率。
【IPC分类】G06F12/06
【公开号】CN105426318
【申请号】CN201510769544
【发明人】孙继国, 陈越华, 柯俊英
【申请人】宁波伟依特照明电器有限公司
【公开日】2016年3月23日
【申请日】2015年11月12日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1