网站公告列表

  没有公告

加入收藏
设为首页
联系本站
您现在的位置: AnalogCN安诺电子 >> 文章 >> 独家资料 >> 文章正文
  [图文]ADuC845数据传送指令           ★★★ 【字体:
ADuC845数据传送指令
作者:admin    文章来源:本站原创    点击数:    更新时间:2007-12-20    

    数据传送指令是单片机编程中用的最多的指令。前面介绍ADuC845的存储器分布,自然地就应该有这些存储器(区)之间的数据传送指令,但是,由于ADuC845的存储器(区)之间地址有重叠,因而必须用不同的寻址方式和操作数来区别所传送数据的“源”和“目的”。这部分内容对初学者来说是最难记忆的。为了方便读者快速、准确地掌握8051的数据传送指令,表2—2和图2-8用来说明传送指令与数据的“源”和“目的”之间的关系。详细说明如下。

 

 

    (1)位传送指令MOV C,bit和MOV bit,C没有在表中列出。这两条指令是把一位数据在C(进位位、位于程序状态寄存器PSW的第7位,作为布尔操作的累加器)中与直接位地址(即所有位可寻址的存储器中的位)之间进行操作。例如   

    MOV C,00H    ;把00H(字节地址20H中的第0位)中的内容送C

    MOV P3.2,C    ;把C中的内容送P3.2(P3口的第2位)

    MOV TR0,C    ;把C中的内容送TR0(定时钟数器TO的启动位)

都是位传送指令,位地址都可以看成直接地址,但它们之间不能直接传送数据,只能通过C来传送。例如

    MOV P3.2.00H

是非法的,要实现00H到P3.2的数据传送,只能:

    MOV C,00H    ;把00H(字节地址20H中的第0位)中的内容送C

    MOV P3.2,C    ;把C中的内容送P3.2(P3口的第2位)而

    MOV P3.2,#01H

也是非法的,位数据传送指令中没有立即数作为源地址的指令,只能:

    SETB P3.2    ;把P3.2(P3口的第2位)置位

    CUR  P3.2    ;把P3.2(P3口的第2位)清零

    位可寻址存储器中的位可用两种方式来寻址:

    MOV 22H.5,C    ;把C中的内容送字节地址22H中的第5位

    MOV 15H,C    ;把C中的内容送字节地址22H中的第5位

    位可寻址SFR中的位也可用上述两种方式来寻址:

    MOV P3.2,C    ;把C中的内容送P3.2(P3口的第2位)

    MOV 0BOH.2,C    ;把C中的内容送P3.2(P3口的第2位)

    也可用该位所特有的名称来寻址:

    MOV PSW.6,C    ;把C中的内容送PSW.6(通用标志F0)

    MOV 0DOH.6,C    ;把C中的内容送PSW.6(通用标志F0)

    MOV F0,C    ;把C中的内容送PSW.6(通用标志FO)

    后3条指令都是把C中的数据送到PSW.6(通用标志F0)。

    (2)片内RAM高128 B是IDATA,地址为80H~FFH,与特殊寄存器(SFR)的地址完全重叠,对它们的访问完全由寻址方式来区别(在前面介绍IDATA时已举例说明)。IDATA采用Ri(i=0,1)来间址,而SFR既可用其名称来寻址,也可用其地址作为立即地址来寻址。

    (3)片内RAM低128 B(DATA)实际上也是IDATA,其地址为00H~7FH。但这些存储器单元既可以立即地址寻址,也能用Ri间接寻址。而处于该区域的工作寄存器还可作为寄存器寻址。

    表2—2中有唯一的一条16位数据传送指令:

    MOV DPTR,#datal6

该指令用于对数据指针DPTR赋值。

    (4)立即数和XCODE只能作为源操作数(即数据源地址)。

    (5)XCODE只能作为源操作数向累加器A传送数据,有两条指令:

    MOVC A,@A+DPTR  ;把A和DPTR的和所指向的XCODE单元中的数读到A

    MOVC A,@A+PC    ;把A和PC(程序计数器)的和所指向的XCODE单元中的

                     ;数读到A

    注意指令中采用“MOVC”作为助记符,说明是从程序存储器(XDATA)中读取数据。而从XDATA中读取数据的指令为:

    MOVX A,@DPTR    ;把DVI'R所指向的XDATA单元中的数读到A

    MOVX A,@Ri      ;把P2(高8位地址)和Ri(低8位地址)所指向的

                     ;XDATA单元中的数读到A

    指令中采用“MOVX"作为助记符,说明是从外部数据存储器(XDATA)中读取数据。同样,写到XDATA的指令为:

    MOVX@DPTR,A     ;把A中的数写到DPTR所指向的XDATA单元中

    MOVX@Ri,A       ;把A中的数写到v2(高8位地址)和Ri(低8位地址)所指

                     ;向的XDATA单元

只有XDATA只能与累加器互相传送数据。

    (6)立即数、立即地址和累加器(ACC)作为数据源地址,是“O型供血者”,它们有最多的接收数据的目的地。而外部数据存储器(XDATA)最“内向”,它只与ACC互传数据。

    (7)ACC又是最大的数据接收者,这就意味着ACC处于单片机核心部位,编程用得最多。

    (8)除ACC外,工作寄存器是交换数据最为方便、最为频繁的存储器。它们具有的寻址方式最多:

    MOV R6,#0FH    ;写入立即数#0FH到R6(06H单元)

    MOV 06H,#OFH    ;写入立即数#0FH到R6(06H单元)

    MOV R0,#06H    ;写入立即数#06H到R0

    MOV@R0,#OFH    ;写入立即数#0FH到R0所指向的单元(06H)

都是把数据#0FH写到06H单元。

    (9)还有XRAM没有在图2—8中表现出来。XRAM只能与ACC交换数据,采用DPTR间址和在CFG841/842位置位的情况下访问。例如:

    SETB CFG841    ;准备写片内XRAM

    MOV DPTR,{j}0100H    ;指向片内XRAM中的地址0100H

    MOVX@DPTR,A    ;把A的内容写入DPTR0所指向的单元(0100H)

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    前置放大器在移动医疗服务系
    便携式多通道大容量生理信号
    防腐监测仪的设计与应用
    基于AD1674的酶标仪的设计
    基于C/S模式的JRTPLIB库的测
    ffmpeg与jrtplib相结合应用
    blackfin模拟摄像头驱动中的
    可编程逻辑在数字信号处理系
    发现VDSP4.5一个BUG:单步调
    VDSP5.0双核工程下sml3中的变
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    版权所有:AnalogCN安诺电子 湘ICP备06016315号