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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

小白請問單片機延時函數的具體作用與里面語句的含義

  [復制鏈接]
跳轉到指定樓層
樓主
ID:694299 發表于 2020-3-15 21:09 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
//小白請教:問m,n的含義,為什么用他們,他們在哪方面起到什么作用

void delay60ms(void)
{
    unsigned char m,n;
    for(m=0;m<100;m++)
    for(n=0;n<200;n++)
    ;
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:709078 發表于 2020-3-15 21:42 | 只看該作者
樓主的題中,“m”和“n”是函數定義的變量,也可以用其他字母像“i"和“j”,就是通過他們的值得變化和相互的關系實現延時,像原地踏步一樣。
回復

使用道具 舉報

板凳
ID:668457 發表于 2020-3-16 00:43 | 只看該作者
現實中單片機運行程序是需要時間的,各個器件都需要時間(即使很短),比如按鍵,當你按下是一個過程并不是瞬間完成。所以需要等待時間來確認
回復

使用道具 舉報

地板
ID:462827 發表于 2020-3-16 00:48 | 只看該作者
m、n都是循環次數,空循環空轉來延時
回復

使用道具 舉報

5#
ID:709151 發表于 2020-3-16 00:56 | 只看該作者
單片機的運行雖然很快,但也是需要時間的,先看n的設置,n要從0加到200,而中間不執行任何程序,單片機會在很快的速度內完成這項任務,雖然很快,但也消耗了一定的時間,m在0-100的過程中所執行的任務相當于把n從0加到200執行100次,這樣單片機所消耗的時間就顯著增加了,m和n就相當于函數里的x,y,本身沒有意義,char 后面可以換成任意兩個字母。
回復

使用道具 舉報

6#
ID:149799 發表于 2020-3-16 08:38 | 只看該作者
謝謝樓上幾位的講解
回復

使用道具 舉報

7#
ID:703220 發表于 2020-3-16 11:35 | 只看該作者
首先你要能承認機器不論執行一條多么短的程序都是要消耗時間的,所謂延時函數就是在執行這個函數時,能起到既讓CPU運行著去消耗時間,又讓CPU實際上并不執行真正你不需要的操作。這也就是相當于機器在原地踏步。
我舉一個比你這個還簡單的并且能起到延時作用的函數:
void delay()
{
     unsigned int i=50000;
     while(i--)
}
void 代表這個函數沒有返回值
delay 是函數的名字
()內沒有內容說明沒有參數
unsigned int i=50000  中unsigned int是無符號整型數據類型,所以這句話的意思是定義一個無符號整型變量i并賦初值。
花括號內是函數體
while(i--)是循環函數,這個函數是當()內的參數不為0時執行,由于i初值不為0,所以要自減50000次才能為0,所以才能跳出這個循環,故CPU要在這里花費時間去執行這50000次循環。

由上述可知,可以實現讓CPU停在延時函數處,從而不去執行延時函數下面的程序。


所以這種延時函數與其說是延時,不如是讓CPU干點別的事,而這些事只能浪費CPU的時間,卻不能讓它真正干出什么成就。

你給的這個函數和我這個不同的就是用for這個循環語句又嵌套了一個for,更浪費時間而已
回復

使用道具 舉報

8#
ID:709334 發表于 2020-3-16 11:51 | 只看該作者
單片機初學者,正好搞不懂這部分,謝謝各位大佬
回復

使用道具 舉報

9#
ID:709172 發表于 2020-3-16 13:52 | 只看該作者
m,n分別是外循環和內循環的循環次數,這2個嵌套循環總計循環m*n次,就是延時約5*m*n個指令周期(不包括調用for循環的開銷)
回復

使用道具 舉報

10#
ID:709787 發表于 2020-3-17 09:48 來自手機 | 只看該作者
mn是這個子函數中的臨時變量。當然,也可以換成x,y等。任意。為什么是unsigned char類型。因為x.y的數值沒超255,所以不用unsigned int(0~65536)。可以節約單片機的存儲空間。
回復

使用道具 舉報

11#
ID:619787 發表于 2020-3-17 22:51 | 只看該作者
自定義變量,起到記數的作用。
回復

使用道具 舉報

12#
ID:710594 發表于 2020-3-18 09:17 | 只看該作者
單片機運行速度特別快,為了實現人機交互就需要延時函數。m,n沒有特別的意義,就是普通的變量。你可以通過改變m,n的值來增減循環的次數。從而改變延時的長短。
回復

使用道具 舉報

13#
ID:531524 發表于 2020-3-18 11:05 | 只看該作者
void delay60ms(void)
{
    unsigned char m,n;
    for(m=0;m<100;m++)
    for(n=0;n<200;n++)
    ;
}
第一個for沒有大括號,這要寫的意義不大
這是典型的延時函數,for循環里再for循環,目的就程序在這里等待
m,n都是控制循環次數的。循環次數越多等待時間越長。
回復

使用道具 舉報

14#
ID:751533 發表于 2020-5-17 11:15 | 只看該作者
答得很好,謝謝
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品一区二区网址 | 成人在线观看免费视频 | 国产欧美在线视频 | 久久久精品影院 | 国产精品av久久久久久久久久 | 久久久2o19精品 | 黄色男女网站 | 天天插天天狠天天透 | 亚洲一区二区三区四区五区中文 | 精品综合| 国产黄色av电影 | 日本三级做a全过程在线观看 | 国产一区二区在线免费观看 | 97精品超碰一区二区三区 | 国产一区二区三区在线 | 国产精品影视在线观看 | 国产成人精品免费视频大全最热 | 91精品国产91久久久久久最新 | 国产aⅴ爽av久久久久久久 | 韩日精品一区 | 久草精品视频 | 亚洲一级毛片 | 精品视频一区二区在线观看 | 中文字幕成人在线 | 在线看亚洲 | 亚洲综合小视频 | h视频网站在线观看 | 91精品久久久久久久久 | 亚洲日本国产 | 亚洲男女视频在线观看 | 亚洲精品电影在线观看 | 日韩成人精品在线观看 | 日本欧美黄色片 | 毛片免费看的 | 精品国产久 | 亚洲精品一区二区三区蜜桃久 | 亚洲人人 | 久久精品免费一区二区三 | 久久精品无码一区二区三区 | 国产精品成人一区二区三区夜夜夜 | 免费高清成人 |