1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4549|回復(fù): 8
收起左側(cè)

C語(yǔ)言u(píng)s延時(shí)函數(shù)中:全局變量recive_flag==1時(shí)執(zhí)行return指令是什么意思?return何用

[復(fù)制鏈接]
ID:698854 發(fā)表于 2020-6-21 19:50 | 顯示全部樓層 |閱讀模式
2黑幣
extern int recive_flag;        //定義全局變量
/*************us延時(shí)函數(shù)*************/
void delay_us(int x)  //延時(shí)函數(shù),要足夠快,否則燈會(huì)閃爍,而不是慢慢變化。
{  
        int i;
        for(i=x;i>0;i--)
        {
                if(recive_flag==1)    //  全局變量recive_flag==1有什么用?什么意思呢?
            {
                     return;                   //return什么意思?
            }
                 _nop_();  // 空操作,不執(zhí)行任何操作,常用于產(chǎn)生一個(gè)機(jī)器周期的時(shí)間延時(shí)
                 _nop_();  //在12M的晶振下每個(gè)_nop_()延時(shí)1us;  在11.0592MHz晶振的話(huà),一個(gè)周期是1.085us,也就是時(shí)間是12M周期的1.085倍;  在6M中表示2us
        }
}

回復(fù)

使用道具 舉報(bào)

ID:743992 發(fā)表于 2020-6-21 21:54 | 顯示全部樓層
recive_flag是在工程下其他文件里面定義的一個(gè)全局變量,可以在recive_flag這個(gè)變量名處右鍵->go to definition就可以看到是在哪里定義的,通過(guò)Ctrl+f查找功能可以找到這個(gè)變量是在哪里被調(diào)用,進(jìn)行了什么操作,然后再看它什么時(shí)候會(huì)符合if條件(=1),就可以知道這具體是在干嘛的了。從變量名上能大概推知這是個(gè)接收標(biāo)志位,具體還要結(jié)合程序。
至于那個(gè)return,照理說(shuō)這樣編譯會(huì)報(bào)錯(cuò),因?yàn)楹瘮?shù)返回值類(lèi)型是void,即沒(méi)有返回值。如果不談?wù)Z法錯(cuò)誤的問(wèn)題,return在這里用途是結(jié)束循環(huán),立即跳出這個(gè)函數(shù),回到調(diào)用這個(gè)函數(shù)的地方。即延時(shí)直接結(jié)束。結(jié)合來(lái)看的話(huà),估計(jì)是單片機(jī)接收某個(gè)信息需要一段時(shí)間,因此用這個(gè)延時(shí)函數(shù)來(lái)使單片機(jī)等待接收完成,接收完成之后標(biāo)志位置1,延時(shí)結(jié)束。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:706804 發(fā)表于 2020-6-22 08:31 | 顯示全部樓層
表示延時(shí)結(jié)束,返回延時(shí)前的代碼。
回復(fù)

使用道具 舉報(bào)

ID:592807 發(fā)表于 2020-6-22 08:45 | 顯示全部樓層
void函數(shù)里面帶return?看來(lái)我的C基礎(chǔ)有點(diǎn)差啊。
回復(fù)

使用道具 舉報(bào)

ID:529540 發(fā)表于 2020-6-22 16:59 | 顯示全部樓層
額, void函數(shù)里不能帶 return嗎?我一直用來(lái)當(dāng)返回語(yǔ)句使用
回復(fù)

使用道具 舉報(bào)

ID:18297 發(fā)表于 2020-6-22 21:02 | 顯示全部樓層
根據(jù)你的程序,個(gè)人認(rèn)為應(yīng)該是break比較恰當(dāng)。
這個(gè)延時(shí)是不固定的,在總時(shí)間下具體延時(shí)時(shí)間由recive_flag決定。
比如設(shè)置delay_us(1000),假設(shè)是定時(shí)1ms(具體多少要看晶振大小)。
可以通過(guò)中斷按鍵或其他設(shè)置recive_flag由0變1,這樣就會(huì)提前延時(shí)結(jié)束。
這樣整個(gè)延時(shí)就不是固定的,由recive_flag的變化決定。
回復(fù)

使用道具 舉報(bào)

ID:592807 發(fā)表于 2020-6-23 16:44 | 顯示全部樓層
ccdmcu 發(fā)表于 2020-6-22 16:59
額, void函數(shù)里不能帶 return嗎?我一直用來(lái)當(dāng)返回語(yǔ)句使用

不能,void是無(wú)返回類(lèi)型的函數(shù),return是返回類(lèi)型,如果是keil5編譯stm32的話(huà)會(huì)報(bào)錯(cuò),51不清楚
回復(fù)

使用道具 舉報(bào)

ID:419968 發(fā)表于 2020-6-24 00:27 | 顯示全部樓層
if(recive_flag==1)  數(shù)據(jù)接收標(biāo)志,當(dāng) recive_flag = 1時(shí)表示接到數(shù)據(jù),此時(shí)推出延時(shí)函數(shù),即 return; 執(zhí)行其他任務(wù),例如解析接收到的數(shù)據(jù)
回復(fù)

使用道具 舉報(bào)

ID:744327 發(fā)表于 2020-6-24 08:44 | 顯示全部樓層
不能這樣用,因?yàn)楹瘮?shù)前void是無(wú)返回值類(lèi)型的,return是返回類(lèi)型,如果這樣使用違反程序規(guī)定的。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表