標(biāo)題: 問個(gè)小白的單片機(jī)延時(shí)函數(shù)調(diào)用問題 [打印本頁]

作者: zpy88    時(shí)間: 2017-3-25 11:32
標(biāo)題: 問個(gè)小白的單片機(jī)延時(shí)函數(shù)調(diào)用問題
用STC的軟件得到的延時(shí)程序:
void Delay100us()                //@12.000MHz
{
        unsigned char i, j;

        i = 2;
        j = 39;
        do
        {
                while (--j);
        } while (--i);
}

如何在后面的程序中實(shí)現(xiàn)調(diào)用次數(shù)。
現(xiàn)程序延時(shí)是100ms,如想延時(shí)1000和10000就應(yīng)分別調(diào)用10次和100次。如何實(shí)現(xiàn)。
直接Delay100us(10)是錯(cuò)誤的。

作者: Mr.king    時(shí)間: 2017-3-25 18:23
直接delay(10000)就可以了吧,不過變量要int型的,65535之內(nèi)
作者: 天下大同    時(shí)間: 2017-3-25 18:31
我只知道用延時(shí)函數(shù)這種可以隨你輸入
#include<reg52.h>
#define PORT P1
typedef unsigned int u16;
void delay(u16 num)
{
  unsigned int x,y;
  for(x=num;x>0;x--)
    for(y=110;y>0;y--);
}
void main(void)
{
  PORT=0xff;
  while(1)
   {
     PORT=0xfe;
     delay(500);
   }
}
作者: bili    時(shí)間: 2017-3-25 19:13
可以用FOR 的方法,參考例子void delay2ms(unsigned char delay_counter)      {       unsigned char i,j;       for(i=0;i<=delay_counter;i++)        {         for(j=0;j<249;j++)          {           _nop_();           _nop_();           }        }       }
作者: zl2168    時(shí)間: 2017-3-25 19:19
設(shè)置形參,用實(shí)參調(diào)用。建議再學(xué)學(xué)c51基本感念。
作者: wosiyabo    時(shí)間: 2017-3-25 19:35
哈哈~~你也在數(shù)碼之家注冊啦!
void Delayus(uint us)                //@12.000MHz
{
        while(us--)
        {_nop_();
        _nop_();
        _nop_();
        _nop_();}
}

作者: zpy88    時(shí)間: 2017-4-9 21:52
謝謝各位解答,論壇審查時(shí)間太長,我都將這個(gè)問題忘了。已解決,用的和4樓類似的方案。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1