當前位置:首頁 » 編程語言 » 02秒定時程序c語言
擴展閱讀
codeblockc語言圖形庫 2022-08-12 23:20:01

02秒定時程序c語言

發布時間: 2022-06-26 22:38:21

㈠ 如何用c語言實現定時何延時功能

C語言中的兩個函數

一個是<windows.h>庫下的Sleep()

效果為當前進程等待Sleep(x)毫秒

可以實現延時功能

另一個是<time.h>下的time()

效果為返回當前時間,配合循環可以實現定時功能

以下是一個例子:

//剛寫完
#include<stdio.h>
#include<windows.h>
#include<time.h>

intmain()
{
printf("定時程序2秒後開啟 ");
Sleep(2000);
printf("定時程序開啟 ");
printf("當前時間戳是%s ",time(NULL));
return0;
}

㈡ C語言中想要一個循環程序在2秒內結束,用哪個函數,怎麼用讓一個循環程序運行一次就結束,該怎麼編程!

2秒的應該要用定時器好一點吧,while(!兩秒標志)這樣就可以了(兩秒定時一到,則置位兩秒標志位),如果真的對實時性要求非常高的話,就是說兩秒一到,不管程序執行到哪裡,都應該結束這個循環,那就要用到任務的調度了,這個比較麻煩,因為會涉及到操作系統了,uC/OS可以實現這個。至於你說的讓循環程序執行一次就結束的,既然是只有一次,那就不叫循環了對吧,不要循環,直接順序執行下來就是一次了嘛

㈢ C語言中想要一個while循環程序在2秒內結束並向下繼續運行,用哪個函數,怎麼用或者怎麼停止循環

你可以這樣,定義一個變數,比如說time=0,在循環裡面每次循環time++,循環的判斷條件就是while(time<200)就行了
這里有延時函數的介紹
/* 函數類型:void (無返回值)
函數介面:delay(int)
例如在程序中取得n秒的延時,只要在代碼中加入 delay(n) 即可。註:n 為 int 類型。
*/

/* 調用時請務必#include <time.h> 頭文件 */
函數代碼如下:
void delay(int seconds)
{
clock_t start = clock();
clock_t lay = (clock_t)seconds * CLOCKS_PER_SEC;
while ((clock()-start) < lay) ;
}
可以函數裡面設定每一秒執行一次

㈣ 請問單片機C語言定時器程序怎麼寫

你看過匯編嗎?與匯編的格式是一樣的。具體就是先開中斷允許標志位(IE裡面對應的各個位)在設定TMOD工作方式。下一步就是設定初始值了(TH、TL)。設置完這些就可以開定時器了。寫中斷中段函數是是需要另加interrupt 加上一個常數(比如是定時器0就在後面加上1)。我用89S52晶元編過一個定時器程序你參考一下,希望對你有一點幫助。
//功能:感應外界溫度並用數碼管顯示
//時間:2005年6月20日
//設計人:
#include<reg52.h>
#define uchar unsigned char
sbit ad0809_oe=P1^0; //定義各個位
sbit ad0809_start=P1^1;
sbit ad0809_ale=P1^2;
sbit ls595_rclk=P1^3;
sbit ad0809_eoc=P1^5;
sbit ls595_oe=P1^4;
sbit ls595_ser=P3^0;
sbit ls595_srclr=P3^1;
uchar nn,mm;
uchar code tab[]={0x81,0xcf,0x92,0x86,0xcc,0xa4,0xa0,0x8f,0x80,0x84};
send(uchar); //聲明函數
AD(uchar);
void display(uchar);
void init();
//********普通口輸入數據*****************
send(uchar shu) //普通口串列輸入
{
unsigned char i,k;
k=0x01;
for(i=0;i<8;i++)
{
if(k==(k&shu)) //判斷每位上是否為1
ls595_ser=1;
else
ls595_ser=0;
k<<=1; //左移一位
ls595_srclr=0; //輸入一個上升沿講數送入595中
ls595_srclr=1;
}
}
//*****************595顯示子程序********************
void display(uchar )
{
uchar ge,shi,flge; //ge拆字後個位的存放處shi拆字後十位的存放處flge ℃的存放處
shi=tab[/10]; //拆字
send(shi); //給595送數
ge=tab[%10];
send(ge);
flge=0xb1;
send(flge);
ls595_rclk=0; //上升沿送出數據
ls595_rclk=1;
}
//*******************初始化程序********************
void init() //初始化AD、定時器
{
ad0809_start=0; //Start管教上升沿將AD內部寄存器清零
ad0809_start=1;
ad0809_ale=1; //ALE高電平選擇通道
nn=0;
mm=0;
TMOD=0x01; //定時器初始化
//IE=0x82;
EA=1;
ET0=1;
TCON=0x00;
TL0=(65536-50000)%256; //定時50ms
TH0=(65536-50000)/256;

}
AD(uchar wen)
{
// unsigned char tt=0;
// ad0809_ale=1; //選擇通道
ad0809_start=1;
ad0809_start=0; //start下降沿啟動轉換信號
while(ad0809_eoc==0); //判斷轉換是否結束
ad0809_oe=1; //轉換結束送出轉換數據
wen=P2;
return (wen);
}

