网站大量收购独家精品文档,联系QQ:2885784924

第十一课 单片机指令(一).doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十一课 单片机指令(一)

第十一课 单片机指令(一)   指令就是编程者给单片机下的命令,也就是我们平常所说的单片机软件,前面我们已经陆续地讲到了一些指令,但还远远不够,从这一课开始就要全面的讲解指令了,希望大家多动手实验,巩固所学的知识,说实在的,其实单片机并不难学。 为了让大家比较容易记忆,按照常规分类,我把单片机的111 条指令分成了五类—即数据传递类指令、算术运算类指令、逻辑运算类指令、控制转移类指令和位操作指令。这一课先来看数据传递类指令:一.数据传递类指令数据传递类指令是单片机中用的最多的指令,在51 系列单片机的111 条指令中共有28 条是数据传递类指令,前面我们已经学到了几条,比如MOV R1,#250;MOV A,R6 等,那么它们是怎么分类的呢?请往下看:   1. 以累加器为目的操作数的指令 (1)MOV A,Rn? (2)MOV Rn,A? (3)MOV A,direct? (4)MOV A,@Ri? (5)MOV A,#data 指令(1)把Rn 中的数送入累加器A,Rn 代表工作寄存器R0-R7(以后我们只要写到Rn 都代表R0-R7 ,这一点请大家记住了); 指令(2)则相反,把工作寄存器中的数送入累加器A 中; 指令(3)是把直接地址中的数送入累加器A 中,driect 就代表直接地址(以后也相同); 指令(4)就是上一课我们讲的寄存器间接寻址,什么意思?这里再重复一遍,就是看一下工作寄存器中是什么值,把这个值作为地址,把这个地址中的数送入累加器A 中,Ri 代表什么意思呢?就是工作寄存器R0 或者R1(以后如果写Ri 都代表R0 或R1); 指令(5)就是把立即数(也叫常数)直接送入累加器A 中,很显然data 就代表立即数(以后也相同),其实这个我们以前提到过,加#的数就代表送入的是这个数的本身。   接下来举几个实例加以说明,大家可以用DUBG8051 这个软件验证一下: A.MOV R7,#250;MOV A,R7 ;将工作寄存器R7 中的值250 送入A,R7 中的值保持不变。 B.MOV A,#250;MOV R7,A;将A 中的值250 送入工作寄存器R7,A 中的值保持不变。 C.MOV 30H,#250;MOV A,30H ;将内存30H 单元中的值250 送入A,30H 单元中的值保持不变。 D.MOV 20H,#250;MOV R0,#20;MOV A,@R0 ;先看R0 中是什么值,把这个值作为地址,并将这个地址单元中的值送入A 中。执行命令前R0 中的值为20H,则是将20H 单元中的值250 送入A 中。 E.MOV A,#250 ;将立即数250 送入A 中,执行完本条指令后,A 中的值是250。   2.以寄存器Rn 为目的操作数的指令 (1)MOV Rn,A (2)MOV Rn,direct (3)MOV Rn,#data 举几个实例大家自行分析一下: A.MOV R7,A ; B.MOV R7,30H ; C.MOV R7,#20 ; 这组指令功能是把源地址单元中的内容送入工作寄存器,源操作数不变。   ? ??3.以直接地址为目的操作数的指令 34 _?单片机教程(MCS-51 系列) (1) MOV direct,A 例如:MOV 30H,A(将累加器A 中的数送入内存单元30H)(2)MOV direct,Rn 例如:MOV 30H,R7(将寄存器R7 中的数送入内存单元30H)(3)MOV direct,direct 例如:MOV 30H,20H(将内存单元20H 中的数送入内存单元30H)(4)MOV direct,@Ri 例如:MOV 30H,@R0 (看一下R0 中是什么值,把这个值作为地址,并将这个地址单元中的值送入A 中。如执行指令前R0 中的值为20H,则是将20H 单元中的值送入A 中)。(5)MOV direct,#data 例如:MOV 30H,#20(将立即数20 送入内存单元30H)   ? ???4. 以间接地址为目的操作数的指令 (1)MOV @Ri,A (2)MOV @Ri,direct (3)MOV @Ri,#data16 这三条指令就不介绍了,大家自行分析一下,不过有一点希望大家记住,Ri只能用工作寄存器R0或者R1。   ? ???5. 十六位数的传递指令 MOV DPTR,#data16 指令说明:这是51 单片机中唯一的一条16 位立即数传递指令,大家知道51 系列单片机是一种8 位单片机,8 位单片机所能表示的最大数只能是28=0-255 。讲到这里大家应该明白了,为什么我们前面的实验中立即数不能大于255 。如果现在有个数是1234H (即二进制0001 0010 0011 0100),我们要把它送入DPTR ,该怎么办呢?当然

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档