关于数据存储体分页问题

[复制链接]
5153|10
 楼主| guolun 发表于 2007-9-11 09:51 | 显示全部楼层 |阅读模式
各位大侠,我刚学PIC单片机,被它的分页问题搞得头都大了,还是没弄懂。以前学AVR是没有这个问题的。大家是怎么理解的?如果用C语言写程序,是不是不用理会分页?象写AVR的程序一样?谢谢!!!
xieyuanbin 发表于 2007-9-11 11:06 | 显示全部楼层

因为指令字长的原因,直接寻址地址不可能很长

所以数据寄存器和程序存储器都是分页的,但在C中,一般不需要去理会数据寄存器的分页问题,编译器会自动分配,除非你特别指定。程序存储器需要注意一下分页,当你程序超过2KW时就要注意怎样安排你的程序空间。
yewuyi 发表于 2007-9-11 12:59 | 显示全部楼层

如果用PICC写的话

BANK的定义,如果不指定在哪个BANK,那么默认在BANK0,如果需要指定位置,则必须加关键字指定在哪个BANK,但在用的时候,一般不需要再考虑BANK问题了,可以直接使用变量,<br /><br />程序分页的问题,PICC规定单个子函数不超过2K指令,超过的话则必须进行分割,一般来说,超过2K指令的函数是很难出现的,除非你故意和MCU过不去,其余的就基本不用考虑程序空间分页的问题了。<br /><br />如果用16F8X/9X等MCU,建议用C,这样可以让编译器帮你处理很多问题。<br />如果用ASM的话,建议你灵活使用BANKSEL,PAGESEL等伪指令,这样也能帮你很多忙。<br /><br />AVR有他的优点,但也有不少缺点,PIC也有他的缺点,但也有很多优点,如果你能灵活掌握AVR,学习PIC也是很简单的事情,反之,也成立……
 楼主| guolun 发表于 2007-10-4 15:32 | 显示全部楼层

感谢赐教。

再问个问题,做无刷电机控制,用AVR强,还是PIC强?很初级的问题。
yewuyi 发表于 2007-10-4 17:23 | 显示全部楼层

这个你要问XIE斑了……

对这个我是外行。
greenspace 发表于 2007-10-8 16:53 | 显示全部楼层

这种结构真是很繁琐

最近在修改一个别人的程序,感觉非常麻烦<br />原来的程序没有中断现场保存,现在要保存,地址定义就是个问题,0x70-0x7f已有他用,用其他的空间则四个bank对应的地址都要保留<br />用过一些不同的mcu,感觉这个最不爽了
yewuyi 发表于 2007-10-8 17:08 | 显示全部楼层

只能说明你的水平不够

用宏随便搞一搞就可以完成任务了。<br /><br />自己想把……
544852010 发表于 2012-4-28 11:11 | 显示全部楼层
加油啊 ...
416775364TP 发表于 2015-10-19 00:46 | 显示全部楼层
yewuyi 发表于 2007-9-11 12:59
BANK的定义,如果不指定在哪个BANK,那么默认在BANK0,如果需要指定位置,则必须加关键字指定在哪个BANK, ...

定义一个大于2KW的常量数组在ROM里面有问题没有?
yewuyi 发表于 2015-10-19 13:33 | 显示全部楼层
416775364TP 发表于 2015-10-19 00:46
定义一个大于2KW的常量数组在ROM里面有问题没有?

在新版本的C编译器中没有问题,很老的老版本可能有点问题
416775364TP 发表于 2015-10-19 22:05 | 显示全部楼层
yewuyi 发表于 2015-10-19 13:33
在新版本的C编译器中没有问题,很老的老版本可能有点问题

谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

12

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部