MCS单片机的指令系统讲述.ppt

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

位地址表达方式 * 以PSW中位4( RS1 )为例。 直接(位)地址方式:如 D4H; 点操作符号方式:如 PSW.4,D0H.4; 位名称方式:如 RS1; 用户定义名方式:如用伪指令 bit SUB.REG bit RS1 定义后,可用SUB.REG代替RS1。 bit 功能:指令用于将一个位地址赋给指定的符号名。 指令格式:符号名 bit 位地址 1.位传送指令 * MOV C,bit ;bit →C MOV bit,C ;C →bit 这组指令的功能是实现位累加器(CY)和其它位地址之间的数据传递。 例:MOV C,P1.0 ;将P1.0的状态送给C。 MOV P1.0,C ;将C中的状态送到P1.0 ;引脚上去。 2.位清0和置1指令 * 位清0指令 CLR C ;使CY=0 CLR bit ;使指令的位地址等于0。 例:CLR P1.0 ;即使P1.0变为0 位置1指令 SETB C ;使CY=1 SETB bit ;使指定的位地址等于1。 例:SETB P1.0 ;使P.0变为1 3.位逻辑运算指令 (6条) * 位“与”指令 ANL C,bit ;Cy与bit位的值相与,结果送Cy ANL C,/bit ;先将bit位的值取出后取反,再和Cy相与,结果送回Cy。 但注意:指定的位地址中的值本身并不发生变化。 例:ANL C,/P1.0 3.位逻辑运算指令 (6条) * 位“或”指令 ORL C,bit ORL C,/bit 位“取反”指令 CPL C ;使Cy值取反。 CPL bit ;使指定的位的值取反。 例:CPL P1.0 注意:没有位的异或指令。 4.位控制转移指令 * JC rel ;如进位标志位Cy=1,则转移; JNC rel ;如进位标志位Cy=0,则转移; JB bit,rel ;如果直接寻址bit位=1,则转移; JNB bit,rel ;如果bit =0,则转移; JBC bit,rel ;如果bit =1,转移,并把寻址位bit ;清0 否则就顺序执行。 转移范围:-128~+127 汇编语言书写指令时,rel可采用目标地址的标号。 有条件的的转移,可分两类: 16位数的一次循环移位,16位数在内存中存放在M1和M1+1单元,低8位先存。 MOV A,M1+1 ;高8位送A MOV C, ACC.7 ;最高位送进位Cy MOV R1,#M1 ;操作数地址送R1 MOV A,@R1 ;低8位送A RLC A ;低8位左移,最低位添0,Cy ←A MOV @R1,A ;送回 INC R1 ;指向高8位 MOV A,@R1 ;高8位送A RLC A ;A7移入,高8位左移 MOV @R1,A ; 送回 * 16位循环移位的实现方法?? 附录1:指令汇总 * 列出了按功能排列的全部的指令助记符及功能简要说明,以及指令长度、执行时间和指令代码(机器代码)。 * * * * * * * 附录2:某些指令的说明 * 某些指令的说明 111条指令介绍完毕。一些细节问题,还需要说明。 1. 关于并行I/O口的“读引脚”和“读锁存器”指令的区别 例如,当P1口的P1.0引脚外接一个发光二极管LED的阳极,LED的阴极接地。 若想查看一下单片机刚才向P1.0脚输出的信息是0还是1,不能直接从P1.0脚读取,因为单片机刚才向P1.0输出的信息如果是1的话,则LED导通点亮,此时P1.0引脚就为0电平,如果直接读引脚,结果显然错误。 * 正确的做法是读D锁存器的Q端状态,那里储存的才是前一时刻送给P1.0的真实值。就是说,凡遇“读取P1口前一状态以便修改后再送出”的情形,都应当“读锁存器”的Q端信息,而不是读取引脚的信息。 当P1口外接输入设备时,要想P1口引脚上反映的是真实的输入信号,必须要设法先让该引脚内部的场效应管截止才行,否则当场效应管导通时,P1口引脚上将永远为低电平,无法正确反映外设的输入信号。让场效应管截止,就是用指令给P1口的相应位送一个“1”电平,这就是为什么读引脚之前,一定要先送出1的原因。 * 指令“MOV C,P1

文档评论(0)

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

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

1亿VIP精品文档

相关文档