12m晶振延时程序(编写一个延时10秒的程序单片机)
本文目录
当晶振为6M时编写一个延时1ms的运行程序
计数器是按机器周期算的
一个机器周期=12时钟周期
不管时钟多少,都按一个机器周期=12时钟周期计算//****关键****//
12MHZ时钟换过来就是1M机器周期(1M/S)
1ms就是1000机器周期;
6MHZ时钟换过来就是0.5M机器周期(0.5M/S)
1ms就是500机器周期
8位计数器最高范围是65536,
如果我们要记时1s,可以以10ms为单位,循环记时100次
现在就是初始化,10ms为例
TL0=-10000;//对T0计数初始化赋值,用12M的JT,10ms也就是机器周期计数10000
TH0=-10000>>8;
这就是初始化,一次溢出10ms
(若用6M的JT,10ms也就是机器周期计数5000)
当然这只是其中一部分,具体还有比如TR0(1)的设置
溢出中断允许等!
上面两句等价于
TL0=55536;//(65536-10000)
TH0=55536>>8;
相当于从55536开始数,
数10000次(10ms)后溢出,为一个记数周期
100次后就是1s
上述过程是在中断服务程序中的
上面的内容不知道对你有没有用~~(网上找的)
计算延时子程序的延时时间
计算延时子程序延时时间是1000000微秒
延时时间是一个机器周期,与晶振的关系是:osc/12/1000000微秒
比如12M晶振,=12*1000000/12/1000000=1us
单片机晶振时间计算公式
是:T=1/f,其中T表示一个周期的时间,f表示晶振的频率。晶振是单片机中用来产生时钟信号的元件,它的频率决定了单片机的工作速度。晶振的频率越高,单片机的工作速度就越快。在单片机中,晶振的频率可以通过外部晶振的选择来确定。常见的晶振频率有4MHz、8MHz等。在进行单片机程序设计时,需要根据晶振的频率来计算出每个周期的时间,以便进行时间相关的操作和延时控制。
求解释单片机晶振和延时函数间数值关系
单片机的晶振是最原始的频率发生器,一个单片机的晶振频率是这个单片机系统里的最大频率,他的工作频率输出频率都是以这个晶振频率为基准的,。
通过倍频器、分频器分成不同的频率使用。
至于你说的延时函数的话,这个要查他执行一个指令的指令周期是多少,延时函数最好用汇编编程,然后看他执行几个指令周期,这样就能精确地做延时函数了。
单片机51软件延时1s晶振6M的编程
通过调用这个子程序就可以实现DEL1S:MOVR1,#10DEL1:MOVR2,#100DEL2:MOVR3,#250DEL3:DJNZR3,DEL3;2*2*250*100*10=1000000usDJNZR2,DEL2DJNZR1,DEL1RET没有做具体计算,要准确的定时1s的话可以稍微改动一下R1R2R3的值。6M晶振则机器周期为2us,一条指令执行为2个机器周期,由此得出其延时时间最好的方式是使用定时器中断来做延时,更精确
编写一个延时10秒的程序单片机
如果是精确的话,需要用定时器,不是太精确的话,软件延时就可以。
假如12M晶振
voiddelay10s()
{
inti,j;
for(i=0;i
for(j=0;j
}
voiddelay10s()
{
unsignedchari;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
i=200;
while(i--)
{
while(TF0==0);
TF0=0;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
}