久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 22736|回復: 28
打印 上一主題 下一主題
收起左側

求大神解釋c51中delay 延時的作用以及算法

  [復制鏈接]
回帖獎勵 24 黑幣 回復本帖可獲得 3 黑幣獎勵! 每人限 1 次(中獎概率 50%)
跳轉到指定樓層
樓主
ID:134197 發表于 2016-7-20 21:06 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
求解釋
for(i=4;i>0;i--)
for(j=220;j>0;j--)
在程序中延時時長和算法
急!!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:96682 發表于 2016-7-20 21:30 | 只看該作者
條件不夠沒法回答
回復

使用道具 舉報

板凳
ID:60379 發表于 2016-7-20 21:37 | 只看該作者

回帖獎勵 +3 黑幣

本帖最后由 無量壽經 于 2016-7-20 21:40 編輯

以下內容來源于《51單片機輕松入門-基于STC15W4K系列》第一章,里面有軟件使用方法與軟件源碼。
完整函數格式
void delay500ms(void)
{
   unsigned char i,j,k;
   for(i=15;i>0;i--)     //注意后面沒分號
   for(j=202;j>0;j--)    //注意后面沒分號
   for(k=81;k>0;k--);    //注意后面有分號
}
使用下面的軟件,你想延時多久就延時多久



延時程序.rar (2.4 MB, 下載次數: 179)




回復

使用道具 舉報

地板
ID:134197 發表于 2016-7-20 22:53 來自手機 | 只看該作者
無量壽經 發表于 2016-7-20 21:37
以下內容來源于《51單片機輕松入門-基于STC15W4K系列》第一章,里面有軟件使用方法與軟件源碼。
完整函數 ...

我知道這一類的軟件,但是我想知道上面那個怎樣進行計算,算出來是延時多久?還有咋算的,求個詳細解釋,謝謝
回復

使用道具 舉報

5#
ID:7485 發表于 2016-7-21 20:35 | 只看該作者
匯編的算出來極準。C語言不一樣。
回復

使用道具 舉報

6#
ID:60379 發表于 2016-7-21 21:16 | 只看該作者
本帖最后由 無量壽經 于 2016-7-21 21:21 編輯

運算過程是根據反匯編指令得出的,推理過程較為復雜,C——匯編——VB,在書上總共講了8頁,怎樣進行計算,算出來是延時多久,這個自己試試就知道了,也可以看下視頻使用演示與要點說明。STC15單片機視頻地址:
http://pan.baidu.com/share/home?uk=4077802723&view=share#category/type=0
延時軟件使用說明在“” 4—硬件仿真.avi“,這個地址也可以下載到完整的程序代碼。
完整內容請查閱下面這本書的第一章。


回復

使用道具 舉報

7#
ID:61390 發表于 2016-7-22 07:04 來自手機 | 只看該作者
如像根據晶振來,一個語句多長時間,來算
回復

使用道具 舉報

8#
ID:134197 發表于 2016-7-22 10:14 來自手機 | 只看該作者
無量壽經 發表于 2016-7-21 21:16
運算過程是根據反匯編指令得出的,推理過程較為復雜,C——匯編——VB,在書上總共講了8頁,怎樣進行計算, ...

好的。謝謝
回復

使用道具 舉報

9#
ID:134860 發表于 2016-7-26 22:36 | 只看該作者

回帖獎勵 +3 黑幣

#在這里快速回復##include <reg51.h>
回復

使用道具 舉報

10#
ID:157993 發表于 2016-12-27 12:12 | 只看該作者
void delay(uint z)
{
uint i,j;
for (i=z;i>0;i--)
        for(j=110;j>0;j--);
}
純手打
回復

使用道具 舉報

11#
ID:213800 發表于 2017-6-22 19:54 | 只看該作者
厲害啊 但是不同的單片機怎么計算呢?
回復

使用道具 舉報

