51單片機(jī)在晶振12M下,從仿真上來看大概是1ms(仿真的單位是s),具體時(shí)間可以用編個(gè)程序運(yùn)行,
創(chuàng)新互聯(lián)建站是創(chuàng)新、創(chuàng)意、研發(fā)型一體的綜合型網(wǎng)站建設(shè)公司,自成立以來公司不斷探索創(chuàng)新,始終堅(jiān)持為客戶提供滿意周到的服務(wù),在本地打下了良好的口碑,在過去的十載時(shí)間我們累計(jì)服務(wù)了上千家以及全國政企客戶,如成都門窗定制等企業(yè)單位,完善的項(xiàng)目管理流程,嚴(yán)格把控項(xiàng)目進(jìn)度與質(zhì)量監(jiān)控加上過硬的技術(shù)實(shí)力獲得客戶的一致贊揚(yáng)。
while(1)
{
delay();
P1=~P1;
}
然后用示波器觀察P1口波形周期
#include stdio.h
#include stdlib.h
#include time.h
void main()
{
unsigned char time1[] = {?10, 8, 31, 9, 26 };
unsigned char time2[] = { 10, 8, 31, 9, 50 };
struct tm t1 = {0};
struct tm t2 = {0};
time_t _t1;
time_t _t2;
double diff;
t1.tm_year = time1[0] + 100;
t1.tm_mon = time1[1];
t1.tm_mday = time1[2];
t1.tm_hour = time1[3];
t1.tm_min = time1[4];
t2.tm_year = time2[0] + 100;
t2.tm_mon = time2[1];
t2.tm_mday = time2[2];
t2.tm_hour = time2[3];
t2.tm_min = time2[4];
_t1 = _mkgmtime( t1 );
_t2 = _mkgmtime( t2 );
diff = difftime(_t2, _t1 );
printf( "相差 %.0f 分鐘\n", diff / 60 );
}
擴(kuò)展資料:
C語言中有兩個(gè)相關(guān)的函數(shù)用來計(jì)算時(shí)間差,分別是:
time_t time( time_t *t)? ?與 clock_t clock(void)
頭文件: time.h
計(jì)算的時(shí)間單位分別為: s? ?, ms
time_t 和 clock_t 是函數(shù)庫time.h 中定義的用來保存時(shí)間的數(shù)據(jù)結(jié)構(gòu)
返回值:
1、time? : 返回從公元1970年1月1號(hào)的UTC時(shí)間從0時(shí)0分0秒算起到現(xiàn)在所經(jīng)過的秒數(shù)。如果參數(shù) t 非空指針的話,返回的時(shí)間會(huì)保存在 t 所指向的內(nèi)存。
2、clock:返回從“開啟這個(gè)程序進(jìn)程”到“程序中調(diào)用clock()函數(shù)”時(shí)之間的CPU時(shí)鐘計(jì)時(shí)單元(clock tick)數(shù)。? ? ?1單元 = 1 ms。
所以我們可以根據(jù)具體情況需求,判斷采用哪一個(gè)函數(shù)。
具體用法如下例子:
#include time.h
#include stdio.h
#include stdlib.h
int main()
{
time_t c_start, t_start, c_end, t_end;
c_start = clock();? ? //! 單位為ms
t_start = time(NULL);? //! 單位為s
system("pause");
c_end? ?= clock();
t_end = time(NULL);
//!difftime(time_t, time_t)返回兩個(gè)time_t變量間的時(shí)間間隔,即時(shí)間差
printf("The pause used %f ms by clock()\n",difftime(c_end,c_start));
printf("The pause used %f s by time()\n",difftime(t_end,t_start));
system("pause");
return 0;
}
因此,要計(jì)算某一函數(shù)塊的占用時(shí)間時(shí),只需要在執(zhí)行該函數(shù)塊之前和執(zhí)行完該函數(shù)塊之后調(diào)用同一個(gè)時(shí)間計(jì)算函數(shù)。再調(diào)用函數(shù)difftime()計(jì)算兩者的差,即可得到耗費(fèi)時(shí)間。
C/C++中的計(jì)時(shí)函數(shù)是clock()。
所以,可以用clock函數(shù)來計(jì)算的運(yùn)行一個(gè)循環(huán)、程序或者處理其它事件到底花了多少時(shí)間,具體參考代碼如下:
#include?“stdio.h”
#include?“stdlib.h”
#include?“time.h”
int?main(?void?)
{
long????i?=?10000000L;
clock_t?start,?finish;
double??duration;
/*?測量一個(gè)事件持續(xù)的時(shí)間*/
printf(?"Time?to?do?%ld?empty?loops?is?",?i?);
start?=?clock();
while(?i--?)??????;
finish?=?clock();
duration?=?(double)(finish?-?start)?/?CLOCKS_PER_SEC;
printf(?"%f?seconds\n",?duration?);
system("pause");
}