关于定时器的问题(51单片机)
大家好,我在这里想请教大家关于定时器的几个问题第一,如果我定时器0的中断源允许位就是ET0如果置零,我只打开TR0,那么定时器会工作吗?如果工作了,那是怎么工作?那当定时...
大家好,我在这里想请教大家关于定时器的几个问题
第一,如果我定时器0的中断源允许位就是ET0如果置零,我只打开TR0,那么定时器会工作吗?如果工作了,那是怎么工作?那当定时时间到了会怎么样呢? 因为我看过有的程序,他开启了定时器的工作模式为1,但他没有写中断函数,他只打开了TR0,没有打开ET0,所以我才有了这样的问题
第二,在《手把手教你学会单片机》的红外遥控章节中,老师说要让定时器0的定时值为18ms,于是他就高四位设定为0x40,这样是不是错了呢?我算了一下,好像不是这个值啊,18000us=(65536-x)*机器周期,
算出X后,再将X换成16位2进制,高八位存入TH0,低八位存入TL0,我这么算没错吧?
顺带一问啊,郭天祥老师说算初值的方法是用TH0=(65536-定时值)对256求模,低八位是对256求余,这两者的计算是一样的吗
还有一个问题就是对于TMOD这个寄存器控制的问题,比如我想定时器1工作在1模式下,那我直接写TMOD=0x10就好了啊,为什么我看有的程序写的是
TMOD | = 0x0f
TMOD &= 0x10;
有差别吗 展开
第一,如果我定时器0的中断源允许位就是ET0如果置零,我只打开TR0,那么定时器会工作吗?如果工作了,那是怎么工作?那当定时时间到了会怎么样呢? 因为我看过有的程序,他开启了定时器的工作模式为1,但他没有写中断函数,他只打开了TR0,没有打开ET0,所以我才有了这样的问题
第二,在《手把手教你学会单片机》的红外遥控章节中,老师说要让定时器0的定时值为18ms,于是他就高四位设定为0x40,这样是不是错了呢?我算了一下,好像不是这个值啊,18000us=(65536-x)*机器周期,
算出X后,再将X换成16位2进制,高八位存入TH0,低八位存入TL0,我这么算没错吧?
顺带一问啊,郭天祥老师说算初值的方法是用TH0=(65536-定时值)对256求模,低八位是对256求余,这两者的计算是一样的吗
还有一个问题就是对于TMOD这个寄存器控制的问题,比如我想定时器1工作在1模式下,那我直接写TMOD=0x10就好了啊,为什么我看有的程序写的是
TMOD | = 0x0f
TMOD &= 0x10;
有差别吗 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询