(19)中华人民共和国国家知识产权局
(12)发明专利说明书
(10)申请公布号 CN 1728109 A
(43)申请公布日 2006.02.01
(21)申请号 CN200510028228.2
(22)申请日 2005.07.28
(71)申请人 上海大学;上海电力学院
    地址 200444 上海市宝山区上大路99号
(72)发明人 胡越黎 曹家麟 冉峰 景蔚亮
(74)专利代理机构 上海上大专利事务所
    代理人 何文欣
(51)Int.CI
     
                                                                  权利要求说明书 说明书 幅图
(54)发明名称
      基于MCS-51架构的16M字节程序存储器寻址空间扩充方法
(57)摘要
      本发明涉及一种16M字节程序存储器寻址空间扩充方法。本方法是基于8051体系,采用分时复用的方法,对程序存储器进行分段辅助设计,将可寻址16M字节的程序存储空间划分为256段,段地址由高八位程序地址决定,共有256个段地址,每一个段内有64K字节的程序寻址空间,由程序地址的中八位和低八位程序地址决定段内地址,在地址总线不增加,和整个指令体系不变的情况下,使外部程序存储器寻址空间从64K字节扩充到16M字节,从而使基于MCS-51架构的微控制器能够运行大量算法极其复杂的程序。本16M字节程序存储器寻址空间扩充方法可应用于基于8051指令体系的单片微控制器,亦可应用于其它微控制器、微处理器等领域。
法律状态
法律状态公告日
法律状态信息
法律状态
权 利 要 求 说 明 书
1.一种基于MCS-51架构的16M字节程序存储器寻址空间扩充方法,基于8051体系,其特征在于:采用分时复用的方法,对程序存储器进行分段辅助设计,将可寻址16M字节的程序存储空间划分为256个段,段地址由高八位程序地址决定,共有256个段地址,每一个段内有64K字节的程序寻址空间,由程序地址的中八位和低八位程序地址决定段内地址,在地址总线不增加,和整个指令体系不变的情况下使外部程序存储器寻址空间从64K字节扩充到16M字节;
其具体步骤为:
a.设定段地址特殊功能寄存器ROM_DUAN,来确定高八位程序地址;
b.根据段地址产生的条件和情况的不同,对程序存储器寻址空间扩充操作中高八位程序地址的产生考虑以下四种情况,并设定相关信号:
(a)用户直接给出的段地址;
(b)中断/调用操作后返回的段地址;
(c)段地址自增;
(d)相对跳转后的段地址;
c.程序指针计数器PROGRAM_COUNTER的确定;
d.程序地址寄存器PROGA的确定。
2.根据权利要求1所述的基于MCS-51架构的16M字节程序存储器寻址空间扩充方法,其特征在于所述的设定段地址特殊功能寄存器ROM_DUAN的方法为:确定段地址特殊功能寄存器ROM_DUAN的地址为FFH,大小为8位,程序存储器16M字节寻址空间的高八位地址由此寄存器内的内容决定;
系统复位后,ROM_DUAN的值为#00H;它的值除了可以由用户自行定义以外,还可以由系统自动更新,来确定下一条指令地址的高八位。
3.根据权利要求1所述的基于MSC-51架构的16M字节程序存储器寻址空间扩充方法,其特征在于所述的根据段地址产生的四种情况下设定相关信号的具体步骤为:
a.REG_RESULT:用户自行定义的段地址内容8位寄存器;
ROM_DUAN_WRITE:对段地址特殊功能寄存器ROM_DUAN进行写操作的写有效信号(低电平有效);
当ROM_DUAN_WRITE信号为低电平时,REG_RESULT的值写入段地址特殊功能寄存器ROM_DUAN内;
b.两个由堆栈内弹出的8位数据:
字符串常量占ramXRAMDI:从外部数据存储器堆栈弹出的段地址内容;
SOURCE_DI:从内部数据存储器堆栈弹出的段地址内容;
当ISP_INUSE信号为“1”时,SOURCE_DI的值在C1P3先传送给中间变量寄存器ROM_DUAN_RET,先暂存24位程序地址的高八位,在CLP2由ROM_DUAN_RET寄存器传给段地址特殊功能寄存器ROM_DUAN;当ISP_INUSE信号为“0”时,XRAMDI的值在C2P2先传送给中间变量寄存器ROM_DUAN_RET,先暂存24位程序地址的高8位,在CLP2由ROM_DUAN_RET寄存器传给段地址特殊功能寄存器ROM_DUAN。
ISP_INUSE是一个判断信号,值为1时,表示堆栈处在内部数据存储器上;值为0时,表示堆栈处在外部数据存储器上;
c.ROM_0:用户无法访问,由硬件自动产生的值,保存着段地址自增一以后的值当程序顺序执行(无跳转和调用情况),发生跨段情况时,既当程序指针计数器PROGRAM_COUNTER的当前值为#0FFFFH时,并且下一个程序地址寄存器NEXT_PROGRAM_ADDR的值为#0000H时,ROM_0的值赋给段地址特殊功能寄存器ROM_DUAN,形成新的程序地址寄存器PROGA高八位值;
d.ROM_1:用户无法访问,由硬件自动产生的值,保存着段地址自减一以后的值当程序执行相对跳转指令后,如果发生了跨段的情况,即程序指针指向了下一个段或上一个段时,段地
址特殊功能寄存器会自动更新。如果向下跳转,那么ROM_0的值赋给ROM_DUAN;如果向上跳转,那么ROM_1的值赋给ROM_DUAN。
4.根据权利要求1所述的基于MCS-51架构的16M字节程序存储器寻址空间扩充方法,其特征在于所述的确定程序指针计数器PROGRAM_COUNTER的具体步骤为:
16位程序指针计数器PROGRAM_COUNTER由下一个程序地址寄存器NEXT_PROGRAM_ADDR组成。
5.根据权利要求1所述的基于MCS-51架构的16M字节程序存储器寻址空间扩充方法,其特征在于所述的确定程序地址寄存器PROGA的具体步骤为:
24位程序地址寄存器PROGA由段地址特殊功能寄存器ROM_DUAN和下一个
程序地址寄存器NEXT_PROGRAM_ADDR组成;
程序地址寄存器PROGA除执行MOVCS指令外,后十六位地址均与程序指针寄存器PROGRAM_COUNTER相同;当执行诸如MOVC A,@A+PC或MOVC A,@A+DPTR指令
的过程中,PROGRAM_COUNTER寄存器的值始终不变,而PROGA寄存器的内容改变为由8位段地址和16位(A+PC)或(A+DPTR)组成,使微控制器能从更处读取数据赋值给累加器A。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。