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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1610|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

關(guān)于單片機(jī)延時(shí)函數(shù)實(shí)現(xiàn)問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:616745 發(fā)表于 2019-9-26 16:00 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
有這樣一段單片機(jī)延時(shí)代碼實(shí)現(xiàn)
  1. void Delay_ms(int Cnt)
  2. {
  3.         while(Cnt--)
  4.         {
  5.                 int t=100;
  6.                 while(--t);
  7.         }
  8. }
復(fù)制代碼

如果我把這段代碼改成
  1. void Delay_ms(int Cnt)
  2. {
  3.     unsigned int t = 0;
  4.     while(Cnt) if(!t) { Cnt--; t=99; } else --t;
  5. }
復(fù)制代碼


想了解一下 這樣的修改是否等價(jià)
2段代碼傳入相同參數(shù)是否可以延時(shí)相同時(shí)長(zhǎng)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:213173 發(fā)表于 2019-9-27 05:56 | 只看該作者
由于CPU處理不同代碼耗時(shí)不同,所以第2段代碼傳入相同參數(shù)的延時(shí)時(shí)間比第一段代碼增加約20%。
回復(fù)

使用道具 舉報(bào)

板凳
ID:235200 發(fā)表于 2019-9-27 07:54 | 只看該作者
采用C語言編程,沒有絕對(duì)的相 同,程序會(huì)根據(jù)變量的數(shù)據(jù)類型及變量?jī)?nèi)存使用情況而編譯成不同的指令,從而導(dǎo)致執(zhí)行時(shí)間不同
回復(fù)

使用道具 舉報(bào)

地板
ID:138097 發(fā)表于 2019-9-27 08:08 | 只看該作者
仿真試一試不就知道了?
回復(fù)

使用道具 舉報(bào)

5#
ID:616745 發(fā)表于 2019-9-27 13:49 | 只看該作者
whx.000 發(fā)表于 2019-9-27 08:08
仿真試一試不就知道了?

直接運(yùn)行看不出明顯差距
但我不能確定是差距小還是 沒差距
所以想問問
回復(fù)

使用道具 舉報(bào)

6#
ID:616745 發(fā)表于 2019-9-27 13:49 | 只看該作者
wulin 發(fā)表于 2019-9-27 05:56
由于CPU處理不同代碼耗時(shí)不同,所以第2段代碼傳入相同參數(shù)的延時(shí)時(shí)間比第一段代碼增加約20%。

很感謝你的幫助
我大概明白了
回復(fù)

使用道具 舉報(bào)

7#
ID:524300 發(fā)表于 2019-9-27 14:24 | 只看該作者
完全等價(jià)
回復(fù)

使用道具 舉報(bào)

8#
ID:592524 發(fā)表于 2019-9-27 14:49 | 只看該作者
都測(cè)試一下最準(zhǔn)確
回復(fù)

使用道具 舉報(bào)

