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