欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

存储器扩展

程序员文章站 2024-03-17 20:17:46
...

要求

用STC89C52单片机扩展一片EPROM27256和一片SRAM62256,实现片内外数据传送。

思路:

    先计算出扩展存储器的地址,用P2.7作为片选端。

C语言

#include <reg52.h>
#define uint unsigned int 
#define uchar unsigned char

void delay(uint z)
{
    uint i;
    for(i=0;i<z;i++);
}

void main()
{
    uchar idata *p=0x30;
    uchar xdata *q=0x0000;
    uint i;

    for(i=0;i<32;i++)
     *(p++)=i;
    p=0x30;

    //进行数据的传送
    for(i=0;i<32;i++)
    *(q++)=*(p++);

    P1=0X0000;
        delay(20000);
    while(1)
    {
        q=0x0000;
        for(i=0;i<32;i++)
        {
            P1=*(q++);
            delay(20000);
        }
    }
}

汇编:

ORG 0000H
DADDR  EQU  30H
XADDR  EQU  0000H
COUNT  EQU  1FH
MAIN:  MOV SP,#60H
       MOV R0,#DADDR
       MOV R2,#COUNT
INIT:  MOV  A,#00H
LOOP1: MOV @R0,A
       INC A
       INC R0
       DJNZ R2,LOOP1
DXMOVE: MOV R0,#DADDR
        MOV DPTR,#XADDR
        MOV R2,#COUNT
LOOP2: MOV A,@R0
       MOVX @DPTR,A
       INC R0
       INC DPTR
       DJNZ R2,LOOP2
DXMOVE1: MOV DPTR,#XADDR
         MOV R2,#COUNT  
LOOP3: MOVX A,@DPTR
       MOV P1,A
       LCALL DELAY
       INC DPTR
       DJNZ R2,LOOP3
       AJMP  DXMOVE1
DELAY:  MOV R7,#255
D1: MOV R6,#255
D2: DJNZ R6,D2
DJNZ R7,D1
RET
END

仿真图:

存储器扩展