音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

請問用c51編寫一個精確延時的程序?

作者:zw820506 欄目:單片機
請問用c51編寫一個精確延時的程序?
精確到微秒~
大蝦賜教~~

2樓: >>參與討論
36358168
re精確延時
用_nop_()函數(shù);不過前面要加#include <intrins.h>.

3樓: >>參與討論
xymxym
如下:
n = DelayValue;

for(i = n; i != 0;i--)
     ;

第二個表達式采用不等式時,反匯編后是:

mov r7,#n
djnz r7,$

如想長延時,可在循環(huán)中加_nop()_;

4樓: >>參與討論
zw820506
_nop_()這個函數(shù)是什么庫里大?周期是多少阿?
 
5樓: >>參與討論
阿南
可以看一下這個:51單片機 Keil C 延時程序的簡單研究
http://www.c51bbs.com/show.aspx?id=85&cid=9

6樓: >>參與討論
freego
干嗎不用TIMER?
 
7樓: >>參與討論
xwj
可以精確到us的延時程序:
#define uint unsigned int

//---------------------------------------------------------------------------//
void delay(uint x)                
{
   uint i,j;                    //
   for (i=0; i<x;i++) {            //
      for (j=0; j<36; j++) ;    //j變化1  相差 8 個機器周期/每x ( j=(?Khz*12-20)/8 )
                                //j=(?Khz*12-20)/8 )6MHZ時j=60;3.6864MHZ時j=36;
      _nop_();_nop_();_nop_();_nop_();_nop_();    //修正到 500個機器周期/每x
   }
}
//
//(機器周期數(shù))(j=10)無_nop_行:    有_nop_行;(j=60)有_nop_行:(6MHZ)
//    delay(2);        //206        216            1016
//    delay(1);        //110        115            515
//    delay(2);        //205        215            1015
//    delay(3);        //300        315            1515
//    delay(4);        //395        415            2015
//    delay(5);        //490        515            2515
//    delay(6);        //585        615            3015
//    delay(7);        //680        715            3515
//    delay(8);        //775        815            4015
//    delay(9);        //870        915            4515
//    delay(10);        //965        1015        5015


//---------------------------------------------------------------------------//
void dlus (unsigned CHAR us)//us=(實際延時-5)/2
    {                        //us=1:7;2:9;3:11;4:13;5:15;6:17;9:19;10:21周期
    while(--us);        //5 +n*2    DJNZ R7,dlus    RET
//    while(us){us--;}    //8 +n*6
//    for (;--us>0;);        //5 +n*6
//    for (;us>0;us--);    //10+n*8
//    unsigned CHAR i;for (i=0;i<us;i++);    //12+n*8
}



8樓: >>參與討論
xwj
實際上精確到us是有困難的,因為任何中斷都會使延時時間增加
就算用查詢定時器的方法也會有誤差的,因為受到查詢間隔及中斷響應時間的影響

9樓: >>參與討論
freego
在設(shè)定定時值的時候要考慮到中斷處理的影響
還必須注意:使用精確定時的時候要關(guān)閉高優(yōu)先級中斷!使用100US延時做時間片(TIME SLICE),是常用的技巧。

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
急急。。≌垎柛呤諱OTO片子之間怎么通訊???
有人用過μPSD32xx的東西嗎?
LED顯示屏問題,請幫忙!
關(guān)于單片機電池供電
關(guān)于89s52的內(nèi)部看門狗問題
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號