(玩电子) 电子技术学习与研究
casino
当前位置:单片机教程网 >> 基础教程 >> 浏览文章

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位,依次类推。

例: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即可。

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

文章评论

相关文章

188bet uedbet 威廉希尔 明升 bwin 明升88 bodog bwin 明升m88.com 18luck 188bet unibet unibet Ladbrokes Ladbrokes casino m88明升 明升 明升 m88.com 188bet m88 明陞 uedbet赫塔菲官网 365bet官网 m88 help
188bet www.188bet.com bwin 平博 unibet 明升 188bet uk Ladbrokes 德赢vwin 188bet m88.com w88 平博88 uedbet体育 188bet 188bet 威廉希尔 明升体育app 平博88 M88 Games vwin德赢 uedbet官网 bodog fun88 188bet