bcb timer定時器怎么用?
就一個onTimer事件,設置好interval,就是多少秒執行一次之后,在事件里面寫代碼就好了
關于定時器的用法
設置一個時間的頻率響應,每隔一定時間改變字的坐標值并刷新一次.對于SetTimer,用法為SetTimer(1,1000,NULL),1000為1000毫秒,即響應時間.OnTimer是系統自帶的,按Ctrl+W調出添加函數跟變量的對話框,選擇你當前的Dlg,在Messages中選擇WM_TIMER,雙擊,確定,即可得到該函數.
如何在Excel里使用定時器?
在 Office 里有個方法是 application.ontime ,具體函數如下:
expression.OnTime(EarliestTime, Procedure, LatestTime, Schedule)
如果想進一步了解,請參閱 Excel 的幫助。
這個函數是用來安排一個過程在將來的特定時間運行,(可為某個日期的指定時間,也可為指定的時間段之后)。通過這個函數我們就可以在 Excel 里編寫自己的定時程序了。下面就舉兩個例子來說明它。
1.在下午 17:00:00 的時候顯示一個對話框。
Sub Run_it()
Application.OnTime TimeValue(“17:00:00”), “Show_my_msg”
‘設置定時器在 17:00:00 激活,激活后運行 Show_my_msg 。
End Sub
Sub Show_my_msg()
msg = MsgBox(“現在是 17:00:00 !”, vbInformation, “自定義信息”)
End Sub
2.模仿 Excel 97 里的 “自動保存宏”,在這里定時 5 秒出現一次
Sub auto_open()
MsgBox “歡迎你,在這篇文檔里,每 5 秒出現一次保存的提示!”, vbInformation, “請注意!”
Call runtimer ‘打開文檔時自動運行
End Sub
Sub runtimer()
Application.OnTime Now + TimeValue(“00:00:05”), “saveit”
‘ Now + TimeValue(“00:15:00”) 指定在當前時間過 5 秒鐘開始運行 Saveit 這個過程。
End Sub
Sub SaveIt()
msg = MsgBox(“朋友,你已經工作很久了,現在就存盤嗎?” & Chr(13) _
& “選擇是:立刻存盤” & Chr(13) _
& “選擇否:暫不存盤” & Chr(13) _
& “選擇取消:不再出現這個提示”, vbYesNoCancel + 64, “休息一會吧!”)
‘提示用戶保存當前活動文檔。
If msg = vbYes Then ActiveWorkbook.Save Else If msg = vbCancel Then Exit Sub
Call runtimer ‘如果用戶沒有選擇取消就再次調用 Runtimer
End Sub
以上只是兩個簡單的例子,有興趣的話,可以利用 Application.Ontime 這個函數寫出更多更有用的定時程序。
單片機-定時器的使用
展開全部
樓主的程序并無大錯,稍加修改即可正常運行。
下列程序已經實現了“(響4次/秒和響1次/秒),用定時器1控制發聲時間(3秒)”。
//==========================
#include
sbit FM = P1^3; //FM是蜂鳴器.
unsigned char i, j, count;
int k;
//——————————————
void main()
{
TMOD = 0x11; //把定時器0和1都設置為16位.
TH0 = (65536 – 50000) / 256;
TL0 = (65536 – 50000) % 256; //50000代表50毫秒.
TH1 = (65536 – 50000) / 256;
TL1 = (65536 – 50000) % 256; //50000代表50毫秒.
TR0 = 1; //啟動定時器0
TR1 = 1; //啟動定時器1
ET0 = 1; //打開中斷T0
ET1 = 1; //打開中斷T1
EA = 1; //打開總中斷.
i = 0;
j = 0;
k = 1;
count = 5;
while(1);
}
//——————————————
void timer0() interrupt 1 //中斷1函數,使用定時器0
{
TH0 = (65536 – 50000) / 256;
TL0 = (65536 – 50000) % 256; //50000代表50毫秒.
j++;
if(j >= (count / 2)) FM = 0;//打開蜂鳴器.
else FM = 1;//關閉蜂鳴器.
//count由定時器1控制;
//count=5表示蜂鳴器每秒響4次,count=20表示每秒響1次.
if(j >= count) j = 0;
}
//——————————————
void timer1() interrupt 3 //中斷3函數,使用定時器1
{
TH1 = (65536 – 50000) / 256;
TL1 = (65536 – 50000) % 256; //50000代表50毫秒.
i++;
if(i == 60) { //60表示60×50毫秒=3秒.
i = 0;
k–;
if(k == 0) k = 2;
switch(k) {
case 1: count = 5; break; //把count=5賦給中斷函數1中,讓蜂鳴器每秒響4次.
case 2: count = 20; //把count=20賦給中斷函數1中,讓蜂鳴器每秒響1次.
}
}
}
//——————————————
看網友的熱心回答,水平參差不齊,嘲諷帥哥學童的回答確實別開生面,如此多的錯誤觀點也敢亮出來,呵呵,叫人駁不勝駁!
請教一下:
—-
2.千萬不要
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
這樣定義,因為做(65536-50000)/256;這個運算,很占用機械周期,要知道,減法用1個機器周期,……工作周期至少多了20個,……
—-
說說看,究竟是多少個?
你要是調試過程序,就會知道,“至少多了20個”究竟是多少個。
你要是調試過程序,就會知道,這個運算是否是由單片機進行的。
看來,這位學童還沒有接觸過單片機。
c51單片機的定時器計數器怎么用?最好用例子
展開全部
方法有很多的,給你一個,你可以調試一下,你可以通過不同的晶振去計算定時器初值,如果你懂定時器這部分很好調通的
#include
sbit p1_0=P1^0;
int i; //全局變量
void timing(void) //晶振為3.6864M
{
TMOD|=0x01; //定時器T0,工作方式1
TH0=0xC3;
TL0=0xC7; //這兩個寄存器存的是計數器的計數開始的值,這兩個值累加至溢出后正好是50ms
ET0=1; //使T0中斷可以溢出
EA=1; //開啟總中斷
TF0=0; //溢出位清零
TR0=1; //開啟T0
}
/********定時中斷函數*********/
void time0_int () interrupt 1 //定時中斷函數
{
TH0=0xC3;
TL0=0xC7;
i++;
}
main()
{
i=0;
timing();
while(;)
{
if(i==20)
{
p1_0=~p1_0; //p1.0口狀態翻轉
i=0;
}
}
Duilb 怎么使用定時器
調整當前時間使用定時器時,須先將定時器的顯示時間調整到當前時間.1.1按住“時鐘”鍵的同時,分別按“星期”、“小時”和“分鐘”鍵,調整到當前的時間.(每按一次增加一小時,長按可快速調整.).1.2按“時鐘”鍵3秒后,當前時間增加1小時,同時液晶屏顯示“夏令時”字樣,進入夏令時功能,再按"時鐘"鍵3秒,取消夏令時功能,時間自動減少1小時.
51定時器的使用
我來寫兩句:
這種情況,狀態機來做比較好,具體點就是:一個動作隨時間的進行而發生不同的動作;舉個例子:常用的按鍵掃描,在定時中斷10ms或20ms中,我們定義一個’step‘的變量,
無按鍵時,step=0,一旦檢測到按鍵按下了,step=1…(下次中斷來時)檢測按鍵還處于按下(去抖),就說明按鍵真的按下了,置step=2,..再下次中斷來時,可以做長按或按鍵松開處理。
key_temp=Key_Port;//定時中斷每10~20ms進一次key_temp存單個時刻的按鍵值
switch(key_step)
{
case 0:
if(key_temp!=0xf0)//一旦檢測到按鍵按下了,key_step就加1
key_step++;
break;
//————————
case 1:
if(key_temp==last_key_value)//上次有按下,如果本次還與上次 //一樣就說明真有按鍵按下了。
{
key_press_f=1; //按鍵標志
key_value=key_temp;//按鍵值
key_step++; //進入下一階段
}
break;
//————————
case 2:
if(key_temp!=last_key_value) //檢測按鍵是否松開
{
key_step=0;
break;
}
last_key_value=key_temp;//存好本次的鍵值
}
言歸正傳,回到你的題目
//———————————————————
#include sbit Data_in=P0^1; //定義變量 unsigned char step=0,counter_10ms; //T0初始化 12M晶振 10MS定時 void Init_T0 (void) { TMOD = 0x01; TH0 = (65536-10000) /256; TL0 = (65536-10000) %256; EA = 1; ET0 = 1; TR0 = 1; } //————————————————————– void main (void) { Init_T0(); while (1) { ;//可做其它事 } } //定時中斷 10MS// void Time0_ISR(void) interrupt 1 using 0 { TH0 = (65536-10000) /256; //初始值 TL0 = (65536-10000) %256; switch(step) { case 0://第一次檢測 if(Data_in) step=1; break; case 1://第二次檢測 if(Data_in) { step=2;//第二次還為1的話就繼續 counter_10ms=0;//100ms計時器 } else step=0;//第二次為0,返回第一次檢測 break; case 2://100ms延時 if(++counter_10ms==10)//可以加入你想要的任何處理 step=0; break; } }
如圖:蘇泊爾 定時器如何使用啊?
先上發條(順時針轉到刻度滿的地方),再把蛋形計算器的上半部分回旋至所需的時間刻度即可.望采納,謝謝!
如何使用AT89S52中的定時/計數器2~急
沒有匯編的 給你個C語言的 你自己翻譯一下。
/*———————————————–
名稱:定時器2
內容:通過定時讓LED燈閃爍
————————————————*/
#include
sbit LED=P1^0;
/*————————————————
定時器初始化子程序
————————————————*/
void TIM2Inital(void)
{
RCAP2H = (65536-60000)/256;//晶振12M 60ms 16bit 自動重載
RCAP2L = (65536-60000)%256;
ET2=1; //打開定時器中斷
EA=1; //打開總中斷
TR2=1; //打開定時器開關
}
/*————————————————
主程序
————————————————*/
main()
{
TIM2Inital();
while(1);
}
/*————————————————
定時器中斷子程序
————————————————*/
void TIM2(void) interrupt 5 using 1//定時器2中斷
{
TF2=0;
LED=~LED; //指示燈反相
}
宜家定時器如何使用
不銹鋼奧格寧定時器
我也買了個了,開始順時針直接定時發現不響,百度了下,發現原來是自己的使用方法不對。
將不銹鋼定時器的上半部分按照順時針轉,從0轉到底到60。別太使勁。
再按照逆時針回轉到您需要定的時間,松開就可以啦。
注:如果您順時逆時分不清,看著鐘表操作。1點到2點叫順時針,2點到1點叫逆時針。
擰不動的時候別蠻力,看看是不是反了,不然就壞了….