大家好,今天小编关注到一个比较有意思的话题,就是关于单片机c语言 延时的问题,于是小编就整理了4个相关介绍单片机c语言 延时的解答,让我们一起看看吧。
delay.c是什么文件?
delay函数是一个自己定义的延时函数,C语言定义延时函数主要通过无意义指令的执行来达到延时的目,并没有一个软件自带头文件专门有delay这个函数的。
voidDelay10us(ucharMs)
{
uchardatai;
大家好,今天小编关注到一个比较有意思的话题,就是关于单片机c语言 延时的问题,于是小编就整理了4个相关介绍单片机c语言 延时的解答,让我们一起看看吧。
delay函数是一个自己定义的延时函数,C语言定义延时函数主要通过无意义指令的执行来达到延时的目,并没有一个软件自带头文件专门有delay这个函数的。
voidDelay10us(ucharMs)
{
uchardatai;
for(;Ms》0;Ms--)
for(i=26;i》0;i--);
}
i=[(延时值-1.75)*12/Ms-15]/4
DelayMS(300)表示希望系统delay 300毫秒,系统有自己的RTC,根据硬件的晶振(Hz)可以计算出一次振荡大约多少耗时,这样就能大约算出1ms需要多少次振荡;
简单比喻一次振荡需要1us,那1ms就是1000次振荡,300ms就是300x1000次振荡,这样就能大概的计算出300ms delay;
这得看你的CPU运行一条指令得多久,像单片机89C51一般一条1us。
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行支持便能运行的编程语言;
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台;
只有汇编语言才能得到精确的时间。
C编译成汇编时,不同的编译器,不同的编译策略都会使最终的程序不一样。如果短时间的延时,可以利用_nop_()来控制,如果是长时间的可以用定时器中断来控制。你自己写函数的话,可以在KEIL调试模式下,单步运行,看左侧窗口中的second,那个是程序从复位到当前的运行秒数(可以看到微妙级的),用不同的参数调用delay,比较下,记住差值就可以了。别忘了把项目使用的晶振数填正确。单片机流水灯C语言程序(8个灯,依次点亮每个灯,延时500MS)源代码如下:
#include <reg51.h>
#define uchar unsigned char // 定义无符号的字符
#define uint unsigned int // 定义无符号的整数
void delay(uint); // 声明延时函数
void main(void)
{
到此,以上就是小编对于单片机c语言 延时的问题就介绍到这了,希望介绍关于单片机c语言 延时的4点解答对大家有用。