新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于proteus的51單片機仿真實例三十三、C語言的goto無條件轉(zhuǎn)移語句演示實例

        基于proteus的51單片機仿真實例三十三、C語言的goto無條件轉(zhuǎn)移語句演示實例

        作者: 時間:2012-07-18 來源:網(wǎng)絡(luò) 收藏
        1、轉(zhuǎn)向,它的一般形式為:
        標號;
        它是將程序運行的流向轉(zhuǎn)到它所指定的標號處去執(zhí)行
        2、結(jié)構(gòu)化程序設(shè)計方法主張限制使用語句,因為濫用goto語句將使程序流程無規(guī)律,可讀性差。但也不是絕對禁止使用goto語句,一般來說,可以有兩種用途
        1)與if語句一起構(gòu)成循環(huán)結(jié)構(gòu)
        2)從循環(huán)體內(nèi)跳轉(zhuǎn)到循環(huán)體外,但在c語言中可以使用break語句和continue語句跳出本層循環(huán)和結(jié)束本次循環(huán),goto語句的使用機 會已大大減少,只是需要從多層循環(huán)的內(nèi)層循環(huán)跳到外層循環(huán)時才用到goto語句。但是這種用法不符合結(jié)構(gòu)化原則,一般不宜采用,只有在不得已時(例如能夠 大大提高效率)才使用。
        3、在keil c51中新建工程ex22,編寫如下程序代碼,并編譯生成ex22.hex文件。
        //22:利用goto語句使程序執(zhí)行順序發(fā)生改變,并將結(jié)果送到P0口顯示
        #include reg51.h> //包含頭文件
        //延時函數(shù)
        void delay(void)
        {
        unsigned int i,j;
        for(i=0;i5000;i++)
        for(j=0;j50;j++);
        }
        void main(void)
        {
        P0 = 0xff; //程序開始,,p0口的8個led全部熄滅
        delay();
        //在此添加一個標號
        loop:P0 = 0x0f; //
        delay();
        P0 = 0xf0; //
        delay();
        goto loop; //跳轉(zhuǎn)到標號處
        P0 = 0x55; //由于上一步程序發(fā)生了無條件跳轉(zhuǎn),所以下面這些語句不會被執(zhí)行
        delay();
        while(1) //程序在此無限循環(huán)
        {
        }
        }
        4、在中新建仿真文件ex22.dsn。電路圖如下圖所示
        5、將ex22.hex文件載入到at89c51中,啟動仿真,可以看到運行結(jié)果在如下兩個圖中變換,始終不會執(zhí)行p0=0x55這個語句。

        51單片機相關(guān)文章:51單片機教程


        c語言相關(guān)文章:c語言教程




        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 凤凰县| 曲阳县| 灵台县| 寿光市| 巨鹿县| 仁布县| 界首市| 米脂县| 额济纳旗| 中方县| 贡山| 偏关县| 嘉鱼县| 开阳县| 亚东县| 云龙县| 萝北县| 金坛市| 普兰店市| 和林格尔县| 佛冈县| 寿光市| 同江市| 靖远县| 安康市| 大埔县| 建昌县| 乌鲁木齐县| 隆德县| 黎川县| 都兰县| 肥西县| 理塘县| 抚远县| 兴业县| 淳化县| 中西区| 平定县| 兰西县| 怀宁县| 漳州市|