c51数据传送实验
1.掌握89S52存储器之间的数据传送方法;
2.掌握指针操作方法;
在KEIL环境中编写并调试一个数据传送程序,并完成下面操作。?将40~4FH 数据送到数据存贮器7E00H~7E0FH中,?将数据存贮器7E00~7E0FH中的数据送到89S52内部RAM 50~5FH中。该实验无需将程序下载到实验系统中,只需在KEIL环境中完成仿真。
实验参考
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
图
开始 (注意:流程图中的BP1,BP2,
BP3表示断点)
16个数据传送到40~4F单元
BP1
(40)~(4FH)传送到7E00~7E0FH
BP21
7E00~7E0FH传送到(50)~(5FH)
BP3
结束
图7-1 数据传送实验程序框图 调试方法:
?打开仿真软件中内部数据空间和外部数据空间,在40~4Fh数据单元中分别送数,例如:1,2,3,4,…等16个数据。
?单步运行(断点设在BP2,程序运行至断点),检查外部RAM(7E00H~7F0FH)数据是否与40H~4FH数据一一对应。
?如果程序运行不能进入某一断点,则应单步、断点分段检查程序, 排除错误直至正确为止。
汇编程序:
ORG 0000H
AJMP MAIN
MAIN:
MOV R6,#16 /*数据个数*/
MOV R0,#40H /*设置数据首地址*/
TRANDATA1: /*将40~4FH 数据送到数据存贮器7E00~7E0FH中*/
MOV @R0,P1 /*通过P1口传送数据*/
INC R0 /*下一个地址*/
DJNZ R6,TRANDATA1 /*直到16个数据送完*/
MOV R6,#16
MOV DPH,#7EH /*设置存放数据的RAM地址*/
MOV DPL,#00H
MOV R0,#40H
LOOP:
MOV A,@R0
MOVX @DPTR,A
INC DPTR
INC R0
DJNZ R7,LOOP
TRANDATA2: /*数据存贮器7E00~7E0FH内容送到内部RAM 50~5FH中*/
MOV R1,#50H /*设置数据首地址*/
MOV R7,#16 /*数据个数*/
MOV DPH,#7EH
MOV DPL,#00H
LOOP1:
MOVX A,@DPTR
MOV @R1,A
INC DPTR
INC R1
DJNZ R7,LOOP1
END
C语言程序
#include
#include
main()
{
unsigned char data *point1 ; //片内存储器地址指针
unsigned char xdata *point2 ; //片外存储器地址指针
unsigned char i; //个数计数
point1 = 0x40;
for(i=0;i<16;i++){*point1 = i+1;point1++;} //给0x40开始地址赋值1~0x10
point1 = 0x40;
point2 = 0x7E00;
for(i=0;i<16;i++)//将地址0x40开始的数据送给0x7E00开始的16个地址
{
*point2 = *point1;
point1++;
point2++;
}
point1 = 0x50;
point2 = 0x7E00;
for(i=0;i<16;i++)//将地址0x7E00开始的数据送给0x50开始的16个地址
{
*point1 = *point2;
point1++;
point2++;
}
while(1)
{ ; }
}
Keil软件;
问题:1、试编写将外部的数据存贮区6030H~607FH的内容写入外部RAM
0x3030~0x307FH中。
2、说明在C语言中对地址操作过程。