/****************************************************************************
名 称: DelayMS()
功 能: 毫秒延时,系统时钟不配置时默认使用内部16M
入口参数: msec 延时参数,注意,最大数值为65536ms
出口参数: 无
****************************************************************************/
void DelayMS(uint16 msec)
{
uint16 i,j;
for (i=0; i<msec; i++)
for (j=0; j<536; j++);
}
CC2541是增强型8051单片机,使用内部16MHz时,指令周期=时钟周期=1/16us。
1. for (j=0; j<536; j++);
是执行536个指令周期,总计536*1/16=33.5us。为什么该函数实际延时了1ms呢?