STC 1T单片机延时函数求解
做STC12的1T单片机 想找个1MS和1US的延时函数 会写的朋友帮个忙?晶振用的是22.1184M的 到网上下一个单片机小精灵,很好用,很多功能。 回复【1楼】getter88
-----------------------------------------------------------------------
那个延时 太麻烦了 延时好了 不能变动 用示波器测 定时器.. 用汇编写延时函数。。。带参数的那种,比较灵活点
相差十多个T的样子 示波器卡一下时间,要多少就修正多少。。。。 void delay_ms(unsigned int n) //22.1184MHz,1T
{
unsigned char a,b,c;
while (n != 0)
{
for (c=2;c>0;c--)
for (b=22;b>0;b--)
for (a=124;a>0;a--);
n--;
}
}
我这个就是有点不准。。。。参数1时就是delay_ms(1);实际是1.000886毫秒
参数5时delay_ms(5);实际是5.000271毫秒
参数10时delay_ms(10);实际是9.999503毫秒
参数100时delay_ms(100);实际是99.985668毫秒 不论是1us,还是1ms,我都是只信示波器,从来没有在讨论这个上下过功夫!多则减,少则加,
因为到最后你算好后,你还得用示波器它! 大伙都在哪种场合里用呀?
要100%准么?
晶振如果不刚好,就是算也不能可100%准呢? mark 在这问的时候,用示波器早调好了
这是我常用的STC 12T下 11.0592M,,示波器看过
void Delay_ms(unsigned int n)
{
unsigned int i;
while(n--)
{
i = 600;//i=300,实测500us,i=600实测1ms
while(i--);
}
}
/*******************************************************************************
* 名称:Delay(uint temp)
* 功能:us 级短暂延时
* 说明:实测1.25us
*******************************************************************************/
void Delay(uint temp)
{
uchar i;
for(i=temp;i>0;i--) NOP();
} STC的不能防真吗? 做个记号! 如果你没有示波器就用proteus里的示波器,即省事又便宜。嘿嘿 【14楼】 adcr 老稻
如果你没有示波器就用proteus里的示波器,即省事又便宜。嘿嘿
---------------------------------------
应该不行,指令周期不一样,虽说指令系统兼容 可以采用软件进行模拟 就用keil进行仿真时间,得出来的结果在处以8.7(因为据专家说,STC1T比12T的平均速度快8.7呗) , 基本上就是STC 1T单片机的延时时间了,我一般都这么用,也没有什么问题。 这个要求本身不合理,改设计最好 回复【3楼】snail0204 瓜牛
用示波器测
-----------------------------------------------------------------------
STC 的部分指令快~~~ 3~8倍没示波器看 会行脱裤 收藏 回复【19楼】jrcsh 邪恶的小会会
回复【3楼】snail0204 瓜牛
用示波器测
-----------------------------------------------------------------------
stc 的部分指令快~~~ 3~8倍没示波器看 会行脱裤
-----------------------------------------------------------------------
如果老妖同志的手册正确的话,用汇编还是可以计算的。。。 不错,这个收藏下 谢谢分享,顶一下 建议用定时器,准确而且移植也很方便!
页:
[1]