
比较常用的有两种
一种比较简单的就是粗略的软件延时;
如:
void delay_1s(void)
{
unsigned char i,j;
for(i=0;i<128;i++)
for(j=0;j<254;j++);
}
这种通过调整i和j的最终值来确定延时时间,没有办法精确计算的。
另一种,做比较精确的延时,使用89C51的定时器来做
当AT89C51使用12M的晶体时,机器周期刚好是1us用定时器非常好计算,非常精确,一月偏一秒都可以做到,加入偏查校正可以做到更精确。这个一般书上都会有的,查下书咯。这里说不清楚。一下子也不记得了,现在AT89C51已经停产了,代替他的是89S51 4K FLASH,建议用89S52 8K FLASH,
一般来说要是通过延时函数来得到一个精准的延时时间(比如你说的1us、2us)是让正常人无法忍受的工作量,你可以点击编辑环境中的放大镜图标,在左边会d出显示栏,sys下sec就是延时时间(要通过设置断点),你可以改变函数中变量值大概地调出需要的时间(希望你不要固执地去尝试调出你要的时间,因为这会让你享受到一天都不止的漫长调试“乐趣”中)。晶振频率不同自然在相同参数的情况下得出延时时间不同。另外如果你确实需要得到一个比较精准的延时时间,建议你采用定时/计数器,至于怎么用这玩意儿,很简单!不到十分钟就能学会的事儿!这里就不提供教程了,用你调试的时间去学它会让你更有成就感。写了那么多,希望能帮助点什么
以上就是关于在单片机AT89C51芯片中,设计一个一秒的延时程序,有多少种方法,具体如何全部的内容,包括:在单片机AT89C51芯片中,设计一个一秒的延时程序,有多少种方法,具体如何、24.5M晶振的单片机 延时函数怎么计算 和12M的有什么区别请帮忙写出1us、2us、、、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)