展开全部
计时1小时差小于1秒,也就是误差要求小于1/3600普通的晶振很难有这个精度,使用外部时钟比较有把据。你要的是软件就给你一个吧,能不能达到精度要求就看单片机的时钟部分,跟软件没有关系。
/*****************************************/
/*广州一丁自动化设备有限公司020-28969088 */
/*****************************************/
#include <reg52.h>
sbit led=P1^0;// led灯
unsigned int num=0;
unsigned int num1=0;
void time0() interrupt 1
{
TH0=(65536-50000)/256; //12M/6=2M,50000/2M=0.025秒(6M把50000改为25000)
TL0=(65536-50000)%256;
num++;//0.025秒加1
}
void main()
{
TMOD=0x01;//定时器0工作于方式1
TH0=(65536-50000)/256;//赋初值
TL0=(65536-50000)%256;
EA=1;//开总中断
ET0=1;//开定时器0
TR0=1;//运行定时器0
while(1)
{
if(num==40)//40个0.025秒等于1秒
{
num=0;
num1++;
if(num1==3600)//24M改7200
{
num1=0;
led=~led;//P1.0LED灯亮1小时灭1小时
}
}
}
/*****************************************/
/*广州一丁自动化设备有限公司020-28969088 */
/*****************************************/
#include <reg52.h>
sbit led=P1^0;// led灯
unsigned int num=0;
unsigned int num1=0;
void time0() interrupt 1
{
TH0=(65536-50000)/256; //12M/6=2M,50000/2M=0.025秒(6M把50000改为25000)
TL0=(65536-50000)%256;
num++;//0.025秒加1
}
void main()
{
TMOD=0x01;//定时器0工作于方式1
TH0=(65536-50000)/256;//赋初值
TL0=(65536-50000)%256;
EA=1;//开总中断
ET0=1;//开定时器0
TR0=1;//运行定时器0
while(1)
{
if(num==40)//40个0.025秒等于1秒
{
num=0;
num1++;
if(num1==3600)//24M改7200
{
num1=0;
led=~led;//P1.0LED灯亮1小时灭1小时
}
}
}
展开全部
你用C语言来编制有精度要求的延时子程序,这太不现实了。不过可以用定时器来做。
void delay1s()
{
int i;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)*256;
TR0=1;
for(i=0;i<20;i++)
{
TH0=(65536-50000)/256;
TL0=(65536-50000)*256;
while(TF0==0);
TF0=0;
}
}
void delay1s()
{
int i;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)*256;
TR0=1;
for(i=0;i<20;i++)
{
TH0=(65536-50000)/256;
TL0=(65536-50000)*256;
while(TF0==0);
TF0=0;
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先定一个2ms基准时钟,然后设定相应的寄存机计数;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
11.0592的晶振,很熟悉,51系列单片机经常用,建议多看下书,我说下大致的原理,fosc=11.0592m,一条指令的时间是多少?可能有分频,可以设置,具体的单片机不一样,反正你要得到执行一条指令的时间,比如是1us,那么1usx1000=1ms,例如:
for(i=0;i<998,i++)
{
nop;
}
for(i=0;i<998,i++)
{
nop;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用定时器来定时,就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询