xxkj2010
发表于 2024-8-27 08:33:52
TMOD是不是得先赋个值,然后才可以TMOD |=0x?? 或TMOD &=0x??
乘风飞扬
发表于 2024-8-27 09:12:21
12系列没有16位自动重载模式,只有前面4种模式:
Yim_Hom
发表于 2024-8-27 10:32:29
因为没用过这款单片机,真的是为了回答这个问题,我又专门把你用的STC12这款单片机的手册下下来看了下。
从手册上看,是支持16位,但不是自动重载
范例程序里的内容,在中断服务函数里,也是手动重载。
那么,到这里,如果使用小工具生成的,不就可以说明问题了吗
Yim_Hom
发表于 2024-8-27 10:40:50
xxkj2010 发表于 2024-8-27 08:29
你的芯片型号是STC12C5616AD吗?
今天没看手册之前,昨天我以为你这个单片机是支持16位自动重载,那么如果支持16位自动重载,用哪一款测试都可以,看完手册搞半天都不支持16位自动,那选项就有问题。
Yim_Hom
发表于 2024-8-27 10:45:53
xxkj2010 发表于 2024-8-27 08:31
我把TMOD &= 0xF0; 改成TMOD = 0x01;把AUXR &= 0x7F; 去掉,OK!
即初始化改为:
看你这一条,问题是出在TMOD &= 0xF0;但是关联的问题在于使用这一句的问题上。
而且即便你下面这么写现在是OK,
void Timer0_Init(void) //50毫秒@11.0592MHz
{
TMOD = 0x01;
TH0 = 0x4C;
TL0 = 0x00;
ET0 = 1;
TR0 = 1;
}
但只是因为默认了12T模式,所以AUXR不用写进去,侥幸对了。
如果12T/1T模式,必须配置以后定时器才能工作,你还是得配置AUXR。
angmall
发表于 2024-8-27 11:05:29
xxkj2010 发表于 2024-8-27 08:33
TMOD是不是得先赋个值,然后才可以TMOD |=0x?? 或TMOD &=0x??
又是一个不看手册的大神。{:5_297:}
xxkj2010
发表于 2024-8-27 13:05:22
型号太多,都以为这个定时器配置工具是通用的,原来即使要使用这个工具,也得先看手册,这样有点失去这个工具的普遍性
xxkj2010
发表于 2024-8-27 13:09:55
Yim_Hom 发表于 2024-8-27 10:40
今天没看手册之前,昨天我以为你这个单片机是支持16位自动重载,那么如果支持16位自动重载,用哪一款测试 ...
虽然不是自动重载,但我在中断程序中没有重新装载初始值,为什么会正常定时呢?
xxkj2010
发表于 2024-8-27 13:13:05
angmall 发表于 2024-8-27 11:05
又是一个不看手册的大神。
连配置定时器这么简单的事,还得先看手册,这工具还有就失去了它应有的普遍性了。这工具应该可以改进吧
Yim_Hom
发表于 2024-8-27 15:48:06
xxkj2010 发表于 2024-8-27 13:09
虽然不是自动重载,但我在中断程序中没有重新装载初始值,为什么会正常定时呢? ...
呵呵,使用定时功能,定时了不进中断,就失去了定时器的意义