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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機流水燈編程求教 不理解怎么和delay配合工作

[復制鏈接]
跳轉到指定樓層
樓主
ID:250349 發表于 2017-11-17 11:09 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
單片機源程序:

#include<reg52.h>//開頭,字體HGSoeiPresemceEB
#include<intrins.h>//用intrins頭文件函數
#define uchar unsigned char//宏定義uchar代表unsigned char
#define uint  unsigned int//宏定義unit代表unsigned int
uint a;//定義a為無符號整型(16位)
uchar i;//定義i為無符號字符型(8位)
uchar temp;//定義字符型變量
void delay(uint z);//void為無返回值函數,delay為時間延時函數
void main()//唯一主函數,無返回值,沒參數
{
        temp = 0x7f;//temp賦值為11111110
        P1 = temp;//P1賦值為temp
        while(1)//無限循環
        {
                for(i = 0; i <8; i++)//i從0開始,<8,執行函數,0+1,<8,執行函數,0+1+1,<8,執行函數...一直到0+1+1+1+1+1+1+1+1為止跳出函數
                {
                        temp = _crol_(temp,1);//定義的temp每次左移一位,循環
                        P1 = temp;//賦值P1為temp
                        delay(500);//延時500毫秒
                 }
        }
}         
void delay(uint z) //定義z,z是int型形式參數(形參)
{
        uint x,y;//定義x和y都是int型數值
        for(x = z; x > 0; x--)//for循環初始值x=z,當x>0時,成立,x自減
                for(y = 120; y > 0 ; y--);//for循環初始值y=120,當y>0時,成立,y自減

}        
按照教程,控制led燈的流水閃爍,但是有幾個紅字的地方,我不是很懂,希望得到大家的幫助
最后這段
uint x,y;//定義x和y都是int型數值
        for(x = z; x > 0; x--)//for循環初始值x=z,當x>0時,成立,x自減
                for(y = 120; y > 0 ; y--);//for循環初始值y=120,當y>0時,成立,y自減
雖然做了注釋,但是,我不理解,他是怎么和delay(500)配合工作的,如果刪了這一段,led燈就流水閃爍的特別厲害,,謝謝大家的幫助,,,





分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:215444 發表于 2017-11-17 11:55 | 只看該作者
刪除這一段,為什么LED還能亮,因為你把子函數都刪除,不能編譯的吧,還有delay(500)可以用stc-isp-15xx-v6.86D這個軟件生出
回復

使用道具 舉報

板凳
ID:250349 發表于 2017-11-17 13:09 | 只看該作者
k455619 發表于 2017-11-17 11:55
刪除這一段,為什么LED還能亮,因為你把子函數都刪除,不能編譯的吧,還有delay(500)可以用stc-isp-15xx-v6 ...

我不了解y=120   和  delay(500)他們中間的關系,,,
回復

使用道具 舉報

地板
ID:247257 發表于 2017-11-23 11:20 | 只看該作者
  delay(500)是延時500ms的意思,就是執行到  delay(500)《---這里的時候等500ms在繼續運行,也就是以500ms的間隔進行燈的切換。你刪了這一段就沒有延時了,自然閃爍地很快了
回復

使用道具 舉報

5#
ID:212797 發表于 2017-11-23 13:18 | 只看該作者
void delay(uint z) //定義z,z是int型形式參數(形參)
{
        uint x,y;//定義x和y都是int型數值
        for(x = z; x > 0; x--)//for循環初始值x=z,當x>0時,成立,x自減
                for(y = 120; y > 0 ; y--);//for循環初始值y=120,當y>0時,成立,y自減

}  
這個函數的意思是,當z=1時,函數運行需要消耗1ms的時間。而把z改為500時,執行這段程序就需要消耗500ms,所以說把這段程序嵌入到主程序里面就是為了延時500ms(實際是CPU在那干耗著)。
回復

使用道具 舉報

