51單片機(jī)C語(yǔ)言的goto無(wú)條件轉(zhuǎn)移語(yǔ)句

2013-09-02 14:59 來(lái)源:電子信息網(wǎng) 作者:和靜

1、goto語(yǔ)句為無(wú)條件轉(zhuǎn)向語(yǔ)句,它的一般形式為:

goto 語(yǔ)句標(biāo)號(hào);

它是將程序運(yùn)行的流向轉(zhuǎn)到它所指定的標(biāo)號(hào)處去執(zhí)行

2、結(jié)構(gòu)化程序設(shè)計(jì)方法主張限制使用goto語(yǔ)句,因?yàn)闉E用goto語(yǔ)句將使程序流程無(wú)規(guī)律,可讀性差。但也不是絕對(duì)禁止使用goto語(yǔ)句,一般來(lái)說(shuō),可以有兩種用途

1)與if語(yǔ)句一起構(gòu)成循環(huán)結(jié)構(gòu)

2)從循環(huán)體內(nèi)跳轉(zhuǎn)到循環(huán)體外,但在c語(yǔ)言中可以使用break語(yǔ)句和continue語(yǔ)句跳出本層循環(huán)和結(jié)束本次循環(huán),goto語(yǔ)句的使用機(jī) 會(huì)已大大減少,只是需要從多層循環(huán)的內(nèi)層循環(huán)跳到外層循環(huán)時(shí)才用到goto語(yǔ)句。但是這種用法不符合結(jié)構(gòu)化原則,一般不宜采用,只有在不得已時(shí)(例如能夠 大大提高效率)才使用。

3、在keil c51中新建工程ex22,編寫(xiě)如下程序代碼,并編譯生成ex22.hex文件。

//實(shí)例22:利用goto無(wú)條件轉(zhuǎn)移語(yǔ)句使程序執(zhí)行順序發(fā)生改變,并將結(jié)果送到P0口顯示

#include //包含頭文件

//延時(shí)函數(shù)

void delay(void)

{

unsigned int i,j;

for(i=0;i<5000;i++)

for(j=0;j<50;j++);

}

void main(void)

{

P0 = 0xff; //程序開(kāi)始,,p0口的8個(gè)led全部熄滅

delay();

//在此添加一個(gè)標(biāo)號(hào)

loop: P0 = 0x0f; //

delay();

P0 = 0xf0; //

delay();

goto loop; //無(wú)條件跳轉(zhuǎn)到標(biāo)號(hào)處

P0 = 0x55; //由于上一步程序發(fā)生了無(wú)條件跳轉(zhuǎn),所以下面這些語(yǔ)句不會(huì)被執(zhí)行

delay();

while(1) // 程序在此無(wú)限循環(huán)

{

}

}

1 2 > 
仿真 51單片機(jī) goto

相關(guān)閱讀

暫無(wú)數(shù)據(jù)

一周熱門(mén)