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
虽然不是自动重载,但我在中断程序中没有重新装载初始值,为什么会正常定时呢? ...

呵呵,使用定时功能,定时了不进中断,就失去了定时器的意义
页: 1 [2] 3 4
查看完整版本: 用ISP中的定时器设置工具,设置50ms,实际差不多10ms | 已解决