延时是利用指令在电脑中执行需要时间,形成停滞来形成达到延时的效果的。
这是一种,这是我在stc-isp下载的延时函数,缺点是不能自己定义时间,是固定的,这个看看就好了,不会真有人背吧
void Delay500ms() //这是我在stc-isp下载的延时函数 ,在我主页会有讲解
{
unsigned char i, j, k;
_nop_();
i = 4;
j = 205;
k = 187;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
typedef unsigned int u16;
然后,我们来改进一下,这个就可以自己定义时间。
以上两种比较准确,但是多多少少有点长。
所以,还有一个乞丐版的
void Delay1ms(unsigned int xms) //@12.000MHz
{
unsigned char i, j;
while(xms)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms--;
}
}
这个就是乞丐版的,比较短,但是不准确。平常对延时要求不精确的可以用,毕竟都这么短了,还要啥自行车。
typedef unsigned int u16; //对数据类型进行声明定义,
typedef unsigned char u8;//char类型是8位,一个字节,整数取值范围小
sbit led=P2^0; //将单片机的P0.0端口定义为led
/*******************************************************************************
* 函 数 名 : delay
* 函数功能 : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void delay(u16 i)//i为变量,可以调节时间,u16是因为 int 整型可储存的数值更大
{
while(i--);
}
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/