12#
ID:60379 發表于 2017-6-22 21:45 | 只看該作者
lesterlzy 發表于 2017-6-22 19:54 | 只看該作者


厲害啊 但是不同的單片機怎么計算呢?

可以選擇不同的單片機,AT89與STC89相同,低速單片機,STC11、STC12、STC15等同屬于高速單片機。











回復

使用道具 舉報

13#
ID:159139 發表于 2017-6-22 22:09 | 只看該作者
是根據執行單步需要多少時間,然后再執行了多少次來計算的。所以它與你的工作頻率和所用的單片機有關聯。
回復

使用道具 舉報

14#
ID:269847 發表于 2018-1-1 19:38 | 只看該作者
好復雜!
回復

使用道具 舉報

15#
ID:269995 發表于 2018-1-2 09:46 | 只看該作者
這應該是因單片機而議的吧,通過循環,來延時
回復

使用道具 舉報

16#
ID:405152 發表于 2018-10-10 23:39 | 只看該作者
可以用!
回復

使用道具 舉報

17#
ID:349742 發表于 2018-10-11 17:11 | 只看該作者
你現在這個用的是利用循環占用CPU時間起到延時效果,具體延時時間可以通過兩種方法來得知:
1、通過debug,也即調試功能,調試有兩種,有模擬有在線,我們直接用模擬即可。通過debug可知你這個延時函數延時的具體時間,注:軟件模擬的晶振值需與實際硬件所用的晶振值一樣,不然延時時間會有偏差。
2、第二種就是通過晶振算出振蕩周期,機器周期,指令周期,然后算出這個循環的具體延時時間。
3、如果想要用循環來起到延時,且想要具體延時時間,可自己算出所需要的具體時間,覺得麻煩可以用軟件來替代計算。我上傳的附件就可以。4、如果會中斷,也可以使用計時器來進行延時。
5、希望我的回答對你有所幫助。

單片機小精靈v1.3完美破解.zip

1.2 MB, 下載次數: 24

里面有各種用途,計算延時只是其中之一

回復

使用道具 舉報

18#
ID:34853 發表于 2018-10-11 17:43 | 只看該作者
  使用軟件小程序去算
回復

使用道具 舉報

19#
ID:405708 發表于 2018-10-21 11:01 | 只看該作者
可以開個定時器中斷,在里面放標志位,主循環中查詢標志位,使程序有一定的節拍,這樣程序中的時序會比較精確,例如:
  1. bit gFlag10ms = 0;
  2. void TIM10_IRQ(void) interrupt IRQ_T0
  3. {
  4.     TL0 = XXX;
  5.     TH0 = XXX;
  6.     gFlag10ms = 1;
  7. }
  8. void main(void)
  9. {
  10.     SYS_Init();
  11.     while(1)
  12.     {
  13.         if(gFlag10ms)
  14.         {
  15.             gFlag10ms = 0;
  16.             DUST_Server();
  17.             MTR_Server();
  18.             COVER_Server();
  19.         }
  20.     }
  21. }
復制代碼
而如果用于模擬IIC等程序的延時可以先簡單編寫一個延時程序,然后仿真,在KEIL反匯編中查看反匯編代碼,查詢單片機規格書得到每個指令的周期,調教延時程序,如果有示波器或邏輯分析儀的話可以把某個IO口置1,延時,置零,用儀器觀察延時時間然后調試。

回復

使用道具 舉報

20#
ID:416241 發表于 2018-12-11 19:33 | 只看該作者
軟件延時的基本原理是多次重復執行指令,比如1條指令執行需要1微妙的時間,那么執行一千條這個指令 就會消耗一毫秒的時間;  其中asm("nop");語句是插入匯編指令的寫法。表示在for循環中插入一條nop指令,這是一個空操作指令;它的執行將消耗掉一個cpu周期,因為我們的目的就是延時,所以空操作就可以;  但是C語言書寫的fof循環編譯器會加入很多我們看不到的底層實現代碼,它們的執行也需要時間,所以循環次數遠小于1000;   注意:軟件延時只能用到要求不高的場合,因為軟件延時會無端的浪費掉單片機的資源,延時也容易被打斷就不準確了
回復

