欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 13909|回復(fù): 12
打印 上一主題 下一主題
收起左側(cè)

請大家?guī)兔纯催@個單片機程序 void Delay10ms(50)是什么意思?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:85073 發(fā)表于 2017-12-16 13:18 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近又開始學(xué)單片機,請高手幫忙看看這個程序是什么意思,最好有詳盡的解釋,void Delay10ms(50)是什么意思?執(zhí)行void Delay10ms延時函數(shù)50次嗎?


#include <reg51.h>
#include <intrins.h>

void main(void)
{
        unsigned char LED;

        LED = 0xFE;

        while(1)
        {
                P0 = LED;

                Delay10ms(50);

                LED = _crol_(LED,1);  //循環(huán)右移1位,點亮下一個LED  此函數(shù)于庫函數(shù)
        }
}

void Delay10ms(unsigned int c)   //誤差 0us
{
    unsigned char a, b;

        //--c已經(jīng)在傳遞過來的時候已經(jīng)賦值了,所以在for語句第一句就不用賦值了--//
    for (;c>0;c--)
        {
                for (b=38;b>0;b--)
                {
                        for (a=130;a>0;a--);
                }         
        }
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:111634 發(fā)表于 2017-12-16 18:20 | 只看該作者
學(xué)單片機,必須先讀一本教材書,先學(xué)理論,打基礎(chǔ),否則,問題多多,事倍功半。給你介紹一本書,張志良編著的:《80C51單片機實用教程——基于Keil C和Proteus》高等教育出版社ISBN 978-7-04-044532-9, 用于學(xué)習(xí)51單片機原理,程序(雙解c和匯編)語句條條有注解,便于閱讀理解,便于自學(xué),可從零基礎(chǔ)c語言開始學(xué)習(xí)。
回復(fù)

使用道具 舉報

板凳
ID:149988 發(fā)表于 2017-12-16 19:57 | 只看該作者

RE: 請大家?guī)兔纯催@個單片機程序 void Delay10ms(50)是什么意思?

void Delay10ms(unsigned int c)   //誤差 0us
{
    unsigned char a, b;
        //--c已經(jīng)在傳遞過來的時候已經(jīng)賦值了,所以在for語句第一句就不用賦值了--//
    for (;c>0;c--)
        {
             for (b=38;b>0;b--)
             {
                  for (a=130;a>0;a--);
             }這是一個有輸入?yún)?shù)的延時函數(shù),當(dāng)執(zhí)行void Delay10ms(50) 語句時,是將c賦值50。所以,執(zhí)行for (;c>0;c--)語句時c可以減50次,for (;c>0;c--)所包含的語句都將執(zhí)行50次。for (a=130;a>0;a--);自身要執(zhí)行130次,for (b=38;b>0;b--)語句要執(zhí)行38次,所以for (a=130;a>0;a--);執(zhí)行了130*38=4940次,再乘以 for (;c>0;c--)50次,for (a=130;a>0;a--);共執(zhí)行了130*38*50=247000次,假如執(zhí)行for (a=130;a>0;a--)一次需要0.000002秒,那么0.000002秒*247000次=0.494秒。
回復(fù)

使用道具 舉報

地板
ID:85073 發(fā)表于 2017-12-17 09:26 | 只看該作者
zl2168 發(fā)表于 2017-12-16 18:20
學(xué)單片機,必須先讀一本教材書,先學(xué)理論,打基礎(chǔ),否則,問題多多,事倍功半。給你介紹一本書,張志良編著 ...

謝謝意見!
回復(fù)

使用道具 舉報

