数据区传送程序可以通过以下步骤运行:
定义存储器地址和变量
定义片内存储器首地址为 `0x60`,片外存储器首地址为 `0x4000`。
定义循环次数 `i` 从 `1` 到 `17`。
存入片内存储区
使用循环将 `0x04` 到 `0x13` 的值依次存入片内存储器的 `0x60` 到 `0x6F` 地址中。
传送数据到片外存储器
将片内存储器 `0x60` 地址的内容传送到片外存储器的 `0x4000` 地址。
读取并显示数据
将片外存储器 `0x4000` 地址的内容读取到 `P1` 口,并显示结果。
```c
include
define uchar unsigned char
define lenth 16
void delay(void) {
uchar i, j;
for (i = 0; i < 255; i++) {
for (j = 0; j < 255; j++) {
}
}
}
int main() {
int i;
uint d_addr = 0x4000, s_addr = 0x60; // 定义绝对首地址,循环赋值和读取
for (i = 1; i <= 17; ++i) {
DBYTE[0x60 + i - 1] = 0x04 + i - 1; // 从内部存储器的0x60开始,存入片内存储区内容为04H-14H共17个字节
}
XBYTE[0x4000] = DBYTE[0x60]; // 把内部存储器60H单元数据送至外部存储器
P1 = XBYTE[0x4000]; // 外部存储器4000H单元数据送至P1口
// 运行一次for循环D:0x60H~D:0x70H里的内容
// 运行完所有for循环D:0x60H~D:0x70H里的内容
// 运行完程序x: 0x4000~ x: 0x400F里的内容
return 0;
}
```
实验步骤
输入原首址:
在R2(高), R3(低)中输入原首址 `0000H`。
输入目的地址:
在R4(高), R5(低)中输入目的地址 `2000H`。
输入字节数:
在R6(高), R7(低)中输入字节数 `1FFFH`。
运行程序:
执行上述程序框图中的步骤。
监察内容:
检查 `0000H` 到 `1FFFH` 中的内容是否与 `2000H` 到 `3FFFH` 相同。
建议
确保单片机的数据总线、控制总线和地址总线正确连接。
在运行程序前,检查存储器地址和变量是否正确初始化。
使用调试工具或打印语句验证数据传输的正确性。