找回密碼
     立即注冊

    QQ登錄

    只需一步,快速開始

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

    “新手求教!!” 延時(shí)程序 的使用方法。

      [復(fù)制鏈接]
    ID:219774 發(fā)表于 2017-7-28 16:01 | 顯示全部樓層 |閱讀模式
    詳細(xì)
    一定要詳細(xì)!
    拜托了。!
    回復(fù)

    使用道具 舉報(bào)

    ID:1 發(fā)表于 2017-7-28 16:21 | 顯示全部樓層
    我7年前發(fā)布的單片機(jī)延時(shí)函數(shù)教程:http://www.torrancerestoration.com/bbs/dpj-4711-1.html
    回復(fù)

    使用道具 舉報(bào)

    ID:223039 發(fā)表于 2017-7-28 16:47 | 顯示全部樓層
    void delay(int a)
    {
          unsigned char i,j;
          for(i=a;i>0;i--)
           for(j=110;j>0;j--);
    }
    能夠延時(shí)ams,具體看什么樣的單片機(jī)了,處理速度越快,a值越大
    回復(fù)

    使用道具 舉報(bào)

    ID:34643 發(fā)表于 2017-7-29 07:00 | 顯示全部樓層
    你到本壇上下載一個(gè)"單片機(jī)小靈“http://www.torrancerestoration.com/bbs/dpj-23766-1.html
    這款工具可是很好用的,寫中斷、寫延時(shí)程序直接生成,大大減少了編程者的工作量和腦力勞動(dòng)。
    回復(fù)

    使用道具 舉報(bào)

    ID:219197 發(fā)表于 2017-7-29 08:55 | 顯示全部樓層
    void yanshi(uint xms)
    {
       uint i,j;
       for(i=xms;i>0;i--)
      for(j=110;j>0;j--);
    }
    優(yōu)先定義延時(shí)功能函數(shù),定義形參uint形xms,進(jìn)入for嵌套循環(huán),達(dá)到延時(shí)目的
    回復(fù)

    使用道具 舉報(bào)

    ID:210162 發(fā)表于 2017-7-29 10:33 | 顯示全部樓層
    void delay(u16 i)
    {
       while(i--);
    }
    主函數(shù)里再寫delay();括號里面寫時(shí)間,為1的時(shí)候是10微秒。這是最簡單的一個(gè)延時(shí)。
    還有就是主程序里面需要短暫的延時(shí)的時(shí)候可以直接寫個(gè)for的空循環(huán)。
    回復(fù)

    使用道具 舉報(bào)

    ID:111634 發(fā)表于 2017-7-29 11:12 | 顯示全部樓層
    本帖最后由 zl2168 于 2017-7-29 11:17 編輯

    延時(shí)可用延時(shí)函數(shù),也可用延時(shí)語句。
    最簡單的延時(shí)語句


    unsigned long  t;                  //定義延時(shí)參數(shù)t(長整型)


    for (t=0; t<=n; t++ );             //n值延時(shí)


    回復(fù)

    使用道具 舉報(bào)

    ID:223169 發(fā)表于 2017-7-29 11:40 | 顯示全部樓層
    找本書,書上應(yīng)該有詳細(xì)的教程
    回復(fù)

    使用道具 舉報(bào)

    ID:212343 發(fā)表于 2017-7-29 14:35 | 顯示全部樓層
    下載一個(gè)單片機(jī)小精靈,很好用,輸入自己想延時(shí)的時(shí)間就能出來程序。
    回復(fù)

    使用道具 舉報(bào)

    ID:223214 發(fā)表于 2017-7-29 15:59 | 顯示全部樓層
    用一個(gè)51單片機(jī),for循環(huán)吧。
    回復(fù)

    使用道具 舉報(bào)

    ID:195298 發(fā)表于 2017-7-29 16:32 | 顯示全部樓層
    找個(gè)單片機(jī)小精靈
    回復(fù)

    使用道具 舉報(bào)

    ID:223372 發(fā)表于 2017-7-30 13:31 | 顯示全部樓層
    先定義一個(gè)
    void delayms(uint k)
    {
    uint i,j;
    for(i=k;i>0;i--)
    for(j=110;j>0;j--);
    }
    然后后面調(diào)用
    delayms(5);
    里面的數(shù)值自己設(shè)定
    回復(fù)

    使用道具 舉報(bào)

    ID:219774 發(fā)表于 2017-7-30 22:25 | 顯示全部樓層
    謝謝大家了!。
    回復(fù)

    使用道具 舉報(bào)

    ID:188030 發(fā)表于 2017-7-31 13:07 來自手機(jī) | 顯示全部樓層
    void delay(int a)
    {
          unsigned char i,j;
          for(i=a;i>0;i--)
           for(j=110;j>0;j--);
    }
    回復(fù)

    使用道具 舉報(bào)

    ID:223579 發(fā)表于 2017-7-31 15:36 | 顯示全部樓層
    32的程序,有詳細(xì)的解釋
    1. static uint8_t fac_us = 0; /* us延時(shí)倍乘數(shù) */
    2. static uint16_t fac_ms = 0; /* ms延時(shí)倍乘數(shù) */

    3. /* 初始化延遲函數(shù) */
    4. /* SYSTICK的時(shí)鐘固定為HCLK時(shí)鐘的1/8
    5. * SYSCLK:系統(tǒng)時(shí)鐘 */
    6. void delay_init(void)
    7. {
    8.         SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
    9.         fac_us = SystemCoreClock / 8000000; /* 為系統(tǒng)時(shí)鐘的1/8 */
    10.         fac_ms = (uint16_t)fac_us * 1000; /* 每個(gè)ms需要的systick時(shí)鐘數(shù) */
    11. }

    12. /* 延時(shí)nus */
    13. void delay_us(uint32_t nus)
    14. {
    15.         uint32_t temp;
    16.         SysTick->LOAD = nus * fac_us; /* 時(shí)間加載 */
    17.         SysTick->VAL = 0x00; /* 清空計(jì)數(shù)器 */
    18.         SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; /* 開始倒數(shù) */
    19.         do {
    20.                 temp = SysTick->CTRL;
    21.         }
    22.         while ((temp & 0x01) && !(temp & (1 << 16))); /* 等待時(shí)間到達(dá) */
    23.         SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; /* 關(guān)閉計(jì)數(shù)器 */
    24.         SysTick->VAL =0x00; /* 清空計(jì)數(shù)器 */
    25. }

    26. /* 延時(shí)nms */
    27. /* 注意nms的范圍
    28. * SysTick->LOAD為24位寄存器,所以,最大延時(shí)為:
    29. * nms<=0xffffff*8*1000/SYSCLK
    30. * SYSCLK單位為Hz,nms單位為ms
    31. * 對72M條件下,nms<=1864 */
    32. void delay_ms(uint16_t nms)
    33. {
    34.         uint32_t temp;
    35.         SysTick->LOAD = (uint32_t)nms * fac_ms; /* 時(shí)間加載(SysTick->LOAD為24bit) */
    36.         SysTick->VAL = 0x00; /* 清空計(jì)數(shù)器 */
    37.         SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; /* 開始倒數(shù) */
    38.         do {
    39.                 temp = SysTick->CTRL;
    40.         }
    41.         while ((temp & 0x01) && !(temp & (1 << 16))); /* 等待時(shí)間到達(dá) */
    42.         SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; /* 關(guān)閉計(jì)數(shù)器 */
    43.         SysTick->VAL = 0x00; /* 清空計(jì)數(shù)器 */
    44. }
    復(fù)制代碼
    回復(fù)

    使用道具 舉報(bào)

    ID:219126 發(fā)表于 2017-7-31 18:11 | 顯示全部樓層
    是不清楚它怎么計(jì)算延時(shí)時(shí)間的還是不清楚什么   先找些資料把基本的原理  理論性東西弄懂  延時(shí)函數(shù)就起了延時(shí)de作用啊
    回復(fù)

    使用道具 舉報(bào)

    ID:223214 發(fā)表于 2017-8-12 00:57 | 顯示全部樓層
    用個(gè)for循環(huán)就行了。
    回復(fù)

    使用道具 舉報(bào)

    ID:227217 發(fā)表于 2017-8-12 11:48 | 顯示全部樓層
    用單片機(jī)精靈就得了
    回復(fù)

    使用道具 舉報(bào)

    ID:218870 發(fā)表于 2017-8-13 06:02 | 顯示全部樓層
    void delay_1ms(unsigned int mas)   //延時(shí)1ms
    {
            uint i,j;
            for(i=0;i<mas;i++)
            for(j=0;j<110;j++);
    }
    回復(fù)

    使用道具 舉報(bào)

    ID:227454 發(fā)表于 2017-8-13 21:38 來自手機(jī) | 顯示全部樓層
    呂聰聰 發(fā)表于 2017-7-29 10:33
    void delay(u16 i)
    {
       while(i--);

    哪里抄的?我問問你u16是什么你知道嗎?你的重定義語句呢?自己一知半解就不要來教別人了好吧?
    回復(fù)

    使用道具 舉報(bào)

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

    本版積分規(guī)則

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

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

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