那么為什么這樣算呢?之前已經(jīng)說過定時器0工作在方式1時是16位的計數(shù)器,其中TH0是高8位,TL0是低8位,單片機復位時TL0和TH0初值如下圖所示,每一位的值都是二進制(要么是0要么是1),當TL0計滿之后向TH0進位,TH0計滿后再加1就申請定時器中斷。
TL0計滿一次時8位值都是1,也就是255(2的8次方減1),再來一個加1時TL0全部清零向TH0進位,也就是說此時TL0中的值是0000 0000,而TH0中的值是0000 0001,這個時候是計數(shù)256次;同樣的等到TL0第二次計滿時8位值都是1,再來一個加1時TL0全部清零向TH0進位,也就是說此時TL0中的值是0000 0000,而TH0中的值是0000 0010,這個時候是計數(shù)2*256次,依次類推,當計滿256*256次時溢出。大家看出規(guī)律了嗎?
假設(shè)TL0中的初值是十進制L,TH0中的初值是十進制H,那么經(jīng)過(256-L)次計數(shù)后TH0中的值加1變成H+1,TL0中的值變成0;再經(jīng)過256次計數(shù)后TH0中的值變成H+2,TL0中的值變成0。依次類推,當TH0加了(256-H)次1時發(fā)生溢出,定時器請求中斷。