打印

关于数据存储体分页问题

[复制链接]
3415|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问题了,可以直接使用变量,

程序分页的问题,PICC规定单个子函数不超过2K指令,超过的话则必须进行分割,一般来说,超过2K指令的函数是很难出现的,除非你故意和MCU过不去,其余的就基本不用考虑程序空间分页的问题了。

如果用16F8X/9X等MCU,建议用C,这样可以让编译器帮你处理很多问题。
如果用ASM的话,建议你灵活使用BANKSEL,PAGESEL等伪指令,这样也能帮你很多忙。

AVR有他的优点,但也有不少缺点,PIC也有他的缺点,但也有很多优点,如果你能灵活掌握AVR,学习PIC也是很简单的事情,反之,也成立……

使用特权

评论回复
地板
guolun|  楼主 | 2007-10-4 15:32 | 只看该作者

感谢赐教。

再问个问题,做无刷电机控制,用AVR强,还是PIC强?很初级的问题。

使用特权

评论回复
5
yewuyi| | 2007-10-4 17:23 | 只看该作者

这个你要问XIE斑了……

对这个我是外行。

使用特权

评论回复
6
greenspace| | 2007-10-8 16:53 | 只看该作者

这种结构真是很繁琐

最近在修改一个别人的程序,感觉非常麻烦
原来的程序没有中断现场保存,现在要保存,地址定义就是个问题,0x70-0x7f已有他用,用其他的空间则四个bank对应的地址都要保留
用过一些不同的mcu,感觉这个最不爽了

使用特权

评论回复
7
yewuyi| | 2007-10-8 17:08 | 只看该作者

只能说明你的水平不够

用宏随便搞一搞就可以完成任务了。

自己想把……

使用特权

评论回复
8
544852010| | 2012-4-28 11:11 | 只看该作者
加油啊 ...

使用特权

评论回复
9
416775364TP| | 2015-10-19 00:46 | 只看该作者
yewuyi 发表于 2007-9-11 12:59
BANK的定义,如果不指定在哪个BANK,那么默认在BANK0,如果需要指定位置,则必须加关键字指定在哪个BANK, ...

定义一个大于2KW的常量数组在ROM里面有问题没有?

使用特权

评论回复
10
yewuyi| | 2015-10-19 13:33 | 只看该作者
416775364TP 发表于 2015-10-19 00:46
定义一个大于2KW的常量数组在ROM里面有问题没有?

在新版本的C编译器中没有问题,很老的老版本可能有点问题

使用特权

评论回复
11
416775364TP| | 2015-10-19 22:05 | 只看该作者
yewuyi 发表于 2015-10-19 13:33
在新版本的C编译器中没有问题,很老的老版本可能有点问题

谢谢!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

12

帖子

0

粉丝