5#
ID:85073 發(fā)表于 2017-12-17 09:29 | 只看該作者
不倒翁.WZT 發(fā)表于 2017-12-16 19:57
void Delay10ms(unsigned int c)   //誤差 0us
{
    unsigned char a, b;

謝謝意見,很不喜歡編程者這種故作高深的寫法,把它寫成for (c=50;c>0;c--),不就很好理解嗎?
回復(fù)

使用道具 舉報

6#
ID:325485 發(fā)表于 2018-5-11 22:01 | 只看該作者
不是的,這是個函數(shù),這次設(shè)置好,下次可以隨時調(diào)用,且可以調(diào)整時間,這個是延遲50*10ms下次可以延遲更多,就直接調(diào)用,這是c語言的
回復(fù)

使用道具 舉報

7#
ID:328008 發(fā)表于 2018-5-12 02:22 | 只看該作者
樓主問題解決的嗎,及解決方法分享下啊。。。。。。。。。
回復(fù)

使用道具 舉報

8#
ID:328034 發(fā)表于 2018-5-12 09:16 | 只看該作者
500毫秒延遲
回復(fù)

使用道具 舉報

9#
ID:591139 發(fā)表于 2019-7-27 09:48 | 只看該作者
aojieage 發(fā)表于 2017-12-17 09:29
謝謝意見,很不喜歡編程者這種故作高深的寫法,把它寫成for (c=50;c>0;c--),不就很好理解嗎?

因為前面已經(jīng)給C賦值50了。

后面再寫一次的話,以后調(diào)整賦值就要記得改兩個一樣的地方。

所以,不在這里再次賦值是有道理的。只是這個注釋說的不夠詳細(xì)周密。初學(xué)者沒那么快轉(zhuǎn)過來。
回復(fù)

使用道具 舉報

10#
ID:591139 發(fā)表于 2019-7-27 09:57 | 只看該作者
我把當(dāng)年的學(xué)習(xí)筆記放出來給樓主和初學(xué)同好:

void Delay10ms(unsigned int c)   //誤差 0us
{
    unsigned char a, b;//--賦值無符號變量a和b--//

        //--c已經(jīng)在傳遞過來的時候已經(jīng)賦值了,所以在for語句第一句就不用賦值了。見18、22行--//
        //--完整應(yīng)該為:for (c=50;c>0;c--)--//
    for (;c>0;c--)//--條件循環(huán)。這里是把c用累減方式循環(huán)50次,每次減1直至c=0。實際效果是將10ms增加50倍--//
        {
               
        //--b和a的條件循環(huán),用于將機器指令時長通過循環(huán)方式拉為10ms時長。具體取值與單片機、晶振的指令周期有關(guān),51單片機下這些參數(shù)是直接用的。--//
               
                for (b=38;b>0;b--)//
                {
                        for (a=130;a>0;a--);
                }
           
        }
        
回復(fù)

使用道具 舉報

11#
ID:511461 發(fā)表于 2019-7-28 19:33 | 只看該作者
void Delay10ms(50)是這個函數(shù)執(zhí)行50次,他想表達的大約是0.5秒
回復(fù)

使用道具 舉報

12#
ID:524818 發(fā)表于 2019-7-29 08:50 | 只看該作者
延時(10ms*50次)500ms
回復(fù)

使用道具 舉報

13#
ID:542954 發(fā)表于 2019-8-11 19:55 | 只看該作者
這是一個在51里面常用的粗略的延時函數(shù)。單片機的時鐘往往由外部晶振決定,晶振頻率的倒數(shù)就是這個單片機的一個時鐘周期,而單片機執(zhí)行一條語句所用的時間為時鐘周期的12的整數(shù)倍(因為一個機器周期為12個時鐘周期,這是單片機進行讀或?qū)懖僮魉玫臅r間,而執(zhí)行一次直徑的時間為幾個機器周期)。你這里用的晶振應(yīng)該是11.0592Mhz,所以執(zhí)行一次指令的時間是12n/11.0592M秒(一般這種空指令n=1),進行一次底層的while循環(huán)總共就需要112*12/11.0592M秒,大約100us,所以你給到的函數(shù)變量是多少,這個函數(shù)就可以給你延遲這個量*100us的時間

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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