1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

標題: 幫忙看看這幾句代碼啥意思,謝謝 主要是那兩個for循環 [打印本頁]

作者: 郁郁七天    時間: 2018-7-19 16:42
標題: 幫忙看看這幾句代碼啥意思,謝謝 主要是那兩個for循環

主要是那兩個for循環啥意思,還有1141是咋來的

作者: huaxinnan    時間: 2018-7-19 18:53
延時函數,執行空操作 ,CPU在這里等待一段時間    1141應該是根據晶振大小計算出來的
作者: lilei1005674096    時間: 2018-7-19 19:06
這個應該是延時函數,用兩個for循環來達到延時的目的
作者: akclwq    時間: 2018-7-19 19:30
利用cpu的運行周期來計算出來的,CPU每一個運行周期的時間,是一樣的,可以利用它來做延時時間。
作者: angmall    時間: 2018-7-19 19:36
這個是軟件延時程序,用兩個for循環來達到延時的目的,  1141應該是根據晶振大小計算出來的

軟件延時,這種方法主要采用循環體進行。
j加一次{;}就循環一次,當j=1141時就轉到while外循環中了

11.0592MHz 晶振的延時函數

這是一個1ms基準延時程序
//N ms延時
void delay_ms(uint n)
{
uint i,j;
for(i=n;i>0;i–)
for(y=114;y>0;y–);
}



在電子技術中,脈沖信號是一個按一定電壓幅度,一定時間間隔連續發出的脈沖信號。脈沖信號之間的時間間隔稱為周期;而將在單位時間(如1秒)內所產生的脈沖個數稱為頻率。頻率是描述周期性循環信號(包括脈沖信號)在單位時間內所出現的脈沖數量多少的計量名稱;頻率的標準計量單位是Hz(赫)。電腦中的系統時鐘就是一個典型的頻率相當精確和穩定的脈沖信號發生器。

指令周期:CPU執行一條指令所需要的時間稱為指令周期,它是以機器周期為單位的,指令不同,所需的機器周期也不同。對于一些簡單的的單字節指令,在取指令周期中,指令取出到指令寄存器后,立即譯碼執行,不再需要其它的機器周期。對于一些比較復雜的指令,例如轉移指令、乘法指令,則需要兩個或者兩個以上的機器周期。通常含一個機器周期的指令稱為單周期指令,包含兩個機器周期的指令稱為雙周期指令。

時鐘周期:也稱為振蕩周期,一個時鐘周期 = 晶振的倒數。對于單片機時鐘周期,時鐘周期是單片機的基本時間單位,兩個振蕩周期(時鐘周期)組成一個狀態周期。

機器周期:單片機的基本操作周期,在一個操作周期內,單片機完成一項基本操作,如取指令、存儲器讀/寫等。

機器周期=6個狀態周期=12個時鐘周期。

51單片機的指令有單字節、雙字節和三字節的,它們的指令周期不盡相同,一個單周期指令包含一個機器周期,即12個時鐘周期,所以一條單周期指令被執行所占時間為12*(1/ 晶振頻率)= x μs。常用單片機的晶振為11.0592MHz,12MHz,24MHz。其中11.0592MHz的晶振更容易產生各種標準的波特率,后兩種的一個機器周期分別為1 μs和2 μs,便于精確延時。


作者: Liuyangp    時間: 2018-7-19 19:44
這兩個循環是延時函數的算法,因為要簡化計算所以弄了兩個循環,ms乘以1141就是可以延時的時間,1141是可以自己改的,決定于你想要延時的時間多少
作者: wangsong770    時間: 2018-7-19 21:36
通過語句循環,浪費時間來,來實現延時
作者: nikola    時間: 2018-7-19 22:10
毫秒延時函數;但這個是粗略延時,思路是假設單片機執行完一句代碼的時間是固定的,反復執行就可以達到一個延時效果。這個有兩個循環,外層i的循環是確定毫秒時間數,內層j的循環是為了讓多次循環湊夠1ms。1141是計算出來的,執行一行代碼所畫的時間是根據單片機和晶振算出來的。具體怎么計算,百度搜索“51執行一句代碼的時間如何計算?”我就不搬運了。
作者: 關外秀才    時間: 2018-7-20 09:14
兩個for語句是用來延時的,至于你說的數字1141則是根據你要延時多久算出來的,這個要看你用的晶振頻率算出CPU的時鐘周期,最終確定這個數字的。
作者: 18789007389    時間: 2018-7-20 10:59
for語句的嵌套,第一個for后面沒有分號,編譯器認為第二個for是第一個for的內部語句,而第二個for語句內部語句為空,程序自行的時候,第一個加一次,第二個執行1141次。
作者: wo3788065521    時間: 2018-7-20 11:26
延時用的,程序運行到這里時會卡住一定的時間,時間過后才會繼續往下走,你可以下載一個

