• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

单片机定时器0的高位和地位关系以及怎么赋值,请大咖帮忙解答,

4d95a4674d715979 2020-08-03 浏览量:2770
我在网上看到的程序给单片机定时器T0打开和给定时器高位和低位赋值:
TMOD=0X01;
EA=1;
ETO=1;
TH0=0Xfc;
TL0=0X18;
TRO=1;

程序中备注TH0=0xfc;TL0=0x18;中的0xfc和0x18是表示给
定时器0的赋值1ms的,师傅在讲课时说th0=(65536-50000)/256
tl0=(65536-50000)/%256然后通过判断执行20次等于1ms,怎么不一样,
这个是怎么得出来的,还有定时器高位和低位之间是什么关系?
搞不清!
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 你网上找的和你师傅给的肯定不是一个时间,不然两者计算的值是一样的。

    你网上找的是定时器溢出一次是1ms,你师傅给的是定时器溢出一次是50ma,两者是不一样的。

    本质上,计数器变化一次是1us的时间,你要想定义溢出一次是1ms,那么需要变化1000个值,16位定时器的溢出值是65536,要想变化1000个值,那么就要从65536-1000变化到65536。这个值是65535-1000=6453664536你用计算器十进制转换为16进制(用电脑自带的计算器算)就是FC18,FC是高位,18是地位,那么TH0=0xFC,TL0=0x18;这是直接赋值的算法。你网上查到的就是这样的赋值。

    如果要用到实时计算,以你师傅讲的为例,计数器变化一次是1us的时间,想要定时50ms溢出,那么需要变化50000个值,那就是要从65536-50000开始变化到65536,这个值就是65536-50000,那么如何把他变为16进制数放到高低两个字节中呢,很简单,高字节对256取商,低字节对256取余即可。放到代码中就是TH0=(65536-50000)/256;TL0=(65536-50000)%256;

    需要注意的是,计数器变化一次是1us的时间,这个是以定时器的主频为1Mhz来算的,如果主频变了,这个值也需要跟着变化。

    • 发布于 2020-08-03
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:5
  • 程序里的fc18换算成十进制就是64536,用65536减就是1000us,20次1ms就是20ms
    • 发布于2020-08-03
    • 举报
    • 评论 0
    • 0
    • 0

  • 高位与低位都是8位的,两个组成一个16位的数高低位进行计数累计用的
    • 发布于2020-08-03
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个可以参考单片机定时器的工作模式1,16位计数器(高8位,低8位)你师傅给的是“已知定时时间1ms(Y=1000),那么定时器0的寄存器的TH0和TL0应该分别赋值为多少”?师傅给的是灵活应用进制间的关系,TH0=(65536-Y)/256TL0=(65536-Y)%256其中Y位所需的定时时间(单位us)这​个还可以这样考虑,且单片机的晶振频率为12MHz其机器周期为12*1/12MHz=1us(工作频率为晶振频率的12分频),这样定时周期为50us(65536-x)*1us=1ms求得X即为16位计数器的初值(TH0+TL0)十进制x=64536化成16进制即为0xfc18这是根据你的代码来算的,另:你的文字描述应该有问题,根据你的算式推导应该是50ms(Y=50000)产生一次中断,这样计数20次中断就是1s而不是1ms...
    • 发布于2020-08-04
    • 举报
    • 评论 0
    • 0
    • 0

  • Th0=15536/256就是把5536的高八位赋值给Th0,Tl0=15536%256。从15536到65536一共记了50000次,每次的时间就是主时钟的周期,也就是1/f=10^-9秒,50000次就是50μs,执行20次就是1ms。

    • 发布于2020-08-04
    • 举报
    • 评论 0
    • 0
    • 0

  • 51单片机本身是8位的,也只能进行8位运算,但是为了能进行16位的计算,就将2个8位寄存器组合起来形成一个16位,其中一个8位寄存器用来计算低位,另一个用来计算高位。
    • 发布于2020-08-04
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

单片机定时器0的高位和地位关系以及怎么赋值,请大咖帮忙解答,