今天给各位分享c语言速度计规范的知识,其中也会对c语言运行速度进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、单片机C语言实现红外脉冲计数计算车速2、求:电动自行车速度里程表c语言程序3、c语言如何计时4、C语言编写规范有哪些?5、在C语言中如何实现精确计时
单片机C语言实现红外脉冲计数计算车速
以51单片机 12MHz晶振情况下为例
#define STAYTIME 781//定时200ms 其他时间可以自己算
int tcount,p_count;
double speed;
void t0_init(void)
{
TH0=0x00;
TL0=0x00;
TMOD|=0x02;
ET0=1;
TR0=1;
IT0=1;//外部中断下降沿触发
EX0=1;
}
void pulse_int(void) interrupt 0
{
p_count++;
}
void t0_int(void) interrupt 1
{
tcount++;
if(tcountSTAYTIME){
tcount=0;
EX0=0;//关输入脉冲的中断
ET0=0;
speed=p_count/20;//单位就是 转/秒
//下面重新开始
p_count=0;
ET0=1;
EX0=1;
}
}
}
void main()
{
t0_init();
EA=1;
while(1);
}
求:电动自行车速度里程表c语言程序
1、记录一段时间(如每分钟)的中断数;
2、用记录时间间隔/中断数(这里中断数应该大于0),即可得到转一圈的时间。例如
int num=0;//初始化中断数
int t=0; //初始化时间
float passtime=0;
经过t=60秒后,中断数num为150,则
passtime=t/num;
即60.0/150=0.4秒
c语言如何计时
C语言中提供了许多库函数来实现计时功能
下面介绍一些常用的计时函数
1. time()
头文件:time.h
函数原型:time_t time(time_t * timer)
功能:返回以格林尼治时间(GMT)为标准,从1970年1月1日00:00:00到现在的时此刻所经过的秒数
用time()函数结合其他函数(如:localtime、gmtime、asctime、ctime)可以获得当前系统时间或是标准时间。
用difftime函数可以计算两个time_t类型的时间的差值,可以用于计时。用difftime(t2,t1)要比t2-t1更准确,因为C标准中并没有规定time_t的单位一定是秒,而difftime会根据机器进行转换,更可靠。
说明:C标准库中的函数,可移植性最好,性能也很稳定,但精度太低,只能精确到秒,对于一般的事件计时还算够用,而对运算时间的计时就明显不够用了。
2. clock()
头文件:time.h
函数原型:clock_t clock(void);
功能:该函数返回值是硬件滴答数,要换算成秒,需要除以CLK_TCK或者 CLK_TCKCLOCKS_PER_SEC。比如,在VC++6.0下,这两个量的值都是1000。
说明:可以精确到毫秒,适合一般场合的使用。
3. timeGetTime()
头文件:Mmsystem.h 引用库: Winmm.lib
函数原型:DWORD timeGetTime(VOID);
功能:返回系统时间,以毫秒为单位。系统时间是从系统启动到调用函数时所经过的毫秒数。注意,这个值是32位的,会在0到2^32之间循环,约49.71天。
说明:该函数的时间精度是五毫秒或更大一些,这取决于机器的性能。可用timeBeginPeriod和timeEndPeriod函数提高timeGetTime函数的精度。如果使用了,连续调用timeGetTime函数,一系列返回值的差异由timeBeginPeriod和timeEndPeriod决定。
4. GetTickCount()
头文件:windows.h
函数原型:DWORD WINAPI GetTickCount(void);
功能:返回自设备启动后的毫秒数(不含系统暂停时间)。
说明:精确到毫秒。对于一般的实时控制,使用GetTickCount()函数就可以满足精度要求。
5. QueryPerformanceCounter()、QueryPerformanceFrequency()
头文件:windows.h
函数原型:BOOLQueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount);
BOOLQueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);
功能:前者获得的是CPU从开机以来执行的时钟周期数。后者用于获得你的机器一秒钟执行多少次,就是你的时钟周期。
补充:LARGE_INTEGER既可以是一个8字节长的整型数,也可以是两个4字节长的整型数的联合结构, 其具体用法根据编译器是否支持64位而定:
在进行定时之前,先调用QueryPerformanceFrequency()函数获得机器内部定时器的时钟频率,然后在需要严格定时的事件发生之前和发生之后分别调用QueryPerformanceCounter()函数,利用两次获得的计数之差及时钟频率,计算出事件经历的精确时间。
说明:这种方法的定时误差不超过1微秒,精度与CPU等机器配置有关,一般认为精度为透微秒级。在Windows平台下进行高精度计时的时候可以考虑这种方法。
6. gettimeofday()
Linux C函数。
头文件:sys/time.h
函数原型:int gettimeofday(struct timeval *tv,struct timezone *tz);
说明:其参数tv是保存获取时间结果的结构体,参数tz用于保存时区结果(若不使用则传入NULL即可)。
timeval的定义为:
struct timeval {
long tv_sec; // 秒数
long tv_usec; //微秒数
}
可见该函数可用于在linux中获得微秒精度的时间。
说明:使用这种方式计时,精度可达微秒。经验证,在arm+linux的环境下此函数仍可使用。
C语言编写规范有哪些?
啊哦
这个很多啊 呵呵
在程序编译方面没有什么约定 ,
在程序的排版方面,可以约定一些标准, 比如:
1 程序块要采用缩进风格编写,缩进的空格数为4个
2 对齐只使用空格键,不使用TAB键。
3 逗号、分号只在后面加空格。
int a, b, c;
4 比较操作符, 赋值操作符”=”、 “+=”,算术操作符”+”、”%”,逻辑操作符””、””,位域操作符””、”^”等双目操作符的前后加空格 。
5 “!”、”~”、”++”、”–“、””(地址运算符)等单目操作符前后不加空格。
6 “-“、”.”前后不加空格。
p-id = pid; // “-“指针前后不加空格
7 if、for、while、switch等与后面的括号间应加空格,使if等关键字更为突出、明显。
if (a = b c d)
空格多数情况是作为词法分析的分隔,多余的空格一般是无关紧要(字符串除外),在语法分析之前已被删除。
经典的关于空格的例子是:
int a=4;
int* p=a;
int result=16/ *p; ( 此处必须在*p前加空格,否则在词法分析时被解释为注释开始/* )
在C语言中如何实现精确计时
time()
头文件:time.h
函数原型:time_t time(time_t * timer)
功能:返回以格林尼治时间(GMT)为标准,从1970年1月1日00:00:00到现在的此时此刻所经过的秒数。
2.clock()
头文件:time.h
函数原型:clock_t clock(void);
功能:该函数返回值是硬件滴答数,要换算成秒,需要除以CLK_TCK或者 CLK_TCKCLOCKS_PER_SEC。比如,在VC++6.0下,这两个量的值都是1000。
3. timeGetTime()
头文件:Mmsystem.h 引用库: Winmm.lib
函数原型:DWORD timeGetTime(VOID);
功能:返回系统时间,以毫秒为单位。系统时间是从系统启动到调用函数时所经过的毫秒数。注意,这个值是32位的,会在0到2^32之间循环,约49.71天。
关于c语言速度计规范和c语言运行速度的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。