重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
12MHz的晶振,一个机器周期是1uS.
创新互联成立于2013年,先为陕州等服务建站,陕州等地企业,进行企业商务咨询服务。为陕州企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
void Delay_ms(unsigned char i, unsigned char j) //@12.000MHz
{
unsigned char n = 0;
unsigned char m = 0;
for(n = 0; n i; n++)
for(m = 0; m j; m++);
}
然后调用:
Delay_ms(117, 184);//Delay 20 mS
117 × 184 = 21528, 约等于 20mS.
这样很不准确,实际计算指令周期的话,接近了40mS
下面这中方法能准确一些:
void Delay_ms(uchar count)
{
uchar i, j, k;
for(k = count; k 0; k--)
for(i=5; i0; i--)
for(j=98; j0; j--);
}
第一个函数延时时间短,就是判断一下是否为0,然后进行减法,第二个函数延时时间长,就要进行多次减法,因此用两个for循环。调用方法:
delay_ms(10);就是延时10ms
delay_ms(20);就是延时20ms
delay_10us(1),就是延时10us
1、delay函数是一般自己定义的一个延时函数。
2、C语言定义延时函数主要通过无意义指令的执行来达到延时的目的。下面给出一个经典的延时函数。
// 定义一个延时xms毫秒的延时函数
void delay(unsigned int xms) // xms代表需要延时的毫秒数
{
unsigned int x,y;
for(x=xms;x0;x--)
for(y=110;y0;y--);
}
延迟函数,一般建议调用系统函数。不建议循环。
特别是多任务操作系统,循环会消耗系统资源。
如果是Dos,indows,linux系统建立调用 Sleep()函数。
其他系统,请自行查找。
C语言的延迟函数一般是利用无意义程序运行来控制时间从而达到延时的目的
举个例子:
for(i=0;ix;i++)
for(j=0;j120;j++);
这是延时x毫秒的for循环语句。
值得注意的是记得最后的;一定得记得写。
这段代码因该是测试按键的吧,延时可能是为了防止按键抖动吧.或者是防止卡死的.
按键抖动的概念百科有: