173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

addr是什么单片机

htxw 2023-03-14 资讯中心 22 ℃

MCS-51单片机的几个指令哪位帮我解释一下啊!

(1)

循环左移,楼主标的方向反了,应该是A7←A6←......←A0←A7

寄存器A是一个字节,所以一共有8位,A7,A6,....,A0分别表示这8位,

RL A就表示所有位都向右移,然后最后一位A7移到A0里。这8位是同时移的,所以不用担心覆盖问题。

(2)

寄存器A循环右移,A7→A6→......→A0→A7

和上一条指令类似,只是方向变了,SO就不多说了。

(3)

这句楼主也写错了,应该是RLC A

带进位标志标志Cy的循环左移Cy←A7←A6←......←A0←Cy

就是连同PSW里的进位标志Cy一起进行循环左移,和(1)是一样的,只是加了一个Cy

(4)

RRC A

带进位标志Cy的循环右移

和(3)类似,只是方向改为向右。

(1)

LJMP addr16 addr16→pc

跳转指令,顾名思义LJMP后面的addr16肯定就是所跳转到的位置的地址,16位的,单片机通过把这16位地址送入PC里,来达到跳转的目的。因此这条指令能跳转的最大距离就是2^16=64K,

举个例子:

Main: MOV A,50H

.

.

.

LJMP Main

这里运行到LJMP Main的时候,就跳到了Main:这条语句了 。

LJMP和Main之间的距离不能超过2^16=64K

其实也不会超过了,因为51单片机内部的程序存储器最大就64K,所以放心使用。所以才叫长转移指令嘛。

(2)

AJMP addr11 pc←pc+2,pc(10-0)←addr11

楼主一定是不明白pc(10-0)←addr11 是什么意思喽,addr11和addr16的区别,对吧。

addr11其实是单片机自动把我们输入的16位地址的前11位送入PC,覆盖掉PC的前11位,然后PC根据这个值进行跳转。也就是pc(10-0)←addr11

因为我们可以改变的只是PC的前11位,所以能跳转的距离就是2^11=2K

还用刚才的例子:

Main: MOV A,50H

.

.

.

AJMP Main

同样执行到AJMP Main程序就跳到了Main: MOV A,50H这条指令了。都是一样的,但是这两条指令之间的最大距离为2^11=2K,超过的话就会出错了。

(3)

SJMP rel pc←pc+2,pc←pc+rel

其它作用之类的和上面的一样,只是其中rel是8位符号数,因此跳转距离为2^8=128B

补:也就是说,上面三个指令作用和用法都是一样的,只是允许跳转的最大距离不同。我们在用的时候其实不用考虑跳的距离,所以用哪个都可以,楼主如果不放心,就用LJMP,保证是对的。

(4)

DJNZ Rn,rel

寄存器Rn里的内容减1不等于0的话,就跳到rel这个地方。

举个例子:

Main: MOV A,50H

MOV R1,#5

.

.

.

DJNZ R1,Main

程序运行到DJNZ R1,Main就进行判断R1-1==0?不等于0就继续返回Main,因为R1里的内容是#5

所以Main这段程序会循环5次

楼主也是刚学汇编啊,其实书上写的满好的,不知道楼主是哪本书,我们学的是很薄的一本,语句都很精炼,稍微跳过一句就很难理解指令的意思了。建议楼主耐心的一个字一个的扣一下。

关于单片机intel总线,xbyte[addr],其中addr为什么是四位十六进制数,如addr=0x8800,是什么意思?

那他就是16位的啥,还是一样的写了啥,这样你肯定是要P0,P2都用来做地址用了

单片机MOV R0,#ADDR0是什么意思

#ADDR0代表一个8位立即数,这条指令就是把这个数送到R0寄存器中。

比如:

MOV R0,#40H

51单片机中液晶代码里地址和0x80或是干什么的

没有源码,只能泛泛而谈的说一下,地址是液晶模块的控制端口,该地址选择,那么可以对液晶进行读写。0x80,这个数据一般而言,是D8位有效,是液晶的状态位,表示液晶是否准备好。

addr是什么单片机的介绍到此就结束了,感谢您耐心阅读,谢谢。

本文标签:addr是什么单片机

<