存储器扩展

来源:互联网 发布:中国进口美国数据 编辑:程序博客网 时间:2024/06/01 10:26

要求

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

思路:

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

C语言

#include <reg52.h>#define uint unsigned int #define uchar unsigned charvoid 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 0000HDADDR  EQU  30HXADDR  EQU  0000HCOUNT  EQU  1FHMAIN:  MOV SP,#60H       MOV R0,#DADDR       MOV R2,#COUNTINIT:  MOV  A,#00HLOOP1: MOV @R0,A       INC A       INC R0       DJNZ R2,LOOP1DXMOVE: MOV R0,#DADDR        MOV DPTR,#XADDR        MOV R2,#COUNTLOOP2: MOV A,@R0       MOVX @DPTR,A       INC R0       INC DPTR       DJNZ R2,LOOP2DXMOVE1: MOV DPTR,#XADDR         MOV R2,#COUNT  LOOP3: MOVX A,@DPTR       MOV P1,A       LCALL DELAY       INC DPTR       DJNZ R2,LOOP3       AJMP  DXMOVE1DELAY:  MOV R7,#255D1: MOV R6,#255D2: DJNZ R6,D2DJNZ R7,D1RETEND

仿真图:

这里写图片描述

原创粉丝点击