51单片机汇编语言教程1借鉴.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
51 单片机汇编语言教程: 12 课: 单片机逻辑运算类指令 对单片机的累加器 A 的逻辑操作: CLR A ;将 A 中的值清 0,单周期单字节指令,与 MOV A,#00H效果相同。 CPL A ;将 A 中的值按位取反 RL A ;将 A 中的值逻辑左移 RLC A ;将 A 中的值加上进位位进行逻辑左移 RR A ;将 A 中的值进行逻辑右移 RRC A ;将 A 中的值加上进位位进行逻辑右移 SWAP A;将 A 中的值高、低 4 位交换。 例:( A)=73H,则执行 CPL A,这样进行: 73H化为二进制为 逐位取反即为 ,也就是 8CH。 RL A 是将( A)中的值的第 7 位送到第 0 位,第 0 位送 1 位,依次类推。 例:A 中的值为 68H,执行 RLA。68H化为二进制为 按上图进行移动。 化为即 D0H。 RLC A,是将( A)中的值带上进位位( C)进行移位。 例: A 中的值为 68H,C 中的值为 1,则执行 RLC A 1后,结果是 0也就是 C进位位的值变成了 0,而(A)则 变成了 D1H。 RR A和 RRC A就不多谈了,请大家参考上面两个例程自行练习吧。 SWAP A,是将 A 中的值的高、低 4 位进行交换。 例:( A)=39H,则执行 SWAP A之后, A 中的值就是 93H。怎么正好是这么前后 交换呢?因为这是一个 16 进制数,每 1 个 16 进位数字代表 4 个二进位。注意, 如果是这样的:( A)=39,后面没 H,执行 SWAP A之后,可不是( A)=93。要 将它化成二进制再算: 39 化为二进制是 10111,也就是 0001,0111 高 4 位是 0001, 低 4 位是 0111,交换后是 也就是 71H,即 113。 练习,已知( A)=39H,执行下列单片机指令后写出每步的结果 CPL A RL A CLR C RRC A SETB C RLC A SWAP A 通过前面的学习, 我们已经掌握了相当一部份的单片机指令, 大家对这些枯燥的 单片机指令可能也有些厌烦了,下面让我们轻松一下,做个实验。 实验五: ORG 0000H LJMP START ORG 30H START: MOV SP,#5FH MOV A,#80H LOOP: MOV P1,A RL A LCALL DELAY LJMP LOOP delay: mov r7,#255 d1: mov r6,#255 d2: nop nop nop nop djnz r6,d2 djnz r7,d1 ret END 先让我们将程序写入片中,装进实验板,看一看现象。 看到的是一个暗点流动的现象,让我们来分析一下吧。 前而的 ORG0000H、LJMPSTART、ORG30H等我们稍后分析。从 START开始, MOV SP,#5FH,这是初始化堆栈,在本程序中有无此句无关紧要,不过我们慢慢开始 接触正规的编程,我也就慢慢给大家培养习惯吧。 MOV A,#80H,将 80H 这个数送到 A 中去。干什么呢?不知道,往下看。 MOVP1,A。将 A 中的值送到 P1端口去。此时 A 中的值是 80H,所以送出去的也 就是 80H,因此 P1 口的值是 80H,也就是,通过前面的分析,我们应 当知道,此时 P1。7 接的 LED是不亮的,而其它的 LED都是亮的,所以就形成了 一个“暗点”。继续看, RL A,RL A 是将 A 中的值进行左移,算一下,移之后 的结果是什么?对了,是 01H,也就是 ,这样,应当是接在 P1。0 上 的 LED不亮,而其它的都亮了, 从现象上看“暗点”流到了后面。 然后是调用延

文档评论(0)

飞翔的燕子 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档