![]() |
|
||||||||||||||
| | 首页 | 新闻 | 文库 | 方案 | 技术 | 独家 | 座谈 | 下载 | 图库 | 开发板 | 仿真器 | 邮购 | VIP会员 | 芯片代购 | 客户评价 | | ||
|
||
|
|||||
| 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条。评论内容只代表网友观点,与本站立场无关!) |
| | 本站介绍 | 合作联络 | 欢迎投稿 | 广告业务 | 网站地图 | 设为首页 | 加入收藏 | 友情链接 | 网站公告 | 联系我们 | | |||
|