51单片机如何初始化16位定时器,TMOD如何设置
时间: 2024-01-10 21:01:57 浏览: 59
在8051系列单片机中,16位定时器/计数器通常指的是定时器/计数器1。要初始化定时器/计数器1,需要进行以下几个步骤:
1. 设置定时器/计数器1的工作模式,使用TMOD寄存器的高4位(即TMOD.4-TMOD.7)来设置。如果需要使用16位定时器/计数器,则需要将TMOD的高4位设置为“0x10”,表示使用模式2,其中计数器/定时器1被设置为16位自动重载模式。
2. 设置定时器/计数器1的重载值,使用TH1和TL1寄存器分别设置定时器/计数器1的高8位和低8位重载值。
3. 启动定时器/计数器1,使用TR1寄存器的位控制定时器/计数器1的启动和停止。将TR1的值设置为1即可启动定时器/计数器1。
4. 定时器/计数器1中断的使能和优先级设置,使用IE寄存器的位来设置。如果需要开启定时器/计数器1中断,则将IE的EA位和ET1位都设置为1。如果需要设置定时器/计数器1中断的优先级,则可以使用IP寄存器的位来设置。
下面是一个示例代码,展示了如何初始化定时器/计数器1,并以1ms的时间间隔产生中断。
```
void Init_Timer1(void)
{
TMOD |= 0x10; // 设置定时器1为16位自动重载模式
TH1 = 0xFC; // 设置重载值为0xFC67,产生1ms的时间间隔
TL1 = 0x67;
TR1 = 1; // 启动定时器1
ET1 = 1; // 开启定时器1中断
EA = 1; // 开启总中断
}
```
其中,TMOD |= 0x10; 语句将TMOD寄存器的高4位设置为“0x10”,从而将定时器1设置为16位自动重载模式。TH1和TL1分别设置了定时器1的高8位和低8位重载值,产生1ms的时间间隔。TR1 = 1; 启动了定时器1。ET1 = 1; 开启了定时器1中断。EA = 1; 开启总中断。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)