技术文档

单片机循环指令 四单片机c语言入门之跳转语句

小编 2024-10-17 技术文档 23 0

四单片机c语言入门之跳转语句

C语言控制语句中,除前述两篇文章中介绍的判断语句结构和循环语句结构之外,最后一种控制语句就是跳转语句结构了。

跳转语句包括break语句、continue语句、return语句以及goto语句四种

break语句结构

break语句作用是跳出当前循环,无论有几重循环,break永远只跳出自己所在的那一层循环,break一般用法是有条件的跳出while循环,以及用来跳出switch的选择判断(参考前述判断语句文章)。

举个例子,单片机中一般采用IO口来读取按键的状态(硬件如上图),需要实现的是按键每按下一次,自定义变量seft_count值自加1,直到按键按下10次为止(前一篇文章循环结构例子一样)。除前一篇采用条件判断的方式完成算法外,也可使用while加break的方式完成需求。

Continue语句结构

循环语句里有此语句时,程序运行到此语句时,不再执行循环体里continue后面的语句而是跳到下一次循环入口处执行下一次循环判断。简单来说,contine语句只是结束一次当前循环体内部执行的语句,不会跳出循环结构。

举个例子,单片机应用需要实现的功能是按键每按下一次,自定义变量seft_count值自加1,直到按键按下10次为止,如果应用需求是按下十次后,保持按键采样状态但是自定义变量值不再增加,那实现程序可以如下

return语句结构

return是表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值(也可不带参数直接返回),由return后面的参数指定。简单来说,return就是跳出当前return所处函数。

举个例子,单片机应用需要实现的功能是按键每按下一次,自定义变量seft_count值自加1,当按键按下10次后,返回主函数执行空跑指令。

goto语句结构

goto语句也称为无条件转移语句,其一般格式如下:

goto 语句标号;

其中语句标号是按标识符规定书写的符号,放在某一语句行的前面,标号后加半角冒号“:”。语句标号起标识语句的作用,与goto句配合使用。goto语句简单说来就是粗暴的转移,需要注意的就是转移到哪里,用户可以在希望转移到的语句前面加一个语句标识就可以了。

基本结构

loop:

语句;

goto loop;

goto语句使用简单,此处就不举例了,不过需要注意的是,goto指令跳转很容易造成程序机构混乱,并且该指令在单片机应用中实质上涉及到人为强制无条件的干预程序运行地址指针,需要慎之又慎。

后续

到本章节为止,c语言控制语句已经跟大家分享完毕,下一章节将分享c语言运算相关入门知识,请大家关注。

跟电师傅学单片机(15):单片机逻辑运算指令图文讲解

一:累加器A清0和取反指令(共2条)

累加器A清0和取反指令表

累加器A清0指令

CLR A;单片机软件指令功能是将累加器A中的内容清0。影响单片机标志寄存器PSW中的奇偶标志位P。

累加器A取反指令

CPL A;单片机软件指令功能是将累加器A中的内容全部取反,结果送回A中。影响单片机标志寄存器PSW中的奇偶标志位P。

常用于单片机某个存储器单元或某个存储器区域中带符号数的求补。

二:循环移位指令(共4条)

循环移位指令示意图

RL A;左循环移位指令:

单片机软件指令功能是将累加器A的8位二进制数向左移动1位,累加器A中最左边1位(即最高位A.7)移至最右边1位(即最低位A.0)。不影响单片机标志寄存器PSW中的标志位。

RR A;右循环移位指令:

单片机软件指令功能是将累加器A的8位二进制数向右移动1位,累加器A中最右边1位(即最低位A.0)移至最左边1位(即最高位A.7)。不影响单片机标志寄存器PSW中的标志位。

RLC A;带进位左循环移位指令:

单片机软件指令功能是将累加器A的8位二进制数和进位CY向左移动1位,累加器A中最左边1位(即最高位A.7)移至CY,CY原内容移至累加器A的最右边1位(即最低位A.0)。影响单片机标志寄存器PSW中的进位标志位CY。

RRC A;带进位右循环移位指令:

单片机软件指令功能是将累加器A的8位二进制数和进位CY向右移动1位,累加器A中最右边1位(即最低位A.0)移至CY,CY原内容移至累加器A的最左边1位(即最高位A.7)。影响单片机标志寄存器PSW中的进位标志位CY。

单片机标志寄存器PSW功能图

注意:

执行带进位的单片机循环移位指令之前,必须给PSW进位标志位CY置位或清零,否则会影响移动的数据。

到此为止,24条单片机逻辑运算类指令讲解完毕,谢谢阅读!欢迎留言讨论,共同提高!

相关问答

单片机 c语言里的 循环 左移 指令 _crol_的格式是?这 指令 是每秒 循环 左移一次还是怎么移?主要用在什么场合,本?

for(i=0;i<8;i++){temp=_crol_(temp,1);delay(1000);}程序前面要有#includefor(i=0;i<8;i++){temp=_c...

scl 循环指令 讲解?

SCL循环指令是一种8051单片机的指令,用于控制程序循环执行。该指令通过设置循环计数器的初始值和循环终止条件,实现程序在一定次数内重复执行某些操作的功能。...

51 单片机循环 语句有几种?

51单片机程序中,循环语句一般采用for、while和do...while来实现在循环中可以采用countune退出当次循环,继续执行下一次循环在循环中可以采用break退出循...

单片机 是89c51采用定时器T0的方式1的定时中断方式初始状态...

[最佳回答]是要汇编呀,早不说,做了C的.

单片机 for语句可以直接跳出吗?

在单片机编程中,for循环和其他类型的循环(如while循环)通常不会提供像传统高级语言中的break语句那样的直接跳出功能。如果你需要提前结束循环,你需要使...

32 单片机 的while 循环 有多快?

32位单片机的while循环的执行速度取决于多个因素,包括单片机的时钟频率、编译器优化设置、循环体内的指令数量等。因此,很难给出具体的数字。在32位单片机中,...

单片机 C语言编写点亮两盏led灯,首先从中间两盏点亮,依次相邻两盏灯点亮,依次 循环 永不停息?

#includesbitM=P1^0;voiddelayms(unsignedcharms){unsignedinti;while(ms--){for(i=0;i}}...

rl 单片机 含义?

单片机RL指令,是左移指令(参加左移的是8个位,也就是一个字节)。是属于单片机的位移指令。RR指令:是右移指令(参加左移的是8个位,也就是一个字节)。相对...

单片机 主程序运行一次怎么写?

这是各中单片机自身决定的。有的单片机程序内如果没有循环程序,那它会从头执行到最后,然后返回最开始继续执行。一直重复。而有的单片机再执行一次之后,就会...

单片机 C51语言如何实现用P2口控制8只LED左 循环 流水灯亮?

soeasy。P2=0x01,然后P2=_cror_(P2,1);delayMS(uintx);这就行了soeasy。P2=0x01,然后P2=_cror_(P2,1);delayMS(uintx)...

猜你喜欢