6#
ID:252134 發表于 2017-11-23 18:08 | 只看該作者
……就2句話……
這是一個延時函數……沒啥好解釋的啊
函數內部就是一個2層的for循環結構,調用該函數以后,cpu就開始在for循環里執行,for循環里只做循環體的判斷,沒有任何其他語句,目的就是消耗CPU時間以達到延時的目的.
void delay(uint z)
{
uint x,y;
//總共 z * 120 次循環
for(x=z;x>0;x--) //z次循環
for(y=120;y>0;y--); //120次循環
}
如果想具體計算上面的函數究竟延時多長時間,要先知道CPU的時鐘頻率是多少,還有搞清楚這段代碼在編譯器編譯以后的匯編指令有多少條(每條指令的執行周期是多少),這些信息都知道了就可以算延時時間了.
真正要相對比較精確地延時的話,延時函數的代碼一般是直接使用匯編語言來寫的.
回復

使用道具 舉報

7#
ID:243143 發表于 2017-11-24 13:47 | 只看該作者
void delay(uint z) //定義z,z是int型形式參數(形參)
{
        uint x,y;//定義x和y都是int型數值
        for(x = z; x > 0; x--)//for循環初始值x=z,當x>0時,成立,x自減
                for(y = 120; y > 0 ; y--);//for循環初始值y=120,當y>0時,成立,y自減

}   

看第二個for循環后面有個分號,實際就是在空運行。
回復

使用道具 舉報

8#
ID:111634 發表于 2017-11-24 14:47 | 只看該作者
先學理論,打基礎,就不會有這么多問題了,本壇至少有50%的問題屬于此類情況。
回復

使用道具 舉報

9#
ID:253106 發表于 2017-11-24 16:29 | 只看該作者
心靜不下 發表于 2017-11-17 13:09
我不了解y=120   和  delay(500)他們中間的關系,,,

delay()括號里的數值是多少,就是延時多少ms,執行for(y=120;y>0,y--)語句約需要1ms的時間,假如y=240,那么執行for(y=240;y>0,y--)語句約需要2ms的時間,這時  延時的時間=delay()括號里的數值*2ms,大概意思就是這樣
回復

使用道具 舉報

10#
ID:253135 發表于 2017-11-24 20:22 | 只看該作者
所謂的延遲,其實是:1.計算機對每一條語句處理需要時間。2.每一條語句處理的時間不同。3.具體需要多長時間就要看cpu的頻率了。
delay(500)的意思是讓延遲子程序運行500次,每一次又要經過120次y運算,而每一次運算都需要時間,所以delay(500)就要很長很長時間,自然的就會主程序卡在P1=temp語句,不進行下一步。所以led才會亮好久。
      
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 美日韩精品| wwww.8888久久爱站网 | 亚洲国产精品一区 | 精品综合久久 | 成人av一区二区三区 | 亚洲黄色av | 中文字幕免费中文 | 女人天堂av| av一级毛片 | 亚洲三区视频 | 国产在线一级片 | 国产一区二区毛片 | 欧美性生活免费 | 91偷拍精品一区二区三区 | 国产精品夜夜夜一区二区三区尤 | 一区二区三区国产好 | 精品国产精品三级精品av网址 | 日韩成人av在线 | 成人免费影院 | 日韩欧美专区 | xx性欧美肥妇精品久久久久久 | 91精品久久久久久久久久 | 97人人澡人人爽91综合色 | 成年人精品视频在线观看 | 亚洲欧洲精品成人久久奇米网 | 国产成人综合av | 精品久久亚洲 | 欧美日韩一区二区在线观看 | 美日韩视频 | 视频在线h | 国产高清视频一区 | 日本高清视频网站 | 中国美女一级黄色片 | 自拍视频网站 | 欧美日韩一区二区三区四区 | 欧美福利 | 久久久久av| 亚洲精品一区二区三区蜜桃久 | 日本免费网 | 国产精品日韩一区 | 久久久精品 |