您现在的位置: 主页 > MCU > 单片机技术应用 > 基于proteus的51单片机仿真实例三十三、C语言的goto无条件转移语
本文所属标签:
为本文创立个标签吧:

基于proteus的51单片机仿真实例三十三、C语言的goto无条件转移语

来源: 网络用户发布,如有版权联系网管删除 2018-09-07 

[导读]1、goto语句为无条件转向语句,它的一般形式为:goto 语句标号;它是将程序运行的流向转到它所指定的标号处去执行 2、结构化程序设计方法主张限制使用goto语句,因为滥用goto语句将使程序流程无规律,可读性差。但也

本文引用地址: http://www.21ic.com/app/mcu/201207/132421.htm

1、goto语句为无条件转向语句,它的一般形式为:
goto 语句标号;
它是将程序运行的流向转到它所指定的标号处去执行
 
2、结构化程序设计方法主张限制使用goto语句,因为滥用goto语句将使程序流程无规律,可读性差。但也不是绝对禁止使用goto语句,一般来说,可以有两种用途
1)与if语句一起构成循环结构
2)从循环体内跳转到循环体外,但在c语言中可以使用break语句和continue语句跳出本层循环和结束本次循环,goto语句的使用机 会已大大减少,只是需要从多层循环的内层循环跳到外层循环时才用到goto语句。但是这种用法不符合结构化原则,一般不宜采用,只有在不得已时(例如能够 大大提高效率)才使用。
 
3、在keil c51中新建工程ex22,编写如下程序代码,并编译生成ex22.hex文件。
//实例22:利用goto无条件转移语句使程序执行顺序发生改变,并将结果送到P0口显示
#include <reg51.h>                //包含头文件
          //延时函数
void delay(void)
{
 unsigned int i,j;
 for(i=0;i<5000;i++)
  for(j=0;j<50;j++);
}
void main(void)
{
  P0 = 0xff;      //程序开始,,p0口的8个led全部熄灭
 delay();
        //在此添加一个标号
loop: P0 = 0x0f;      //
 delay();
 P0 = 0xf0;      //
 delay();
goto loop;       //无条件跳转到标号处
 P0 = 0x55;      //由于上一步程序发生了无条件跳转,所以下面这些语句不会被执行
 delay();
 while(1)     // 程序在此无限循环
 {
 }
}
4、在proteus中新建仿真文件ex22.dsn。电路图如下图所示
5、将ex22.hex文件载入到at89c51中,启动仿真,可以看到运行结果在如下两个图中变换,始终不会执行p0=0x55这个语句。
 


              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > 基于proteus的51单片机仿真实例三十三、C语言的goto无条件转移语
 

"基于proteus的51单片机仿真实例三十三、C语言的goto无条件转移语"的相关文章

网站地图

围观()