在单片机AT89C51芯片中,设计一个一秒的延时程序,有多少种方法,具体如何?
1个回答
2013-11-11
展开全部
比较常用的有两种
一种比较简单的就是粗略的软件延时;
如:
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,
一种比较简单的就是粗略的软件延时;
如:
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,
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询