9#
ID:155507 發(fā)表于 2019-9-27 21:29 | 只看該作者
我給你來個(gè)試試


  1.   16          void Delay_ms01(int Cnt)
  2.   17          {
  3.   18   1              while(Cnt--)
  4.   19   1              {
  5.   20   2                      int t=100;
  6.   21   2                      while(--t);
  7.   22   2              }
  8.   23   1      }
  9.   24         


  10. 匯編的傳統(tǒng)計(jì)算方法:

  11.              ; FUNCTION _Delay_ms01 (BEGIN)
  12.                                            ; SOURCE LINE # 16
  13. ;---- Variable 'Cnt' assigned to Register 'R6/R7' ----
  14.                                            ; SOURCE LINE # 17
  15. 0000         ?C0001:
  16.                                            ; SOURCE LINE # 18
  17. 0000 EF                MOV     A,R7   ;1指令周期
  18. 0001 1F                DEC     R7     ;1指令周期
  19. 0002 AC06              MOV     R4,AR6 ;2指令周期
  20. 0004 7001              JNZ     ?C0051 ;2指令周期
  21. 0006 1E                DEC     R6     ;1指令周期
  22. 0007         ?C0051:
  23. 0007 4C                ORL     A,R4   ;1指令周期
  24. 0008 6015              JZ      ?C0005 ;2指令周期
  25.                                            ; SOURCE LINE # 19
  26.                                            ; SOURCE LINE # 20
  27. 000A 750000      R     MOV     t,#00H      ;3指令周期
  28. 000D 750064      R     MOV     t+01H,#064H ;3指令周期
  29. 0010         ?C0003:
  30.                                            ; SOURCE LINE # 21
  31. 0010 E500        R     MOV     A,t+01H  ;2指令周期
  32. 0012 1500        R     DEC     t+01H    ;2指令周期
  33. 0014 7002              JNZ     ?C0052   ;2指令周期
  34. 0016 1500        R     DEC     t        ;2指令周期
  35. 0018         ?C0052:
  36. 0018 14                DEC     A        ;1指令周期
  37. 0019 4500        R     ORL     A,t      ;2指令周期
  38. 001B 60E3              JZ      ?C0001   ;2指令周期
  39. 001D 80F1              SJMP    ?C0003   ;2指令周期
  40.                                            ; SOURCE LINE # 23
  41. 001F         ?C0005:
  42. 001F 22                RET              ;1指令周期
  43.              ; FUNCTION _Delay_ms01 (END)


  44.   25          void Delay_ms02(int Cnt)
  45.   26          {
  46.   27   1          unsigned int t = 0;
  47.   28   1          while(Cnt) if(!t) { Cnt--; t=99; } else --t;
  48.   29   1      }



  49.              ; FUNCTION _Delay_ms02 (BEGIN)
  50.                                            ; SOURCE LINE # 25
  51. ;---- Variable 'Cnt' assigned to Register 'R6/R7' ----
  52.                                            ; SOURCE LINE # 26
  53.                                            ; SOURCE LINE # 27
  54. ;---- Variable 't' assigned to Register 'R4/R5' ----
  55. 0000 E4                CLR     A    ;1指令周期
  56. 0001 FD                MOV     R5,A ;1指令周期
  57. 0002 FC                MOV     R4,A ;1指令周期
  58. 0003         ?C0006:
  59.                                            ; SOURCE LINE # 28
  60. 0003 EF                MOV     A,R7    ;1指令周期
  61. 0004 4E                ORL     A,R6    ;1指令周期
  62. 0005 6016              JZ      ?C0010  ;2指令周期
  63. 0007 ED                MOV     A,R5    ;1指令周期
  64. 0008 4C                ORL     A,R4    ;1指令周期
  65. 0009 700B              JNZ     ?C0008  ;2指令周期
  66. 000B EF                MOV     A,R7    ;1指令周期
  67. 000C 1F                DEC     R7      ;1指令周期
  68. 000D 7001              JNZ     ?C0053  ;2指令周期
  69. 000F 1E                DEC     R6      ;1指令周期
  70. 0010         ?C0053:
  71. 0010 7C00              MOV     R4,#00H  ;2指令周期
  72. 0012 7D63              MOV     R5,#063H ;2指令周期
  73. 0014 80ED              SJMP    ?C0006   ;2指令周期
  74. 0016         ?C0008:
  75. 0016 ED                MOV     A,R5     ;1指令周期
  76. 0017 1D                DEC     R5       ;1指令周期
  77. 0018 70E9              JNZ     ?C0006   ;2指令周期
  78. 001A 1C                DEC     R4       ;1指令周期
  79. 001B         ?C0054:
  80. 001B 80E6              SJMP    ?C0006   ;2指令周期
  81.                                            ; SOURCE LINE # 29
  82. 001D         ?C0010:
  83. 001D 22                RET              ;1指令周期
  84.              ; FUNCTION _Delay_ms02 (END)



  85.         Delay_ms01(10);  //5.063 ms
  86.         Delay_ms02(10);  //5.4325 ms
  87. 0.00019450
  88. 0.00525750 5.063 ms
  89. 0.01069000 5.4325 ms



復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 伊人网站在线观看 | 欧美精品国产一区二区 | 亚洲精品久久久9婷婷中文字幕 | 国产精品久久久久久吹潮 | 小草久久久久久久久爱六 | 99精品一区| 亚洲国产精久久久久久久 | 啪啪综合网 | 91精品国产综合久久精品图片 | 国产成人精品一区二区三区在线观看 | 免费精品视频在线观看 | 在线欧美视频 | 国产成人网 | 少妇午夜一级艳片欧美精品 | 国产精品国产三级国产aⅴ无密码 | 国产精品免费播放 | 亚洲综合久久精品 | 国产一区二区视频免费在线观看 | 中文字幕在线观看视频一区 | 国产精品99久 | 免费av观看 | www日日日 | 国产欧美一区二区三区在线看 | 国产精品视频免费观看 | 国产精品视频久久 | 在线观看精品视频网站 | 成人午夜在线视频 | 农村妇女毛片精品久久久 | 亚洲精品99 | 97天天干| 精品小视频 | 亚洲精品久久久久久国产精华液 | 亚洲综合大片69999 | 欧美三级三级三级爽爽爽 | 国产视频二区 | 国产日韩欧美综合 | 久久午夜精品 | 日韩毛片免费看 | 美女一级a毛片免费观看97 | 激情五月婷婷综合 | 国产中文字幕在线 |