TL0=(65536-50000)%256; 這兩個是什么意思呢??為什么要是256,是固定的嗎???在知道里看到了答案,可是還是不大懂,
這是網(wǎng)上的:
標(biāo)準(zhǔn)答案:定時器0設(shè)置于模式1時,計數(shù)寄存器為16位模式,由高8位TH0和低8位TL0兩個8位寄存器組成,當(dāng)設(shè)定計算值為65536-50000=15536(D)時,轉(zhuǎn)換為十六進(jìn)制就是3CB0(H),此時,TH0=3C,TL0=B0分別裝入即可,為了免除這些計算步驟,很多編程者采用“TH0=(65536-50000)/256;TL0=(65536-50000)%256“的編程方式,去讓單片機(jī)自己去計算結(jié)果,那么為什么要介入256呢?其實并不難理解,做一下10——16進(jìn)制的換算就知道了,256(D)=0100(H),這里01就是高8位的數(shù)據(jù),00就是低8位的數(shù)據(jù),通俗點說,15536(D)里有多少個256,就相當(dāng)于高8位有多少數(shù)值,就是除的關(guān)系了,商存入高8位寄存器后余下的數(shù)存入低8位即可,取商計算就是TH0=(65536-50000)/256;而取余計算就是TL0=(65536-50000)%256 。
答案:定時器工作于模式一時,計數(shù)器是16位的,16位的二進(jìn)制可以表示0~2^16(65535),計數(shù)器時向上計數(shù)的,一個一個數(shù)的加,首先要設(shè)置它的計數(shù)初值(不設(shè)置默認(rèn)為0),如果要它每數(shù)50000次溢出一次產(chǎn)生中斷,那么初值就是2^16-50000+1=15536,現(xiàn)在將15536這個初值裝到TH0和TL0中就行了,但是由于51是8位單片機(jī),每次只能處理8位數(shù)據(jù),所以就要將15536分成高8位和低8位分別給TH0和TL0,15536/256就是將高八位取出,15536%256就是將低八位取出,類似于十進(jìn)制中25/10=2.。..。.5,將十位2和個位5取出一樣。說白了就是數(shù)制的轉(zhuǎn)換。
-
單片機(jī)
+關(guān)注
關(guān)注
6067文章
44961瀏覽量
648887 -
計數(shù)器
+關(guān)注
關(guān)注
32文章
2290瀏覽量
96235 -
定時器
+關(guān)注
關(guān)注
23文章
3297瀏覽量
117604
發(fā)布評論請先 登錄
求助一下關(guān)于51系列單片機(jī)的Timer0的計時問題,TH0、TL0+1的時間是怎么算的?
單片機(jī)Debug工具性能對比 單片機(jī)調(diào)試常用命令
單片機(jī)編程語言有哪些選擇
單片機(jī)怎么寫入程序
單片機(jī)的中斷機(jī)制
keil可以讀出單片機(jī)的程序嗎
單片機(jī)燒錄程序用什么軟件
單片機(jī)燒錄程序可以重新燒嗎
單片機(jī)燒錄程序的線比單片機(jī)上的少還能燒錄嗎
單片機(jī)燒錄程序的基本步驟是什么
stm32單片機(jī)燒錄程序會擦除原來的程序嗎
單片機(jī)boot0和boot1怎么設(shè)置
藍(lán)牙模塊如何實現(xiàn)單片機(jī)和手機(jī)端數(shù)據(jù)互傳

評論