新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ATmega128(ICC7.22 “delay.h“)

        ATmega128(ICC7.22 “delay.h“)

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

        /*函 數(shù) 名:delay_us
        編譯環(huán)境:ICCAVR7.16A
        函數(shù)作用:微秒級的延時程序
        說 明:7.3728M晶振下
        ********************************************************************/
        void delay_1us(void);
        void delay_3us(void);
        void delay_10us(void);
        void delay_50us(void);
        void delay_100us(void);
        void delay_n100us(unsigned char n100us);
        void delay_1ms(void);
        void delay_nms(unsigned int nms);
        void delay_ns(unsigned char ns);

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


        void delay_1us(void) //1us延時函數(shù),不能連續(xù)調(diào)用,
        {
        asm("nop"); //1時鐘周期
        asm("nop");
        asm("nop");
        asm("nop");
        asm("nop"); //1T
        asm("nop");

        }
        void delay_3us(void) //3us延時函數(shù),,可重復(fù)調(diào)用不影響精度
        {

        asm("nop");
        asm("nop");
        asm("nop");
        asm("nop");
        asm("nop");
        asm("nop");
        asm("nop");
        asm("nop");
        asm("nop");
        asm("nop");
        asm("nop");
        asm("nop");
        asm("nop");
        asm("nop");
        asm("nop");
        asm("nop");
        asm("nop");
        asm("nop");
        asm("nop");
        asm("nop");
        asm("nop");
        }

        void delay_10us(void) //10us延時函數(shù),,可重復(fù)調(diào)用不影響精度
        {
        delay_3us();
        delay_3us();
        delay_3us();
        }

        void delay_50us(void) //48us延時函數(shù),,可重復(fù)調(diào)用不影響精度
        {
        delay_10us();
        delay_10us();
        delay_10us();
        delay_10us();
        }
        void delay_100us(void) //exactly 98us延時函數(shù),,可重復(fù)調(diào)用不影響精度
        {
        delay_50us();
        delay_50us();
        }
        void delay_n100us(unsigned char n100us)
        {
        while(n100us--)
        delay_100us();
        }
        /*delay_n100us(2) 250us
        delay_n100us(3) 360us
        delay_n100us(4) 470us
        delay_n100us(5) 580us
        delay_n100us(6) 690us
        delay_n100us(7) 800us
        delay_n100us(8) 900us 主要是由于函數(shù)聲明及while,,,大概6us

        */
        void delay_1ms()
        {
        delay_100us();
        delay_100us();
        delay_100us();
        delay_100us();
        delay_100us();
        delay_100us();
        delay_100us();
        delay_100us();
        delay_100us();
        delay_100us();
        }
        /********************************************************************
        函 數(shù) 名:Delay_ms
        建立日期:2010年1月28日
        修改日期:
        函數(shù)作用:毫秒級的精確延時程序
        說 明:
        ********************************************************************/
        void delay_nms(unsigned int nms)
        {
        while(nms--)
        delay_1ms();
        }
        void delay_ns(unsigned char ns)
        {
        while(ns--)
        delay_nms(1000);
        }



        關(guān)鍵詞: ATmega128ICC7.22delay.h

        評論


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

        關(guān)閉
        主站蜘蛛池模板: 清涧县| 南通市| 中方县| 离岛区| 石家庄市| 从化市| 高唐县| 五峰| 西宁市| 望谟县| 辽阳市| 澄迈县| 丽水市| 英山县| 肇源县| 宁化县| 炉霍县| 抚顺县| 睢宁县| 南漳县| 龙门县| 高清| 丰原市| 昔阳县| 和林格尔县| 日土县| 信宜市| 三台县| 沅江市| 泰安市| 如皋市| 庆城县| 金塔县| 辰溪县| 丹东市| 墨竹工卡县| 阳泉市| 高要市| 涞源县| 新宁县| 措美县|