標(biāo)題:
c語言中除以256
[打印本頁]
作者:
xueren
時(shí)間:
2013-8-6 05:08
標(biāo)題:
c語言中除以256
如果你選的單片機(jī)的晶振一定,比如12MHZ來說吧,機(jī)器周期是1us,就是說每1us產(chǎn)生一次計(jì)數(shù),就拿50ms來說,這是你想要的計(jì)時(shí),意思是,對機(jī)器周期進(jìn)行50000計(jì)數(shù)就可以得到我想要的,可T0是一個(gè)可以對機(jī)器周期能進(jìn)行65536次計(jì)數(shù),也就是說我想要的50MS不能讓T0溢出,怎么辦,那么先給這個(gè)定時(shí)器里面放些數(shù),放多少,就是我們想要的50MS在加上一個(gè)多少就能等于65536,也就是65536和50000的差值,這個(gè)值就是我們說的初值。
為什么除以256,因?yàn)槲覀兊挠?jì)時(shí)器是兩個(gè)8位組成的,那么要把那些差值裝進(jìn)這兩個(gè)8位,那么低8位最多能裝256個(gè)機(jī)器周期,那么256計(jì)滿了就用高8位的,就是說低8位滿一次高8位加1,那么高8位裝多少,低8位就滿了幾次,算法就是用差值除一下256取其整數(shù),剩下的,就是還剩了小于256次數(shù)的就放在低8位,就是差值 的余數(shù)。
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
flag++;
if(flag==20)//當(dāng)定時(shí)到1秒時(shí)執(zhí)行花括號里面的語句
{ }
}
因?yàn)門H0為高八位,最低位是2的8次方,也就是256,TL0中的最小值為256,而TL0為低八位最高位時(shí)2的7次方,也就是128,TL0最多放下255.你想,如果我要放一個(gè)超過256的數(shù),肯定是超過先放高八位,把剩下的部分放在低八位中了,TH0=(65536-50000)/256就是把TL0中放不下的部分放在TH0中,再把剩下的部分放在TH0中。
作者:
xiao1074234390
時(shí)間:
2013-8-6 12:54
講的挺詳細(xì)的
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1