單片機小精靈v1.3

里面可以根據晶振大小直接計算
作者: ggmcu    時間: 2018-7-20 11:34
延時函數,單片機在這里等待一段時間    1141應該是根據晶振或單片機內置RC大小計算出來的
作者: qaz13579    時間: 2018-7-20 12:56
延時函數
作者: hanniballing    時間: 2018-7-20 13:46
延時程序,for是嵌套循環的用法。1141這個參數是根據實際的單片機的時鐘,通過調試測試得來的1ms,不一定適用于你自己的硬件系統。
作者: wangchuan1226    時間: 2018-7-20 14:05
延時函數
作者: wangchuan1226    時間: 2018-7-20 14:05
毫秒延時用的,不準
作者: DOUBLES    時間: 2018-7-20 14:11
毫秒延時程序模塊
作者: 145464767456    時間: 2018-7-20 14:27
通過執行ms*1141這么多條空語句來實現延時,延時時間由晶振頻率和單片機執行效率決定,并不是所有的都是1141為1ms
作者: 飄羽拂塵    時間: 2018-7-20 14:29
上面大神都有回帖,我再補充一下,這個1141是根據晶振計算出一條命令的時間,延時程序轉化為匯編后,按匯編命令挨個的計算時間,最后就出來了,最后的結果是以匯編的命令計算出來的,精確要是用定時器

指令:

1、MUL、DIV:僅有的4周期指令

2、包含DPTR和PC的指令均為2周期指令

3、所有的絕對跳轉和條件轉移指令,均為2周期指令

4、所有包括A寄存器的指令,均為單周期指令

5、位操作指令中,ANL和ORL是2周期指令

6、所有包含立即地址的指令,除INC direct及DEC direct外,均為2周期指令

7、剩下的均為單周期指令。

_nop_函數可以在keil軟件的C51->HLP->C51lib.chm文檔中查閱

反推這個晶振應該是12M的





作者: meungwoo    時間: 2018-7-20 14:42
用空指令來消耗時間,本質上上就是一個延時函數。
作者: 漸入佳境    時間: 2018-7-20 14:52
粗略計時
作者: caikai456    時間: 2018-7-20 15:16
for循環是用于延時
作者: 心順    時間: 2018-7-20 15:21
毫秒延時程序模塊時間不準,要看指令時鐘頻率
作者: @不死鳥    時間: 2018-7-20 15:31
兩個for循環搭建延時函數,通過占用CPU時間執行加減運算達到延時的目的,1141是根據板子晶振周期計算而出,一般不用改,延時的長短通過給ms取不同值實現。
作者: 503383918    時間: 2018-7-20 15:43
延遲用的東西
作者: 天灰斷眉霉霉    時間: 2018-7-20 15:48
用來延時的
作者: 865503404    時間: 2018-7-20 16:05
延時函數,1141一般是試出來的
作者: 天真的小孩    時間: 2018-7-20 16:19
就一個延時函數,主要是靠運行的次數來延時的,而是延時精準度不高
作者: 李哥2    時間: 2018-7-20 16:40
應該是程序問題
作者: 李哥2    時間: 2018-7-20 16:40
程序有些問題
作者: 亂丶心    時間: 2018-7-20 16:51
延時,函數執行需要時間,根據給的不同數字,它運行的時候就相當于把你循環運行的時間當延時用
作者: lucky999star    時間: 2018-7-20 16:54
延時語句,沒啥具體用處
作者: 孤山半月    時間: 2018-7-21 15:27

延時程序,for是嵌套循環,要求不高
用while(i--)就可以吧




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1