单片机20131011教程.ppt

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

第3章 MCS-51 指令系统 Instruction Set ;3.1 指令系统概述;MCS-51指令系统;MCS-51 指令格式;MCS-51 指令中所用符号说明;@ ——间接寻址寄存器前缀,如@Ri,@A+DPTR (X) —— X中的内容。 ((X)) ——由X寻址的单元中的内容。 → ——箭头右边的内容被箭头左边的内容所取代。;3.2 MCS-51 指令的寻址方式;3.2.1 立即寻址 Immediate Addressing;3.2.2 直接寻址;3.2.3 寄存器寻址;3.2.4 寄存器间接寻址;3.2.5 变址寻址 (基址寄存器+变址寄存器间接寻址);;3.2.6 相对寻址;程序存储区;3.2.7 位寻址;寻址方式与相应的寻址空间;3.3 MCS-51 指令系统介绍;3.3.1 数据传送指令(5种/29条);内部存储器间数据传送路径;内部数据传送指令(16条);以累加器A为目的字节的传送指令;以Rn为目的字节的传送指令;以直接地址为目的字节的传送指令;以间接地址为目的字节的传送指令;内部数据传送指令总结(1);内部数据传送指令总结(2);例:;外部数据存储器与累加器间传送指令(4条);外部数据存储器与累加器间传送指令总结;程序存储器向累加器传送指令(2条);例如: (A)=30H,执行地址1000H处的指令 1000H: MOVC A,@A+PC 本指令占用一个字节,执行结果将程序存储器中1031H的内容送入A。;例如:查表指令MOVC A,@A+PC所在的地址为2000H,表格的起始单元地址为2035H,表格的第4个元素(位移量为03H)的内容为45H,则查表指令的处理过程如下: MOV A,#03H;表格元素相对于表首的位移量送累加器A ADD A,#34H;当前程序计数器PC相对于表首的差值加到累加器A中 MOVC A,@A+PC;查表,查得第4个元素内容45H送累加器A 注意:查表指令的长度为1个字节,当前程序计数器PC的值应为查表指令的地址加1。; 给出每条指令执行后的结果 ;应用举例1-LED灯显示;应用举例1-8段数码管显示;应用举例2-继电器控制;写出完成下列功能的程序段。 (1)将R0的内容送R6中程序为: (2)将片内RAM 30H单元的内容送片外60H单元中程序为: (3)将片外RAM 1000H单元的内容送片内20H单元中程序为: (4)将ROM 2000H单元的内容送片内RAM的30H单元中程序为: ;数据交换指令(5条);例1: (A)=80H,(R7)=08H,(40H)=F0H (R0)=30H,(30H)=OFH 执行下列指令: XCH A,R7 ;(A)与(R7)互换 XCH A,40H ;(A)与(40H)互换 XCH A,@R0 ;(A)与((R0))互换 结果:(A)=0FH,(R7)=80H,(40H)=08H,(30H)=F0H 例2: (R0)=60H,(60H)=3EH,(A)=59H 执行指令: XCHD A,@RO 结果:(A)=5EH,(60H)=39H。 例3: (A)=0C5H 执行指令: SWAP A 结果:(A)=5CH ;若R0的内容为30H,片内RAM 30H单元的内容为23H,累加器A的内容为45H,则执行 XCH A,@R0 指令后片内RAM 30H单元的内容为45H,累加器A中的内容为23H。 若执行SWAP A指令,则累加器A的内容为54H。;堆栈操作指令(2条);例:设 A=02H,B=56H,执行下列指令后, SP= ? ,A= ? ,B= ? 。;练习:;习题:找出指令错误并改正:;3.3.2 算术运算指令(24条);不带进位加指令(4条);PSW;例 分析加法指令执行结果;例1 (A)=53H,(R0)=FCH,执行指令 ADD A,R0 例2 (A)= 85H,(R0)=20H,(20H)=AFH,执行指令: ADD A,@R0 ;带进位加指令(4条);测验:试把存放在R1R2和R3R4中的两个16位数相加,结果存于R5R6中。;增量指令(5条);十进制调整指令(1条);ALU只能进行二进制加法(即低4位向高4位逢16进1)原则并不能适用于十进制数的加法运算,有时会产生错误结果。 例如:

文档评论(0)

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

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

1亿VIP精品文档

相关文档