使用道具 舉報

21#
ID:215929 發表于 2019-7-16 12:54 | 只看該作者
用軟件算方便
回復

使用道具 舉報

22#
ID:382454 發表于 2019-7-16 16:35 | 只看該作者
求解釋
for(i=4;i>0;i--)
for(j=220;j>0;j--)
在程序中延時時長和算法
先是i=4
之后i減1后不等于0
跳到下面j=220
之后j還是大于0 則減一,如此循環減去,減去的次數就是4*220了
因為CPU執行一次是要時間的,加在一起就是達到延時目地。

回復

使用道具 舉報

23#
ID:580453 發表于 2019-7-16 21:33 | 只看該作者
ROGERER 發表于 2016-7-20 22:53
我知道這一類的軟件,但是我想知道上面那個怎樣進行計算,算出來是延時多久?還有咋算的,求個詳細解釋, ...

這是利用程序進行延時,和利用定時器延時還是有所區別的定時器可以根據機器周期算出來,軟件delay程序,是依照執行代碼的速率統計時間的,你可以利用keil軟件進行模擬在調試窗口下可以查看delay所延遲的時間。
回復

使用道具 舉報

24#
ID:464755 發表于 2019-7-17 01:16 | 只看該作者
psuxaog 發表于 2018-10-21 11:01
可以開個定時器中斷,在里面放標志位,主循環中查詢標志位,使程序有一定的節拍,這樣程序中的時序會比較精 ...

非常感謝!
回復

使用道具 舉報

25#
ID:648939 發表于 2019-12-10 22:48 | 只看該作者
無量壽經 發表于 2016-7-20 21:37
以下內容來源于《51單片機輕松入門-基于STC15W4K系列》第一章,里面有軟件使用方法與軟件源碼。
完整函數 ...

需要這個程序,感謝分享
回復

使用道具 舉報

26#
ID:657168 發表于 2019-12-11 15:08 | 只看該作者
條件不夠沒法回答
回復

使用道具 舉報

27#
ID:664971 發表于 2019-12-16 11:29 | 只看該作者
是根據執行單步需要多少時間,然后再執行了多少次來計算的
回復

使用道具 舉報

28#
ID:694299 發表于 2020-3-15 20:43 | 只看該作者
樓主 你這個問題解決沒  我有同樣的問題
回復

使用道具 舉報

29#
ID:695233 發表于 2020-3-16 20:01 | 只看該作者
你這沒寫全啊
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 丁香色婷婷 | 女同久久另类99精品国产 | 97免费在线观看视频 | 欧美网站一区 | 在线色网 | 日韩一级黄色片 | 免费视频一区二区 | 天天操夜夜操 | 日韩在线视频一区 | 日韩欧美一级精品久久 | 九九久久久 | 日韩精品在线播放 | h在线| 国产最新精品视频 | 一级片av| 欧美久久久电影 | 精品免费国产一区二区三区四区 | 国产精品18久久久久久久 | 日韩精品一区二区三区视频播放 | 性色综合| 99爱在线观看 | 亚洲欧美激情视频 | av免费成人 | 亚洲人成人一区二区在线观看 | 国产精品国产三级国产aⅴ浪潮 | 黄色在线免费观看 | 一级全黄视频 | 成人av网页| 九九热视频这里只有精品 | 欧美日韩国产传媒 | 情侣av| 国产成人精品午夜 | 一区二区三区免费网站 | 欧美中国少妇xxx性高请视频 | 在线国产视频 | 99精品视频在线 | 精品欧美一区二区三区久久久 | 天天草视频 | 亚洲视频中文字幕 | 亚洲人成人一区二区在线观看 | 亚洲精选一区 |