1. <em id="3qmea"><ol id="3qmea"></ol></em>
    2. <em id="3qmea"></em>
      (玩电子) 电子技术学习与研究
      当前位置单片机教程网 >> 基础教程 >> 浏览文章

      12课:单片机逻辑运算类指令

      作者:佚名   来源:本站原创   点击数:x  更新时间2007年08月15日   字体

      对单片机的累加器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化为二进制为01110011

      逐位取反即为 10001100也就是8CH

      RL A是将A中的值的第7位送到第0位第0位送1位?#26469;?#31867;推

      例A中的值为68H执行RL A68H化为二进制为01101000按上图进行移动01101000化为11010000即D0H

      RLC A是将A中的值带上进位位C进行移位

      例A中的值为68HC中的值为1则执行RLC A

      1 01101000后结果是0 11010001也就是C进位位的?#24403;?#25104;了0而A则变成了D1H

      RR A和RRC A就不多谈了请大?#20063;?#32771;上面两个例程自行练习吧

      SWAP A是将A中的值的高低4位进行交换

      例A=39H则执行SWAP A之后A中的值就是93H怎么正好是这么前后交换呢因为这是一个16进制数每1个16进位数字代表4个二进位注意如果是这样的A=39后面没H执行SWAP A之后可不是A=93要将它化成二进制再算39化为二进制是10111也就是00010111高4位是0001低4位是0111交换后是01110001也就是71H即113

      练习已知A=39H执行下列单片机指令后写出每步的结果

      CPL A

      RL A

      CLR C

      RRC A

      SETB C

      RLC A

      SWAP A

      通过前面的学习我们已经掌握了相当一部份的单片机指令大家对这些枯燥的单片机指令可能也?#34892;?#21388;烦了下面让我们轻松一下做个实验

      实验五

      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

      先让我们将程序写入片中装进实验板看一看现象

      看到的是一个暗点流动的现象让我们来分析一下吧

      前而的ORG 0000HLJMP STARTORG 30H等我们稍后分析从START开始MOV SP#5FH这是初始化堆栈在本程序中有无此句无关紧要不过我们慢慢开始接触正规的编程我也就慢慢给大家培养习惯吧

      MOV A#80H将80H这个数送到A中去干什么呢不知道往下?#30784;?/p>

      MOV P1A将A中的值送到P1端口去此时A中的值是80H所?#36816;?#20986;去的也就是80H因此P1口的值是80H也就是10000000B通过前面的分析我们应当知道此时P17接的LED是不亮的而其它的LED都是亮的所以就形成了一个“暗点”继续看RL ARL A是将A中的值进行左移算一下移之后的结果是什么对了是01H也就是00000001B这样应当是接在P10?#31995;LED不亮而其它的都亮了从现象上看“暗点”流到了后面然后是调用延时程序这个我们很熟悉了让这个“暗点”“暗”?#25442;?#20799;然后?#20540;?#36716;到LOOP处LJMP LOOP请大家计算一下下面该哪个灯不亮了对了应当是接在P11?#31995;?#19981;亮了这样?#26469;?#24490;环就形成了“暗点流动”这一现象

      问题

      如何实现亮点流动

      如何改变流动的方向

      答案

      1将A中的初始值改为7FH即可

      2将RL A改为RR A即可

      发表评论告诉好友收藏此文关闭窗口

      文章评论

      相关文章

      ຣ11ѡ5app

        
        
        1. <em id="3qmea"><ol id="3qmea"></ol></em>
        2. <em id="3qmea"></em>

            
            
            1. <em id="3qmea"><ol id="3qmea"></ol></em>
            2. <em id="3qmea"></em>