微控制器同程式,呼叫兩次不同時間延時函式,除錯發現時間相同

2021-09-01 18:48:28 字數 746 閱讀 5785

1樓:愽

1:原理:僅僅執行一些,沒有實質性影響的所謂「無意義指令」,比如做比大小啊,做某個int的自加運算啊之類的

2:兩重for的作用:簡單的說,就像高中數學中的「乘法原理」一樣,這樣可以很輕易的迅速增加上述「無意義指令」的數目

3:關於取值大小:這個如果是在c下變成,這個值不僅僅與晶振、微控制器本身運算速度有關,而且還與c的編譯器有關,所以說,這個值雖說是可以精確計算的,但大多數情況下,程式設計師用的都是「經驗值」——當然,如果用匯編程式設計,情況就不一樣了,因為每一條指令所使用的機器週期是一定的,你當然可以根據所有指令使用的總時間,精確的算出具體延時的總時間

綜合你的的問題,我給你一點建議,就是剛學微控制器的時候,還是一定要老老實實的從彙編程式設計學起——這樣,在你以後接觸到c之後,你才能明白,這中間實際上經歷了一個什麼樣的過程,只有這樣你才能真正理解微控制器。當然,等最終你完全拿下一種微控制器之後,儘量使用c程式設計,無疑是歷史所肯定的。

具體有什麼問題你還可以hi我

2樓:喔喔

去掉for(;x>0;x--);這一句右括號右邊的;

for(;x>0;x--);

等價於下邊,(;表示一條空語句)

for(;x>0;x--)

因此**中2個迴圈語句等價於如下語句:

for(;x>0;x--)

for(;t>0;t--)

不同的微控制器在使用的晶振頻率一樣的情況下執行delay函式的時間一樣嗎

微控制器程式解釋,微控制器程式解釋

222222222222222222222222222222222222 cnta equ 30h 定義cnta為暫存器30h count equ 31h 定義count為暫存器31h org 00h 程式開始 ljmp start 開始程式入口 org 0bh 定時器t0中斷程式入口地址,不過最好...

微控制器程式問題,微控制器程式問題

其實現在有部分高階的微控制器都有flash儲存區,不過我們一般是作為儲存程式用的,但其實也可以作為少量的資料區使用。但一般普通的51系列微控制器是不能的,只能外部擴充套件加eeprom,或者flash。只不過現在很多微控制器是內部由eeprom,擴充套件的資料flash,按照晶片的公司提供的data...

微控制器中如何呼叫寫好的子程式,怎樣51微控制器呼叫兩個子程式

呵呵bai 為你正確解答 使用調du 用指令lcall 可以去zhi呼叫已經編寫好了的dao子程式。內 使用格式 lcall 子程式名字 即容子程式的首地址 用符號表示 叫符號地址 例如 現有一個子程式 ys1ms mov r7,4ll1 mov r6,200ll2 djnz r6,ll2djnz ...