答应大家得福利来啦,这一期我就给大家分享一下STC系列51单片机得延时程序汇总。
11.0592MHz晶振(延时1ms):
(1)Y1指令集
适用于SCT89C系列,STC90C系列、STC89LE系列、STC90LE系列
void Delay1ms() //11.0592MHz
{
unsigned char i, j;
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
(2)Y3指令集
适用于STC12C系列、STC12LE系列、STC11F系列、STC11L系列、STC10F系列、STC10L系列、STC15F104E、STC15L104E、STC15F104EA、STC15L104EA
void Delay1ms() //11.0592MHz
{
unsigned char i, j;
_nop_();
i = 11;
j = 190;
do
{
while (--j);
} while (--i);
}
(3)Y5指令集
STC15F系列、STC15L系列、STC15W系列,但是不包Y3中的
void Delay1ms() //11.0592MHz
{
unsigned char i, j;
_nop_();
_nop_();
_nop_();
i = 11;
j = 190;
do
{
while (--j);
} while (--i);
}
(4)Y6指令集合
适用于STC8F系列、STC8A系列
void Delay1ms() //11.0592MHz
{
unsigned char i, j;
i = 15;
j = 90;
do
{
while (--j);
} while (--i);
}
11.0592MHz晶振(延时1us):
(1)Y1指令集
适用于SCT89C系列,STC90C系列、STC89LE系列、STC90LE系列
这个没有得哦
(2)Y3指令集
适用于STC12C系列、STC12LE系列、STC11F系列、STC11L系列、STC10F系列、STC10L系列、STC15F104E、STC15L104E、STC15F104EA、STC15L104EA
void Delay1us() //@11.0592MHz
{
_nop_();
}
(3)Y5指令集
STC15F系列、STC15L系列、STC15W系列,但是不包Y3中的
void Delay1us() //@11.0592MHz
{
_nop_();
_nop_();
_nop_();
}
(4)Y6指令集
适用于STC8F系列、STC8A系列
void Delay1us() //@11.0592MHz
{
unsigned char i;
_nop_();
_nop_();
i = 1;
while (--i);
}
然后就是答应大家得12MHz晶振得延时程序
12MHz晶振(延时1ms):
(1)Y1指令集
适用于SCT89C系列,STC90C系列、STC89LE系列、STC90LE系列
void Delay1ms() //@12.000MHz
{
unsigned char i, j;
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
(2)Y3指令集
适用于STC12C系列、STC12LE系列、STC11F系列、STC11L系列、STC10F系列、STC10L系列、STC15F104E、STC15L104E、STC15F104EA、STC15L104EA
void Delay1ms() //@12.000MHz
{
unsigned char i, j;
_nop_();
_nop_();
i = 12;
j = 168;
do
{
while (--j);
} while (--i);
}
(3)Y5指令集
STC15F系列、STC15L系列、STC15W系列,但是不包Y3中的
void Delay1ms() //@12.000MHz
{
unsigned char i, j;
i = 12;
j = 169;
do
{
while (--j);
} while (--i);
}
(4)Y6指令集合
适用于STC8F系列、STC8A系列
void Delay1ms() //@12.000MHz
{
unsigned char i, j;
i = 16;
j = 147;
do
{
while (--j);
} while (--i);
}
12MHz晶振(延时1us):
(1)Y1指令集
适用于SCT89C系列,STC90C系列、STC89LE系列、STC90LE系列
_nop_();
直接一个空指令就可以了
(2)Y3指令集
适用于STC12C系列、STC12LE系列、STC11F系列、STC11L系列、STC10F系列、STC10L系列、STC15F104E、STC15L104E、STC15F104EA、STC15L104EA
void Delay1us() //@12.000MHz
{
_nop_();
_nop_();
}
(3)Y5指令集
STC15F系列、STC15L系列、STC15W系列,但是不包Y3中的
void Delay1us() //@12.000MHz
{
_nop_();
_nop_();
_nop_();
_nop_();
}
(4)Y6指令集
适用于STC8F系列、STC8A系列
void Delay1us() //@12.000MHz
{
unsigned char i;
i = 2;
while (--i);
}