12m晶振延时1ms(当晶振为6M时编写一个延时1ms的运行程序)
本文目录
当晶振为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
上述过程是在中断服务程序中的
上面的内容不知道对你有没有用~~(网上找的)
12mhz的51单片机中哪一种模式一次定时1ms
在12MHz的51单片机中,可以使用定时器/计数器来实现1ms的定时。常见的模式是使用定时器0的16位定时模式,将定时器的计数值设置为65536-12000,即每计数一次需要12个机器周期,因此总共需要65536个机器周期,即1ms。通过配置定时器的工作模式和中断使能,可以在每次定时器溢出时触发中断,从而实现1ms的定时功能。