//**************中斷服務程序*********************
void tiam0() interrupt 1 using 1 //中斷服務程序
{
TL0=(65536-50000)%256; //定時50ms
TH0=(65536-50000)/256;
nn++;
if(nn==10) //0.5秒M加一
{
mm++;
nn=0;
}
}

//****************主程序***************************
void main()
{
unsigned char bb,aa,cc; //bb=計算後得到溫度,aa=AD輸出數據
unsigned char wen; //wen存放轉換的得到的數據
init();
// wen=17;
ls595_oe=0;
cc=0;
TR0=1;
while(1)
{
aa=AD(wen);
// ad0809_oe=0;
aa=~aa;
bb=aa/4;
if(mm==2)
{
mm=0;
cc=bb;
}
display(cc); //調用顯示子程序

}
}

㈤ 單片機c語言編寫產生1秒定時的程序,怎麼寫

如果是51單片機的話其實很簡單的,這里假設晶振頻率是12M(一般都是的),你可以選用定時器0,工作在工作狀態2,因為這個狀態下裝入初始值幾乎不需要時間,所以定時精確,也就是8位預置數狀態,將初始值設為6,這樣每次定時就是250微秒,在中斷程序中定義一個靜態變數,每次中斷加一,這樣當這個變數值為4000時就剛好是1S鍾。
關鍵程序是:
void main()
{
TMOD=OX02;
EA=1;
ET0=1;
TH0=0X06;
TL0=0X06;
while(1);
}
void timer0() interrupt 1
{
static unsigned int times=0;
times++;
if(times==4000)
{
times=0;
//自己的程序
}}

㈥ c語言如何每隔2秒產生隨機數

你可以添加延時函數:

sleep(2);//單位貌似是毫秒,具體的你可以試試。我先寫個2,記得去驗證單位是什麼
//你在裡面換算好單位。我在linux是秒單位的。

需要包含頭文件

#include<windows.h>

然後你再用rand()產生隨即函數。


下面給出樣例,你需要調試一下,我在linux用記事本寫的

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
intmain(void)//返回值必須是整形c99的新標准
{
srand(time(0));
while(true)
{
printf("t=%d ",rand());
Sleep(2);//記得把2修改,有可能是2000
}
return0
}

㈦ 利用c語言編程,使DSP28335的cpu定時器1在主頻為100兆赫茲情況下每隔2秒觸發定時器中斷

摘要 C 語言編程常用的4種延時方法,其中兩種非精確延時,兩種精確一些的延時。for 語句和 while 語句都可以通過改變 i 的范圍值來改變延時時間,但是 C 語言循環的執行時間都是不能通過程序看出來的。精確延時有兩個方法,一個方法是用定時器來延時,這個方法我們後邊課程要詳細介紹,定時器是單片機的一個重點。另外一個就是用庫函數nop();,一個 NOP 的時間是一個機器周期的時間,這個後邊也要介紹。

㈧ 這個c語言程序延時2ms是怎麼計算的

你給的演算法誤差大,不同的計算機運算速度不同,等待時間不同。
暫停,可以用
Windows.h
里的
Sleep()
函數,也可以自己寫。
Sleep(1000);
參數是1000毫秒,就是暫停
1
秒。一般人認為,Sleep函數,每秒可能有25毫秒誤差。
自己寫,可以利用
clock
()
函數,clock
()
函數送返從程序開始運行到調用時的時間間隔,單位是毫秒。暫停開始,用clock
()
取開始時間,然後,只要用clock
()再取時間,判斷是否到結束時間,沒到則繼續暫停。
//
等待
多少秒:
void
wait
(
int
seconds
)
{
clock_t
endwait;
endwait
=
clock
()
+
seconds
*
CLOCKS_PER_SEC
;
while
(clock()
<
endwait)
{}
}
//
等待多少毫秒:
void
wait_ms
(
int
ms
)
{
clock_t
endwait;
endwait
=
clock
()
+
ms;
while
(clock()
<
endwait)
{}
}
精確計時演算法見L_o_o_n_i_e
網路空間文章:C語言時間函數的應用

㈨ 用C語言編寫程序,要求實現兩盞LED燈交替閃爍,間隔時間為2秒。

sbit LED1=P2^0;
sbit LED2=P2^1;

// STC的下載工具中,有延時的計算例子,再使用循環延時
void Delay100ms(){ //@11.0592MHz
unsigned char i, j;

i = 180;
j = 73;
do{
while (--j);
} while (--i);
}

void main(){
unsigned int n;
while(1){
LED1=~LED1;
LED2=~LED2;
for(n=0; n<20; n++){
Delay100ms();
}
}
}

㈩ C語言中想要一個循環程序在2秒內結束,用哪個函數,怎麼用或者怎麼停止循環

你這個程序是單片機的C?
用中斷做一個定時器。在中斷服務程序里,累加一個全局變數,比如SoftTimerCounter。
將你的主循環while(1)改為:while(SoftTimerCounter<=設定時間)
設定時間要根據定時中斷的時間間隔和你要的時長來計算一下,也就是定時中斷的次數。
最好在可以跳出的這個while循環後邊再加一個while(1)空循環。