我以前寫的控制跑馬燈的程序,有1s定時(shí),也有中斷,根據(jù)需要修改修改就可以了。
創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)公司,提供成都網(wǎng)站建設(shè)、做網(wǎng)站,網(wǎng)頁設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);可快速的進(jìn)行網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,是專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
但是,晶振是12MHz,一條匯編的指令就至少是1us,C語言的語句,就要更多。
現(xiàn)在通過上面兩個(gè)數(shù)據(jù)可以得出:?jiǎn)纹瑱C(jī)每執(zhí)行一次自減所需要的時(shí)間是1/12M *100(s),即1/120000 s,逆向計(jì)算一下,每1ms需要自減多少次?120次對(duì)吧。
i,j;for(i=0;ims;i++)for(j=0;j1052;j++);} C語言的延時(shí)函數(shù)一般不太準(zhǔn),如果要求不是很高的話,搞調(diào)整一下程序中1052那個(gè)值就可以做到。如果要更精確,最好用匯編。
1 C語言程序延時(shí) Keil C51的編程語言常用的有2種: 一種是匯編語言;另一種是C 語言。用匯編語言寫單片機(jī)程序時(shí),精確時(shí)間延時(shí)是相對(duì)容易解決的。
.比如前面那個(gè)箭頭指到你的調(diào)用函數(shù)delay(200);假設(shè)執(zhí)行到此部用時(shí)1110。
1、//end=time(null);在程序結(jié)束的時(shí)候再給另一個(gè)變量賦值,值等于當(dāng)前的系統(tǒng)時(shí)間。
2、算法是這樣的:這個(gè)用編譯軟件,如keil,編譯通過之后,進(jìn)入軟件調(diào)試功能,就可以測(cè)出來是延時(shí)多少秒。具體我?guī)湍阏{(diào)試過了,如果單片機(jī)接12mhz晶振的話,這個(gè)是延時(shí)0.2秒的子程序。你調(diào)用一次delay();就延時(shí)0.2秒。
3、這是一個(gè)延時(shí)為ms的C語言程序,只要給Delay=2,便可延時(shí)2ms。
1、就是用晶振頻率算cpu指令周期,再算Delay循環(huán)中有幾條代碼,需要多少個(gè)指令周期。除一下可以算個(gè)大概。具體你可以結(jié)合硬件資料來算。
2、這個(gè)是和你機(jī)器的運(yùn)算速度有關(guān)的 你要計(jì)算出這個(gè)函數(shù)用了多少時(shí)間就要用時(shí)間函數(shù),我很久沒用了。
3、算法是這樣的:這個(gè)用編譯軟件,如keil,編譯通過之后,進(jìn)入軟件調(diào)試功能,就可以測(cè)出來是延時(shí)多少秒。具體我?guī)湍阏{(diào)試過了,如果單片機(jī)接12mhz晶振的話,這個(gè)是延時(shí)0.2秒的子程序。你調(diào)用一次delay();就延時(shí)0.2秒。
4、.比如前面那個(gè)箭頭指到你的調(diào)用函數(shù)delay(200);假設(shè)執(zhí)行到此部用時(shí)1110。