打印
[PIC®/AVR®/dsPIC®产品]

关于pic单片机的bank的一系列问题...

[复制链接]
1934|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Rain_King|  楼主 | 2013-10-16 14:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
由于是从51单片机转过来的,已经学了一段时间的pic单片机了,可是有一个问题一直很模糊就是关于bank存储器的使用,对于pic的一些bank知识也有一些了解,就是将数据存储器划分为几大块。现在的问题如下:
1、既然bank是将数据存储器划分为几大块,由于我用的是c语言编写的程序,那么在写程序时,如何将变量定义在一个bank上,定义在这个bank上有哪些规则;
2、在使用bank时,有哪些需要注意的;
3、不同bank上的变量时如何交流信息的,直接可以相互赋值么。。。
4、由于默认的是定义在bank0上的,我选择定义在其他bank上时,这个选择的规则是什么....(这个是最重要的),也就是说,我在使用bank时,那么多bank,我如何来分配,分配的规则是什么。。。。。
附加一个问题,就是在使用定时器时,有一个门控,这个门控指的是什么,有什么作用,一直不知道,可以解释一下么。。。。。
沙发
yklstudent| | 2013-10-16 14:55 | 只看该作者
不是汇编 C编译器都给你干了 你还想bank干嘛

使用特权

评论回复
板凳
zhgsun_sky| | 2013-10-16 15:34 | 只看该作者
pic使用汇编要麻烦很多,不但数据要考虑BANK问题,程序也要考虑PAGE的问题。但是用C就不用考虑太多,但是当数据超出BANK0(20A-7FH)时是要注明所在bank的,比如BANK1,而且当变量超出BANK0是编译也会提示错误的,不同BANK之间可以直接赋值。

使用特权

评论回复
地板
yewuyi| | 2013-10-16 16:07 | 只看该作者
1、既然bank是将数据存储器划分为几大块,由于我用的是c语言编写的程序,那么在写程序时,如何将变量定义在一个bank上,定义在这个bank上有哪些规则;
RE:用老版本的PICC16编译器时,如果你的变量总数超过一页,可以类同如下方式进行定义:bank1 int Count=0; 这么写之后,变量Count会被定位到bank1区域,如果没有使用类如bank1这种关键字,这默认在芯片的第一个bank空间,此时变量总数超过页面限制时,编译器会报错。
   在使用较新一点的PICC16编译器时,根据我的观察,大概是9.80版本之后的版本吧,这个bank1也可以不写了,编译器会自动按照bank顺序存放变量。
2、在使用bank时,有哪些需要注意的;
RE:如果用C,基本没啥要考虑的,编译器会自动帮你做好。
3、不同bank上的变量时如何交流信息的,直接可以相互赋值么。。。
RE:如果用C,则可以直接将一个变量的值赋给另一个变量,编译器帮你做好潜在的BANK切换。
4、由于默认的是定义在bank0上的,我选择定义在其他bank上时,这个选择的规则是什么....(这个是最重要的),也就是说,我在使用bank时,那么多bank,我如何来分配,分配的规则是什么。。。。。
RE:没什么规则,完全看你自己喜好,如果每个BANK比喻为一张纸的话,你想在哪张纸上写你的名字,完全看你自己愿意,但一般从严肃编写代码的风格来讲,基本都建议你按照bank顺序存放变量,这样比较便于阅读,也能减少编译器潜在的bank切换代码。
5、附加一个问题,就是在使用定时器时,有一个门控,这个门控指的是什么,有什么作用,一直不知道,可以解释一下么
RE:既然叫门控,它肯定要起到门和控的作用,门控信号控制着定时器的工作启停,相当于一个门控制着人的出入。

使用特权

评论回复
5
yewuyi| | 2013-10-16 16:08 | 只看该作者
PIC和老的51结构要较多的不同,当你搞明白了这两种,市面上所有的8位MCU种类,基本上你就都差不多搞懂了一大半。

使用特权

评论回复
6
Rain_King|  楼主 | 2013-10-17 15:40 | 只看该作者
yewuyi 发表于 2013-10-16 16:08
PIC和老的51结构要较多的不同,当你搞明白了这两种,市面上所有的8位MCU种类,基本上你就都差不多搞懂了一 ...

你解释的bank我明白了....但是那个门好像还是没有理解,直接说应用吧,这个一般应用在哪些方面......

使用特权

评论回复
7
Rain_King|  楼主 | 2013-10-17 15:40 | 只看该作者
zhgsun_sky 发表于 2013-10-16 15:34
pic使用汇编要麻烦很多,不但数据要考虑BANK问题,程序也要考虑PAGE的问题。但是用C就不用考虑太多,但是当 ...

明白的差不多了.......

使用特权

评论回复
8
Rain_King|  楼主 | 2013-10-17 15:40 | 只看该作者
yklstudent 发表于 2013-10-16 14:55
不是汇编 C编译器都给你干了 你还想bank干嘛

以前的没有这个嘛.........现在确实帮我做了..........

使用特权

评论回复
9
yewuyi| | 2013-10-17 17:31 | 只看该作者
Rain_King 发表于 2013-10-17 15:40
你解释的bank我明白了....但是那个门好像还是没有理解,直接说应用吧,这个一般应用在哪些方面...... ...

应用在哪里?

我的天,我哪知道大家都用在哪里?

计算机都用在哪里?这个不太好回答吧!?


这个东西说白了,就是可以用一个外部信号来触发它什么时候开始计算,什么时候停止计数,以前可能需要用IO来检测这个信号,然后软件控制计数器启停,现在不需要软件控制,可以直接让外部信号来控制它,那么就减少程序的工作量,并且可以更精确的计数。

使用特权

评论回复
10
Rain_King|  楼主 | 2013-10-17 17:47 | 只看该作者
yewuyi 发表于 2013-10-17 17:31
应用在哪里?

我的天,我哪知道大家都用在哪里?

哦,我明白了..............和捕捉有点类似....对不???

使用特权

评论回复
11
NE5532| | 2013-10-17 21:05 | 只看该作者
Rain_King 发表于 2013-10-17 15:40
以前的没有这个嘛.........现在确实帮我做了..........

用汇编的时候还是得Bank

使用特权

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

本版积分规则

个人签名:努力学习,积极回复,只为申请版主.......

29

主题

784

帖子

4

粉丝