mcs-51单片机有丰富的位操作指令,可以把大量的硬件组合逻辑用软件来代替,这样可以方便地应用于各种逻辑控制,主要用于控制线路通、断,继电器的吸合与释放等。位操作指令如表所示。
(1)位修正指令
位修正指令包括: 位清零指令clr、位置1指令setbj 位取反指令cpl。
(2) 位逻辑运算指令
位逻辑运算指令与字节逻辑运算指令相似。其中“/b it”表示取反后在进行逻辑运算。
(3) 位数据传送指令
位数据传送指令与字节数据传送指令相似。
(4)位条件转移类指令
位条件转移类指令与字节条件转移类指令相似,地址偏移量re 1的计算方法相同。
(1) 短调用指令
短调用指令acall指令的目标地址是11位。在调用子程序时,该指令与ajmp指令类似,要求调用子程序的入口地址与acall指令后面指令的第一个字节在同一个2 k页面的程序存储器区域中。
(2)长调用指令
长调用指令lcall指令的目标地址是16位。可在64 k程序存储器区域范围内调用任何一个子程序。
(3) 子程序返回指令
子程序返回指令ret,功能是使cpu从子程序返回到主程序的断点处,使主程序继续执行。
(4) 中断返回reti
中断返回指令ret i,功能是使cpu从中断服务子程序返回主程序的断点处,同时清除相应的中断状态寄存器,开发中断。
(5) 空操作指令
执行空操作指令nop,除pc内容加1外,不影响任何标志位和其他寄存器。nop指令常用来产生一个机器周期的延迟。
调用及回过程:主程序调用了子程序,子程序执行完之后必须再回到主程序继续执行,不能“一去不回头”,那么回到什么地方呢?是回到调用子程序的下面一条指令继续执行
调用指令
lcall addr16 ;长调用指令
acall addr11 ;短调用指令
上面两条指令都是在主程序中调用子程序,两者有一定的区别,但在开始学习单片机的这些指令时,能不加以区别,而且能用lcall 标号,acall 标号,来理解,即调用子程序。
返回指令则说了,子程序执行完后必须回到主程序,如何返回呢?只要执行一条返回指令就能了,即执行 ret指令
单片机在调用子程序时,进行了怎样的堆栈操作?
栈: 在函数调用时,第一个进栈的是主函数中函数调用后的下一条指令(函数调用语句的下一条可执行语句)的地址,然后是函数的各个参数,在大多数的c编译器中,参数是由右往左入栈的,然后是函数中的局部变量。注意静态变量是不入栈的。
当本次函数调用结束后,局部变量先出栈,然后是参数,最后栈顶指针指向最开始存的地址,也就是主函数中的下一条指令,程序由该点继续运行。
堆:一般是在堆的头部用一个字节存放堆的大小。堆中的具体内容有程序员安排。
单片机中如何调用写好的子程序?
使用调用指令lcall 可以去调用已经编写好了的子程序。
使用格式:
lcall 子程序名字(即子程序的首地址 用符号表示 叫符号地址)
例如:现有一个子程序
ys1ms: mov r7,# 4
ll1: mov r6,#200
ll2: djnz r6,ll2
djnz r7,ll1
ret
可以在主程序中 调用子程序
lcall ys1ms
石墨烯带队二维锡烯紧随 二维材料根本停不下来
谷歌Android 11支持五种5G连接状态
光电耦合器参数-转换效率/CTR
构建一个Raspberry Pi PoE帽子
智能干体炉校准短支和卫生型传感器
单片机指令系统与子程序调用的操作方法
还记得金龟子吗?近日亮相深圳与孩子分享AR图书
晶振振荡电路中的负阻一般多大?
芯源微发布期接受机构调研的活动记录表
超声有哪些模式?
浪潮智能存储助力广汽研究院建立数据容灾系统
什么是SOC?一文了解系统级芯片的优点与挑战
CBB电容的原理应用与特点详解
数之能PLC数采系统在流体灌装线的应用
从边缘控制到云端无缝连接,智能工厂中的I/O LINK和以太网
讯飞智能学习机助力追梦少年取得更好的成绩
小米米家智能猫眼开始预约 售价499元
信号隔离器在锅炉控制系统中的应用
苏州大电流变频电源哪家好?性价比高?
英特尔发布气候转型行动方案