1樓:網友
初學者則正仿,自己試著清陸寫了個。
寫的很亂,你看可以不。
假設採用的晶振是12mhz的。
#include ""
#include ""
static int b=0;
static int c=0;
int delay_1hour(void);
intrins_init() 定時器賦初值。
th0=0xe0;
tl0=0x18;
int delay(void);
main()
int i=0;
tmod=0x80;
intrins_init();
ea=1;et0=1;
tf0=0;
tr0=1;
while(delay_1hour())迴圈3600次1s即為1小時。
int delay0() interrupt 1 using 1 //中斷產生1ms,再用計數孫纖b產生1s計時。
tr0=0 ;
intrins_init();
tr0=1;
b++;if(b>1000)
p1_0=~p1_0;
b=0;delay_1hour();
int delay_1hour() 判斷是否到1小時延時,不到1小時返回1繼續迴圈,到了返回0退出迴圈。
c++;if(c>3600)
return 0;
else return 1;
2樓:電子粉絲
先用定時器寫個ms級,計數,比較。
微控制器延時程式的延時時間怎麼算的?
3樓:鐵淑敏寧丙
微控制器的延時程式通過執行指令來達到延時效果,這個時間等於執行的指令需要的時間,而乙個指令需要的時間叫做指令週期,這個時間等於若干個機器週期。
擴充套件資料:1丶指令週期,是每種運算需要的時間,如加法、邏輯等,是每一步進行這種指令運算需要的時間,是機器週期的整數倍,這種週期不定。
2丶51微控制器12m晶振,晶振週期1/12微妙,乙個機器週期包含12個晶振週期,所以12m晶振時機器週期=12x(1/12)微妙=1微妙。
3丶1個毫秒延時子程式如下:
voiddelay1ms(uint
ms)}
4樓:沙裡波特
首先,你應該問:執行一條指令,用多少時間。
然後,你自己,就可以算出,延時程式的延時時間。
別忘了採納。
5樓:宮帥王耘志
直接這麼計算時間是很難算的,不同的微控制器有不同的指令時間。
而且要看具體有幾條指令需要看彙編。
最好是用示波器來測試時間。
另外,這種延時會受到中斷程式的影響。
要想要精確的時間,最好使用定時器。
at89c51和stc89c52微控制器的區別
1 生產的公司不同 at89c51是atmel公司生產 stc89c52是巨集晶公司生產。2 ram和rom不同 at89c51是128byte ram,4k rom stc89c52是256byte,8k rom。3 定時器數量不同 at89c51有t0 t1兩個16位定時器 stc89c52有t...
at89c52微控制器的允許輸入電流為多少
對於這個問題你可以不去管它是否會超過,關於允許的電流最大值,仔細閱讀資料手冊就知道了,別人說的也不一定對的,倒不如自己去核實一下。搞清楚兩個概念就行啦 灌電流和拉電流 對應上拉和下拉的概念看一下 切忌 知其然知其所以然!不懂的在hi我 電流輸入 at89c52是乙個低電壓,高效能cmos 8位微控制...
要求用AT89C51微控制器的P1口點亮發光二極體分為兩組
真的是很簡單的,用點心學幾天就可以寫,看到沒人回,幫忙 12m include void timer0 init void main void timer0 isovf interrupt 1 程式如下 絕對沒有錯 led燈的一端接p1口的各各引腳,另一端接地。同時在p1口的每個管腳上加1k的上拉電...