薛之谦第一场演唱会:单片机里的时钟数啊什么概念 具体点!

来源:百度文库 编辑:高校问答 时间:2024/04/27 17:27:47
单片机为12MHZ 9600BPS 但是时钟数改为6时 我的初值改如何计算?
T1定时器方式2,8位自动重装,T0,16位定时器 请赐教了

计数器是按机器周期算的

一个机器周期=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

上述过程是在中断服务程序中的

如果你用定时器0的方式一,计算方法如下:

你要定的时间是X
(X小于65535us的,因为工作于方式一,定时器为16位,2的16次方减1=65535)

定的初值就应该是:

TH0设为(65535-X*12/fosc) 的高八位.
TL0设为(65535-X*12/fosc) 的低八位.

上式中fosc为你选择的晶振频率.