数据传送

设置单片机片内存储器存储区首地址为40H,片外存储区首地址为1000H,存取数据字节个数16个,将片内首地址40H的存储区内容设置为00H~0FH共16个字节,依次读取片内首地址为40H单元内容,将这些内容依次传送到片外数据存储器1000H为首地址的存储区中保存,再将保存在片外数据区数据依次取出送P1口。

汇编语言:

         ORG   0000H;设置起始地址
DADDR    EQU   40H;片内数据区首地址
XADDR    EQU   1000H;片外数据区首地址
COUNT    EQU   10H;数据大小,共16个字节
MAIN:    MOV   SP,#60H;重置堆栈指针
         MOV   R0,#DADDR;设置片内数据区首地址
         MOV   R2,#COUNT;设置传输数据区大小,为16个字节
INIT:    MOV   A,#01H
LOOP1:   MOV   @R0,A
         INC   A
         INC   R0
         DJNZ  R2,LOOP1
DXMOV:   MOV   R0,#DADDR;设置片内数据区首地址
         MOV   DPTR,#XADDR;设置片外数据区首地址
         MOV   R2,#COUNT
LOOP2:   MOV   A,@R0
         MOVX  @DPTR,A
         INC   RO
         INC   DPTR
         DJNZ  R2,LOOP2
LOOP3:   MOV   DPTR,#XADDR
LOOP4:   MOVX  A,@DPTR
         MOV   P1,A
         INC   DPTR
         DJNZ  R2,LOOP4
         END

C语言:

#include <reg52.h>
void main()
{
 unsigned char idata *p=0x40;
 unsigned char xdata *q=0x1000;
 unsigned int i;
//从40H单元开始先进行初始化
for(i=1;i<=16;i++)
*(p++)=i;
p=0x40;
//进行数据的传送
for(i=1;i<=16;i++)
*(q++)=*(p++);
//再次传入到P1口中
while(1)
{ 
    q=0x1000;
    for(i=0;i<16;i++)
    P1=*(q++);
}
}
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值