登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

RAM BANK使用

作者:第五生産隊 栏目:MCU技术
RAM BANK使用
中穎單片機的RAM如果超出128個單元后,就採用分BANK的結構,每128個單位為一個BANK,也就是說:00h~7Fh為Bank0,80h~FFh為Bank1,依此類推。

       對於Bank0的RAM,可以用任意指令尋址,而對於其他的Bank中的RAM,是不可以做立即數操作的,也就是在指令中帶有“i”的指令是不可以直接對地址大於7Fh的RAM操作的。只能間接尋址,間接尋址方法如下:

1、使用DPH、DPM、DPL和INX寄存器。

       如:寫入的地址是381h,寫入的内容為05h

    可以這樣寫:

               Ldi    DPH,07h

               Ldi    DPM,00h

               Ldi    DPL,01h

               Ldi    INX,05h

其中的DPH就是包含了BANK的意義,DPM、DPL值的就是RAM在BANK中的偏移量。(沒有找到貼圖的方法,不好意思啦)



2、使用指令直接包含要尋址的RAM所在的Bank號。我們的指令集中您可以看到有部分的指令的描述比如:
       
        STA    Mx(,B);其中的“,B”就是BANK的意思。

這樣,上面的例子就可以這樣來寫了:(標準的寫法)

       Ldi          TEMP,05h            
TEMP是一個您安排的臨時RAM。這條指令的目的是讓ACC的内容等於05h

       STA         (0x381-0x380),(0x380/0x80)   
    ;(0x380/0x80)是爲了取模,只要整數部分。
    ;(0x381-0x380)得到的RAM在Bank中的偏移,

對於這樣的一種寫法,使用起來比較麻煩,在編譯器中現在有做了一些改進,所以現在您在程序中寫的就簡單很多了,如下面方法3。


3、對於我們目前和以後新的編譯器來説,還可以更簡單一點。(只有最新的編譯器才支持)

如:對於0x381來寫入05H

TEMP    equ   0x7F

DATARAM   equ    0x381


       ldi      TEMP,05h    ;讓ACC的内容為05h
       Sta      DATARAM     
;這樣雖然沒有加Bank號,但是,編譯器會自動加上,在編譯器中的WATCH窗口也可以直接看到。



2楼: >>参与讨论
第五生産隊
試試方法
 

3楼: >>参与讨论
crukiss
不错哦
不错,谢谢拉

参与讨论
昵称:
讨论内容:
 
 
相关帖子
求教SH66P13AH的用处.
中颖MCU是什么东西?怎么没看到介绍啊?
SH6612 IO口的输入输出是怎么设置的
再发讨论:怎样对中颖的OTP进行二次编程?
有在深圳兼职做电话机芯片的吗?
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号