|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
延時問題 |
| 作者:衷政偉 欄目:單片機 |
#include <reg51.h> sbit P10 = P1^0; void delay20s(void) { unsigned CHAR i, j, k; for (i=200; i>0; i--) { for (j=200; j>0; j--) { for (k=248; k>0; k--) { ; } } } } void main(void) { while (1) { P10 = 0; delay20s(); P10 = 1; delay20s(); } } 一段簡單的延時電路延時20秒 若這段變?yōu)椋?br> for (i=0; i<200; i++) { for (j=0; j<200; j++) { for (k=0; k<248; k++) { ; } } } 怎么延時就變?yōu)?0秒了? |
| 2樓: | >>參與討論 |
| 作者: mornshine 于 2006/7/14 10:26:00 發(fā)布:
不一樣的匯編編譯結(jié)果 20s的那段程序,編譯出來的匯編程序比較應(yīng)該是用DJNZ,而30秒那段編譯結(jié)果復(fù)雜得多。 |
|
| 3樓: | >>參與討論 |
| 作者: 衷政偉 于 2006/7/14 11:10:00 發(fā)布:
上樓的有理 30秒的代碼反匯編: 其中有CJNE指令 此為3個機器周期 為什么延時30秒我明白了 但是從C的代碼來看確實和20秒的沒區(qū)別啊,這要怎么看啊? |
|
| 4樓: | >>參與討論 |
| 作者: mornshine 于 2006/7/14 12:02:00 發(fā)布:
程序的執(zhí)行時間,最終取決于匯編代碼,而不是C代碼 如題 |
|
| 5樓: | >>參與討論 |
| 作者: 衷政偉 于 2006/7/14 12:34:00 發(fā)布:
謝謝上樓的,看來匯編我們也要學(xué)好啊 |
|
| 6樓: | >>參與討論 |
| 作者: s_xcyang 于 2006/7/14 12:49:00 發(fā)布:
我覺得用定時器 延時會解決c語言的問題 c語言延時很難判斷 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |