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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8872|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 福利视频网 | 欧美极品在线 | 在线视频91 | 二区在线视频 | 在线免费国产视频 | 亚洲欧美综合网 | 午夜影院黄 | 99久久精品国产一区二区三区 | 国产99小视频 | 欧美日韩亚洲视频 | 欧美一区二区三区在线观看 | 国产午夜精品一区二区三区嫩草 | 一区二区三区免费 | 久久久久国产精品一区三寸 | 国产精品久久一区二区三区 | www.日韩av.com | 一级爱爱片 | 久久久久久免费看 | 精品久久久久久久久久久久 | 成人一级片在线观看 | 久久com| 可以免费观看的av片 | 欧美精品一区三区 | 黄色电影在线免费观看 | 日韩欧美视频 | 国产一区高清 | 亚洲精品大片 | 精品二区 | 国产乱码精品一区二区三区忘忧草 | 365夜爽爽欧美性午夜免费视频 | 精品一二区 | 交专区videossex农村 | 亚洲精品中文字幕在线 | 亚洲精品一区中文字幕乱码 | 男女一区二区三区 | 欧美福利专区 | 国产成人精品综合 | 成人亚洲精品 | 一区二区三区精品 | 在线午夜 | 国产在线观看一区二区 |