# 定时器模块
![寄，到点啦](item:tis3d:timer_module)

定时器模块使用高精度的石英钟来提供持续而可靠的延时操作。其硬件运行在20Hz的时钟源上，一个定时器步长刚好对应50ms。定时器的配置以此时钟周期为基础。

定时器模块持续从其所有四个端口读取数值。当读取到一个值以后，内部定时器状态会被设定为该值，并且每个时钟周期都会减一，直到为零。减少到零时，定时器模块会持续向所有四个端口写出一个固定的，特定于实现的值。

定时器模块只有在定时器达到设定时间以后才会向它的端口写出值，因此设定定时器并读取之，可以实现延时一段特定时长。因为TIS-3D计算机I/O的阻塞特性，在定 时器达到设定时间之前程序会停止执行。

通过让[执行模块](execution_module.md) 使用虚拟的`ANY`端口读取定时器，可以实现中断功能，这种情况下也允许并行的程序通过将值推送到该[执行模块](execution_module.md)来结束读取。

## 时间转换表
为简单起见，我们提供了一个将常用的时长转化为定时器需要设定的值的查找表。

0.5s：10
1s：20
5s：100
10s：200
1min：1200
15min：18000
0.5h：36000

定时器最大设定值受限于TIS-3D计算机端口的带宽， 也就是16位。因此，最大时间设定值为0xFFFF，效果为等待54分钟36秒750毫秒。
