#pragma CODE_SEG __NEAR_SEG NON_BANKED详解

  这要还是要从FLASH分页和非分页的区别说起。
    下面详细说一说,FLASH里非分页和分页的使用。 要明白一点,分页是不可见的,要用的时候PPAGE参与寻

址。
   FLASH里非分页工作机制
   FLASH一共为128K,一页是16K,那么应该有8页才是,但是实际只有6个分页。有2个非分页放在4000-7FFF
,和C000-FFFF两个逻辑地址窗里。那么,当程序的寻址在64K之内(2^16=64K,16位机的寻址能力是64K)时,
就不用分页了,直接使用那两个非分页的数据。实际上,3E页 3F页是可见的,其实他们就是那2个非分页的映

射。因此,使用非分页FLASH,就不须设置PPAGE寄存器,直接使用逻辑地址即可。

   这点我们可以从以下看出:

/* non-paged FLASHs */
      ROM_4000      = READ_ONLY     0x4000 TO   0x7FFF;
      ROM_C000      = READ_ONLY     0xC000 TO   0xFEFF;
PLACEMENT
      NON_BANKED,    INTO ROM_C000/*, ROM_4000*/;
   
    很直观地看出,把这两个可以直接使用逻辑地址的页面设为NON_BANKED, 那么中断函数放在NON_BANKED里
,就可以把函数放在64K的寻址程序段中。这么一来,进中断就方便多了,效率也高很多。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值