51单片机的3个定时器
发布网友
发布时间:2022-09-08 21:19
我来回答
共5个回答
热心网友
时间:2023-07-10 20:20
我感觉和你采用的static型变量有关,尤其是针对“想要是考虑优先级的话,也应该是T0,T1正常,T2不正常。”,很有可能。
建议你打开编译后的工程文件的.M51文件,查看一下你的两个静态变量分配的RAM地址是否有重叠,是否和其它变量分配的地址有重叠。看一下就能理解。举例:.M51中的这一段:
。。。。
SYMBOL TABLE OF MODULE: TEMP (MAIN1)
VALUE TYPE NAME
----------------------------------
------- MODULE MAIN1 //源程序模块MAIN1.C
D:0090H PUBLIC P1 //D:dtat,地址90H
D:0009H PUBLIC iCount //D:data全局变量iCount ,起始地址09H
D:0006H SYMBOL i //D:data局部变量i,起始地址
B:00A8H.7 PUBLIC EA //B:bdata,地址A8.H
。。。。。。。。。。
如果是这样请反馈,我也想确认一下。
热心网友
时间:2023-07-10 20:20
你只用一个定时器就够了,所有需要计时的事件都参照这一个定时器触发。
热心网友
时间:2023-07-10 20:21
高人速速现身,我也想知道答案!
热心网友
时间:2023-07-10 20:21
51单片机只有T0,T1。52才有T2的。
定时器设置方法
做定时用一般采用16位模式,也就是TMOD=0x11(10或01单独一个定时器的话),初值的计算是这样的:
假设时间是X毫秒,晶振为YMhz,那么:
THn=(65536-1000*X*Y/12)/256
TLn=(65536-1000*X*Y/12)%256
之后就是TRn=1(开启定时器)
ETn=1(开启定时器中断
EA=1
资料来源:吴鉴鹰吧
热心网友
时间:2023-07-10 20:22
51单片机只有T0,T1。52才有T2的,你把你程序发出来我才可以找问题呀