<meta name="keywords" content="必胜时时彩开户,keywords" /> 12课:单片机逻辑运算类指令 联系我们

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化为二进制为01110011,

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

RL A是将(A)中的值的第7位送到第0位,第0位送1位,按序类推。

例:A中的值为68H,推行RL A。68H化为二进制为01101000,按上图阻拦移动。01101000化为11010000,即D0H。

RLC A,是将(A)中的值带前途位位(C)阻拦移位。

例:A中的值为68H,C中的值为1,则推行RLC A

1 01101000后,效果是0 11010001,也就是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,交流后是01110001,也就是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

先让我们将法式模范模范写入片中,装进实验板,看一看情形。

看到的是一个暗点运动的情形,让我们来剖析一下吧。

前而的ORG 0000H、LJMP START、ORG 30H等我们稍后剖析。从START泉源,MOV SP,#5FH,这是初始化客栈,在本法式模范模范中有没有此句无关紧要,不外我们徐徐泉源接触正轨的编程,我也就徐徐给年夜家作育习气吧。

MOV A,#80H,将80H这个数送到A中去。干甚么呢?不知道,往下看。

MOV P1,A。将A中的值送到P1端口去。此时A中的值是80H,以是送出去的也就是80H,是以P1口的值是80H,也就是10000000B,经由历程前面的剖析,我们应当知道,此时P1。7接的LED是不亮的,而其它的LED都是亮的,以是就组成了一个“暗点”。一连看,RL A,RL A是将A中的值阻拦左移,算一下,移以后的效果是甚么?对了,是01H,也就是00000001B,这样,应当是接在P1。0上的LED不亮,而其它的都亮了,从情形上看“暗点”流到了前面。然后是挪用延时法式模范模范,这个我们很熟悉了,让这个“暗点”“暗”一会儿。然后又调转到LOOP处(LJMP LOOP)。请年夜家盘算一下,下面该哪个灯不亮了。。。。。对了,应当是接在P1。1上灯不亮了。这样按序循环,就组成了“暗点运动”这一情形。

效果:

若何完成亮点运动?

若何改变运动的偏向?

谜底:

1、将A中的初始值改成7FH便可。

2、将RL A改成RR A便可。