本帖最后由 韦贵山 于 2013-12-2 13:08 编辑
#include<reg52.h>
#include<intrins.h>
void delay1ms(unsigned int i)
{
unsigned char j;
while(i--)
{
for(j=0;j<115;j++) //1ms基准延时程序
{
;
}
}
}
void main()
{
P0=0xfe;
P1=0x7f; // 0111 1111
while(1){
P0=_crol_(P0,1);
P1=_cror_(P1,1);
delay1ms(500);
}
}
我用的开发板是锐志2.0的,我想问的就是延迟函数,AT89S52晶振是12M,时钟周期就是1/12M(us),机器周期就是12X(1/12M)=1us,指令周期4X1us=4us,延迟函数for循环115次,时间加起来也就是115X4=460us,但是教程说是1ms,求解!
虽然这种延迟方式没有释放CPU,但是我还是想知道是460us,还是1ms,求解,谢谢啦!
|