由于这三种定时器定时精度的不同,它们的刷新方式就不一样了,一个程序的扫描周期大约是几毫秒到几十毫秒,如果程序中使用了定时器进行计时,那么定时器的状态值就会不停的刷新,假设定时器在一个扫描周期内刷新的很多次,那么这个定时器计时的精确度就可以保证,如果只刷新了一次或几个周期才刷新一次,那第它计时的准确度就很差了,你看一下下面的文字就会明白了
1毫秒分辨率
1毫秒定时器记录自现用1毫秒定时器启用以来1毫秒定时器间隔的数目。执行定时器指令即开始计时;但是,1毫秒定时器每毫秒更新一次(定时器位及定时器当前值),不与扫描循环同步。换言之,在超过1毫秒的扫描过程中,定时器位和定时器当前值将多次更新。
定时器指令用于打开和复原定时器,如果是TONR定时器,则用于关闭定时器。
因为可在1毫秒内的任意时刻启动定时器,预设值必须设为比最小要求定时器间隔大一个时间间隔。例如,使用1毫秒定时器时,为了保证时间间隔至少为56毫秒,则预设时间值应设为57。
10毫秒分辨率
10毫秒定时器记录自现用10毫秒定时器启用以来10毫秒定时器间隔的数目。执行定时器指令即开始计时;但是,在每次扫描循环的开始更新10毫秒定时器,其方法是以当前值加上积累的10毫秒间隔的数目(自前一次扫描开始算起)(换言之,在整个扫描过程中,定时器当前值及定时器位保持不变)
因为可在10毫秒内的任意时刻开始定时器,预设值必须设为比最小要求定时器间隔大一个时间间隔。例如,使用10毫秒定时器时,为了保证时间间隔至少为140毫秒,则预设时间值应设为15。
100毫秒分辨率
100毫秒定时器记录自现用100毫秒定时器上一次更新以来100毫秒定时器间隔的数目。这种定时器的更新方法是在执行定时器指令时以当前值加上积累的100毫秒间隔的数目(自前一次扫描开始算起)。
只有在执行定时器指令时才对100毫秒定时器的当前值进行更新。因此,如果启用了100毫秒定时器但并未对各扫描循环执行定时器指令,则仍不能更新定时器当前值并将丧失时间。同样,如果在单个扫描循环内多次执行100毫秒定时器指令,将向定时器的当前值多次增加100毫秒间隔数,赢得时间。只有在每次扫描循环仅仅执行一次定时器指令时,才应该使用100毫秒定时器。