打印

关于4位机翻页操作的问题(使用芯片SH69P24)

[复制链接]
7569|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
中颖的芯片用了也有一段时间了,因为是做小家电的,一般程序都不超过2K,这次内容有点多,所以程序量超过了2K,这样涉及到了翻页的问题,我查找了一写资料看了下,关于翻页后程序具体如何写的资料比较少。看了《中颖单片机入门与实战》这份资料后发现关于也操作的信息如下:
例3-2-1:BANK之间的跳转
                PRG        0000H
                JMP         MAIN
                ...
MAIN:        LDI         IE,0
                ...                                      ;此段程序位于物理空间的BANK0中
LOOPBNK0:
                ...
                LDI          BNK,00H
                JMP          LOOPBNK1
                ...
LOOPBNK1:                                         ;此段程序位于物理空间的BANK1中
                ...
                LDI          BNK,01H
                JMP          LOOPBNK2
                ...
LOOPBNK2:
                ...
                LDI          BNK,02H
                JMP          LOOPBNK3               
                ...
LOOPBNK3:
                ...
                LDI          BNK,00H
                JMP          LOOPBNK0
               ...
看完以上资料后,我有疑问了,BNK是页操作的寄存器,对BNK进行操作从而达到翻页的目的,BNK=0时是0页,BNK=1时是1页,那么跳转到1页去的时候是不是应该先把BNK置成1呢?如LOOPBNK3下面跳转到LOOPNK0时,BNK是被置为0的。
还有,我使用的是SH69P24的芯片,对于页寄存器BNK好象找不到?
错误提示: symbol not defined
请教达人们帮助一下啊!
沙发
neyo.zhong| | 2011-5-5 11:47 | 只看该作者
本帖最后由 neyo.zhong 于 2011-5-5 11:51 编辑

其实不用这么麻烦,使用ORG来定义程序起始地址就可以了。
1.一般我将使用频率低,且运算速率要求不高的程序放在BANK0以外的页里面;
2.表格类数据,最好放在BANK0,BANK0以外处理起来麻烦;
3.BANK0调用子函数可以使用CALL和RTNI,BANK0以外的只能用JMP
例:
-------------------------------------------起始----------------------------------------------
                ORG        0000H
                JMP         MAIN
                ...
------------------------------------------主程序_BANK0---------------------------------------------
MAIN:
                LDI         IE,0
                ...
PROGRAM_BANK0:                               //注:PROGRAM_BANK0和PROGRAM_BANK1循环
                CALL      SUB_KEY
                CALL      SUB_DISP
                CALL      SUB_BUZZ
                ...............
------------------------------------------主程序_BANK1---------------------------------------------
PROGRAM_BANK1:
                JMP        SUB_XXX1
     BANK1_SUB_XXX1_RET:
                JMP        SUB_XXX2
     BANK1_SUB_XXX2_RET:
                JMP        PROGRAM_BANK0

------------------------------------------子函数_BANK0---------------------------------------------
SUB_KEY:
                ...........
                ...........
                RTNI

SUB_DISP:
                ...........
                ...........
                RTNI

SUB_BUZZ:
                ...........
                ...........
                RTNI

------------------------------------------子函数_BANK1---------------------------------------------
                ORG       0800H                      //注:BANK1的范围是800H~FFFH
SUB_XXX1:
                ...........
                ...........
                JMP       BANK1_SUB_XXX1_RET

SUB_XXX2:
                ...........
                ...........
                JMP       BANK1_SUB_XXX2_RET

                ..................
                ..................
                END

使用特权

评论回复
板凳
yuying610|  楼主 | 2011-5-5 14:26 | 只看该作者
:(  我现在要处理的有红外的发射,接收(做到定时中断里了), 3x4的距阵LED处理,按键处理以及红外接收来的数据处理。本来打算把读写eeprom的程序写到bank1页。但你这么一说似乎处理起来有点麻烦。需要重新分配程序的位置了

使用特权

评论回复
地板
neyo.zhong| | 2011-5-5 17:44 | 只看该作者
相对麻烦一些是会的,但其实还好啦,只要合理安排好空间,开发起来就很流畅了 。
忘了说了,若表格放在BANK1,那么运行CALL这条指令的主程序也位于BANK1,这样是可行的,但是若位于BANK0就不行了。

看你的资源和模块,应该是做学习型遥控器吧,08年的时候,我们老大教过我做过这种项目,但是太久了忘记了,呵呵。做完之后,用红外解码器把家里的数字机顶盒给解读出来,然后按照码值自己做了一台,现在家里还在用,当时蛮有成就感的。

使用特权

评论回复
5
yuying610|  楼主 | 2011-5-6 09:40 | 只看该作者
好象关于翻页后操作的资料很少,我用的是69P24的芯片,虽然它是4K的,但24的资料里都没有提到过翻页的问题,相关信息都是针对2K以内的,这很让人头疼。在1页不能使nop指令么?

使用特权

评论回复
6
yuying610|  楼主 | 2011-5-6 10:12 | 只看该作者
不知道斑竹有没有汇编的读写eeprom的程序(I2C)?

使用特权

评论回复
7
neyo.zhong| | 2011-5-6 10:43 | 只看该作者
5# yuying610
BANK0以外的页可以使用NOP啊,没有说过不可以的。

使用特权

评论回复
8
neyo.zhong| | 2011-5-6 10:43 | 只看该作者
6# yuying610
行,我给您找找看,4BIT的程序对我来说已经是两年前的事了,呵呵。

使用特权

评论回复
9
neyo.zhong| | 2011-5-6 10:51 | 只看该作者
找到了之前4bit学习板上面的一个I2C读写24C02的DEMO程序,附带程序说明,是我们付工写的,因为公司里面有香港和台湾同事,程序说明是用繁体写的,我先您应该看得懂繁体吧,呵呵。

中颖4BIT_I2C读写EEPROM实验.rar

241.93 KB

使用特权

评论回复
10
neyo.zhong| | 2011-5-6 11:15 | 只看该作者
我帮您找找看,不一定能够帮到,因为不是业务员,不了解价格。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
yuying610 + 1 非常感谢帮助
11
yuying610|  楼主 | 2011-5-6 13:54 | 只看该作者
69P43 好象没有内部晶振?我们有用三星的9454,有一定的量,本来想找中颖芯片替代一下,但是一样的脚位的没有,现在用了sonix的2722,中颖SH69P4X 的芯片好象都需要外部晶振的?而且没有价格优势,比较遗憾的

使用特权

评论回复
12
yuying610|  楼主 | 2011-5-6 16:45 | 只看该作者
:LSH69P24的自定义RAM区为:30h ~ 12fh,当使用的ram超过7fh时,就是使用80h~12fh的RAM时有些指令有限制吗?比如不能使用LDI ?

使用特权

评论回复
13
neyo.zhong| | 2011-5-9 09:03 | 只看该作者
13# yuying610
69P43有内部4MHZ的RC振荡啊,LZ看规格书不仔细啊

使用特权

评论回复
14
neyo.zhong| | 2011-5-9 09:08 | 只看该作者
见图:

69P43 RC.JPG (48.08 KB )

69P43 RC.JPG

使用特权

评论回复
15
yuying610|  楼主 | 2011-5-14 07:50 | 只看该作者
:loveliness:我早期做过4X系列,没有用过内部晶振,下次有新产品需要用到的话考虑一下。

使用特权

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

本版积分规则

13

主题

40

帖子

0

粉丝