主频为11.0529的处理器,stc89c52单片机中如何配置定时器1的1s(TMOD|=0x10)
时间: 2024-10-27 15:11:27 浏览: 32
在STC89C52单片机中,如果要使用定时器1(Timer 1)作为1秒定时器,通常使用模式2(16位自动装载计数器模式),因为在这种模式下,定时器可以提供更长的时间范围。以下是配置步骤:
1. **设置定时器工作模式**:
- 首先,将TCON寄存器的TF1位清零(TF1=0),然后置位TMOD寄存器的GATE位(TMOD &= ~0x01)和模式位(TMOD |= 0x10)。这样就选择了定时器1的工作模式2。
```c
TCON &= ~(1 << TF1); // 清除TF1标志
TMOD |= 0x10; // 设置定时器1为模式2
```
2. **设定定时器预分频值**:
- 对于主频11.0529 MHz的单片机,要得到1秒定时,首先需要确定定时器的初值,这取决于系统时钟频率和期望的定时时间。对于1s,由于11.0529MHz的主频较高,一般会选择适当的减小计数值,比如选择溢出时间为65536(即16位计数满后溢出一次,相当于约119ms)。所以实际的计数值大约是119ms * 60 = 7140。你需要计算具体的计数值,并将其加载到TH1(高16位)和TL1(低16位)寄存器中。
3. **启动定时器**:
- 转换为模式2后,不需要手动开始定时,只需清除IE(中断允许控制寄存器)中的TF1位即可,它会自动从计数状态变为等待中断状态。
```c
IE &= ~(1 << TF1); // 启动定时器并禁止外部中断
```
此时,定时器1将以模式2运行,当计数值达到预设的值后,会产生一个定时器溢出中断,可以在这里处理1秒已过的逻辑。
阅读全文