微机原理-Proteus微机原理学习讨论

命题-第13章-计算(1)

2017-06-09  本文已影响100人  0108_张蓉蓉

                                                              单片机计数初值的计算(一)

                                                                                                                                          0108-张蓉蓉

例题:定时器在方式1(16位)工作,软件启动,定时操作50ms,计数初值。

      解:  设最大计数值为 M,M=2*16 =65536

          50ms定时操作需要50000个机器周期,所以需要50000次计数操作

            时器初值=65536-50000=15536

        解析:

定时或计数方式下计数初值如何确定,定时器选择不同的工作方式,不同的操作模式其计数值均不相同。

若设最大计数值为 M ,各操作模式下的 M 值为:

      方式 0 (13位): M=2*13 =8192(假装2*13为2的13次方,下同)

      方式 1(16位) : M=2*16 =65536

      方式 2 (8位): M=2* 8 =256

    方式 3(8位) : M=256 ,定时器 T0 分成 2 个独立的 8 位计数器,所以 TH0 、 TL0 的 M 均为 256

        由于 MCS-51 的两个定时器均为加 1 计数器,当初到最大值( 00H 或 0000H )时产生溢出,将 TF 位置 1 ,可发出溢出中断,因此计数器初值 X 的计算式为: X=M- 计数值。式中的 M 由操作模式确定,不同的操作模式计数器的长不相同,故M值也不相同。而式中的计数值与定时器的工作方式有关。

          1 、定时工作方式时

        因为计数脉冲由内部供给,是对机器周期进行计数,故计数脉冲频率为 f cont =f osc(时钟频率) × 1/12 、计数周期 T=1/f cont =12/f osc ,1个机器周期=1us(不是ms哦),因此计数器初值 X 的计算式为: X=M- 计数值

      拓展:有时也会计算TH0、TL0的值

        如例题所示,需设置定时器初值15536=65536-50000,即3CB0H(10进制15536转换成16进制数3CB0),所以TH0=0x3c,TL0=0xb0,高位就是TH0的值,低位为TL0的值。

    所以,TH0=(M-所需计数次数)/256=初值/256;

              TL0=(M-所需技术次数)%256=初值%256

上一篇 下一篇

猜你喜欢

热点阅读