启动定时器,程序可用读取其计数,或者用定时器触发中断,在中断中自己用变量计数,这样就有了一个时间计数值了。再有就是利用RTC也行。
10年积累的成都网站设计、做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先制作网站后付款的网站建设流程,更有贾汪免费网站建设让你可以放心的选择与我们合作。
在调用子程序前读取时间计数值,调用完毕再读取计数值,通过计算两个计数值的差可计数调用时间。
如果嫌麻烦,可用利用GPIO,在调用之前设置GPIO为高,调用完成设置为低,反复调用,用示波器测量GPIO正脉宽,可计算时长。
下面的是我用定时器0做的延时函数,你看看,可以精确到10ms,如果你还想精确,调定时器的初值就可以。最高精度是1ms.
void
initTimer0(void)
reentrant
//
Initialize
T0
for
Timer
0.01s
{
TMOD
|=
(10);
TMOD
=
~(11);
TH0
=
0xB0;
TL0
=
0x00;
}
//
Timer0
interrupt
void
timer0_ISR(void)
interrupt
1
//
Timer0
interrupt
{
TF0
=
0;
TH0
=
0xB0;
//
0.01s
TL0
=
0x00;
delayCnt++;
}
//
Delay
Time
void
delayTime(INT16U
sec,
INT16U
msec)
reentrant
//
Time
Delay
Function
{
INT16U
dcnt;
delayCnt
=
0;
dcnt
=
sec
*
1000
/
10
+
msec
/10;
while(delayCnt
评论
加载更多
应该是指令周期,根据指令的不同,一般一个指令需要1-4个机器周期来完成(比如乘法或除法就需要48个时钟周期来完成),一般的51单片机都是12分频,也就是说1个机器周期分为12个时钟周期。请你好好理解时钟周期--机器周期--指令周期三者之间的关系。
目前STC有不少型号的单片机有单时钟周期指令,一个时钟周期即为一个机器周期,不进行12分频,就是在1个时钟周期内可以执行一条指令,但只是部分指令可以单时钟周期执行,大多指令需要1-6个时钟周期来完成,相比较而言,已经比普通的12分频单片机速度快多了。
51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。
很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是52系列的单片机一般不具备自编程能力。