存储器扩展
程序员文章站
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
仿真图:
下一篇: 树的重量,洛谷之提高历练地,较复杂图论I