void Delay1ms(void) //@11.0592MHz
{
unsigned char data i, j;
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
用stc软件延时器生成1ms的延时函数在变量后面定义xms的函数 再用while(xms) x--循环嵌套进去
void Delay1ms(void) 变成void Delay1ms(unsigned int xms)
while(xms)
{
xms--
}
之后变成
void Delay1ms(unsigned int xms) //@11.0592MHz
{
unsigned char data i, j;
while(xms)
{
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
xms--;
}
}
之后直接调用
例如Delay1ms(100)延时100ms
如果要用我的源代码必须加入#include<INTRINS.H>头文件 因为包含_nop_
实例使用如下,该代码为独立按键控制Led灯状态使用了20ms延时来防止按键回弹效应
#include <REGX52.H>
#include<INTRINS.H>
void Delay1ms(unsigned int xms) //@11.0592MHz
{
while(xms)
{
unsigned char data i, j;
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
xms--;
}
}
int main()
{
while(1)
{
if(P3_1==0)
{
Delay1ms(20);
while(P3_1==0)
Delay1ms(20);
P2_0=~P2_0;
}
}
return 0;
}