新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 增強型51系列單片機W77E58的存儲器訪問

        增強型51系列單片機W77E58的存儲器訪問

        作者: 時間:2012-03-15 來源:網絡 收藏

        程序2:數據的方法
        #define mem ((unsigned char xdata)0x0) /*定義數據指針,片內或片外*/
        PMR 1 =1; /*選擇片內SRAM*/
        Mem[12]=0x34; /*數據0x34存入片內SRAM地址為12的單元中*/
        Mem[1200]=0x56; /*由于地址超出1FFH,數據0x56存入片外SRAM*/
        PMR =0xfe; /*選擇片外SRAM*/
        Mem[12]=0x78; /*數據0x78存入片外SRAM地址為12的單元中*/

        3 雙數據指針的應用

        與標準的8052相同,也使用MOVX指令外部數據。MOVX指令有兩種:MOVX@Ri和MOVX@DPTR。用MOVX@Ri 指令對數據進行時,16位的尋址地址由兩部分組成,其中地址的低8位存在Ri中,而地址的高8位由P2口提供。用MOVX@DPTR指令對數據存儲器進行訪問時,16位地址全部由數據指針DPTR提供。

        有兩個數據指針,一個是所有51CPU所共有的DPTR,另一個是W77E58增加的DPTR1。用MOVX@DPTR對數據存儲器訪問時,究間是DPTR起作用,還是DPTR1起作用,應由數據指針選擇位DPS來決定。當DPS=0時,DPTR有效;DPS=1,DPTR1有效。改變 DPS的最快捷的方法是使用INC指令。

        下面的程序段是使用兩個數據指針進行數據塊移動的例子,我們可以發現兩個數據指針的使用為程序編寫帶來了極大方便。

        程序3:兩個數據指針的應用
        MOV R2,#CNT ;R2是循環變量,裝入需要移動的字節數
        MOV DPS,#00H ;清除DPS,使DPTR有效
        MOV DPTR,#DHDL ;DPTR中裝入塊移動的目的地址
        INC DPS ;設置DPS,使DPTR1有效
        MOV DPTR,#SHSL ;DPTR中裝入塊移動的源地址
        LOOP:
        MOVC A,@DPTR ;從源地址中取數據
        INC DPTR ;源地址+1
        DEC DPS ;清除DPS,使DPTR有效
        MOVX @DPTR,A ;數據存入目的地址
        INC DPTR ;目的地址+1
        INC DPS ;設置DPS,使DPTR1有效
        DJNZ R2,LOOP ;循環直到所有移動操作完成

        在進行塊長度為50的數據移動時,如果用標準的8052,需要15720個機器周期;如果用W77E58和一個數據指針,則需要5240個機器周期;而上例中W77E58使用兩個數據批針,因而只需要3048個機器周期就可以了。很明顯,隨著數據塊的增大,節省時間的效果將更加明顯。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 从化市| 右玉县| 衡阳县| 当雄县| 灵石县| 昌图县| 临湘市| 云南省| 繁峙县| 五原县| 彰武县| 乡城县| 安乡县| 梨树县| 和田市| 鹤峰县| 五台县| 剑河县| 泰宁县| 南华县| 武义县| 都江堰市| 阜新市| 马龙县| 沙湾县| 全椒县| 长汀县| 大新县| 潞西市| 岳普湖县| 道真| 财经| 丹凤县| 平乡县| 抚顺县| 洪洞县| 禄劝| 揭东县| 祁阳县| 东阳市| 新营市|