新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ICC AVR精確定時的編程實(shí)驗(yàn)

        ICC AVR精確定時的編程實(shí)驗(yàn)

        作者: 時間:2016-11-10 來源:網(wǎng)絡(luò) 收藏
        #include

        /*======================================
        微秒級精確延時函數(shù),晶振8M:
        Delay = 0.125 *((tt*4-1)+9)微秒
        其中9包括了調(diào)用方的r16賦值1t
        rcall 3t nop 1t ret 4t
        brne指令在當(dāng)判斷條件不成立時是單周期
        最后一次判斷只有1個周期,補(bǔ)一個nop
        簡化計(jì)算= 0.5tt + 1 (us)
        ======================================*/
        voidshortdelay(unsigned chartt)
        {
        asm("_L2: subi R16,1"); // 1+
        asm("nop") //1+
        asm("brne _L2");// 2t/1t
        asm("nop");// 1t
        asm("ret");// 4t
        }

        voidmain()
        {
        shortdelay(18); // 延時10us
        while(1)
        {
        shortdelay(48);// 25us
        }
        }

        本文引用地址:http://www.104case.com/article/201611/317365.htm

        說明:用ICC編譯時會警告,因?yàn)檠訒r函數(shù)的參數(shù)沒用直接應(yīng)用,但是它會直接傳遞到R16中,所以程序是對的。



        評論


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

        關(guān)閉
        主站蜘蛛池模板: 上蔡县| 古丈县| 香格里拉县| 西乌珠穆沁旗| 明光市| 苏尼特右旗| 济宁市| 乌兰县| 鹿邑县| 凤庆县| 扶风县| 苏尼特左旗| 武宁县| 自治县| 石楼县| 涞源县| 彩票| 同仁县| 仁布县| 西乡县| 桑日县| 公安县| 隆化县| 顺义区| 温宿县| 社旗县| 峨山| 吉隆县| 玉环县| 珠海市| 左权县| 吉木萨尔县| 柳江县| 马鞍山市| 阿拉善盟| 辉县市| 怀集县| 九寨沟县| 盖州市| 平湖市| 桐梓县|