新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51學習之延時程序

        51學習之延時程序

        作者: 時間:2016-11-23 來源:網絡 收藏
        延時本是一簡單的事。在上學時也學過,上班后也見人家用。就是一簡單的for循環啊!
        可是我同樣寫了。可是不能延時啊。有這樣的么?
        上網小查了下說是:你定義參數是char型,就只能到256;是int 型,就取到65535.
        問題出來了,我想延時長點,定義的int,直接填了150000.無知是可怕的啊!吸取教訓,改到了50000行了吧?
        一運行,還是不行!
        沒辦法,只好調人家原程序了。人用的是兩級for循環,50000*3 。一試成了。
        再看自己的,還是不行。
        照人家的改自己的程序,不行,不行,還是不行。
        一個字一個字對,發現問題了,人家定義uint ,我的是int ,就這嗎?可是,可是,沒多大差別吧?算了,改改試試。一改unit ,成了。
        看來問題就是這了,仔細想,終于想明白了這里頭的玄機。
        uint 0-65535 int -32767-32768 我用的int ,我給人填數50000,人都不知這是啥,還能延時才奇怪了!改成unit,自然成了。
        程序如下:
        Delay()
        {int i,j;
        for(i=0;i<32000;i++);
        }
        從網上看的:一般延時us,只用單個for,一般ms級的都用兩個for就OK了。要是精確定時,就要用定時器了。我自己總結了下:單for,寫到5000,還能看到燈閃;最在寫到32000,燈閃,能知道,但是看不到滅的狀態。雙for,寫到7000*3,差不多就可看到滅的狀態。如果,執行一句要1us,大概就是20ms.至少要到ms級人眼才能識別。



        關鍵詞: 51學習延時程

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 铜川市| 建宁县| 承德县| 来凤县| 梧州市| 南召县| 万荣县| 鱼台县| 石家庄市| 濉溪县| 章丘市| 清水县| 秦皇岛市| 文成县| 呼玛县| 麻城市| 阜阳市| 济南市| 九台市| 阿勒泰市| 巴塘县| 封开县| 鹰潭市| 定州市| 琼海市| 安达市| 延安市| 商河县| 简阳市| 桐乡市| 神农架林区| 灵丘县| 云霄县| 本溪| 福鼎市| 剑阁县| 平谷区| 察哈| 明星| 灯塔市| 朝阳市|