色偷偷偷久久伊人大杳蕉,色爽交视频免费观看,欧美扒开腿做爽爽爽a片,欧美孕交alscan巨交xxx,日日碰狠狠躁久久躁蜜桃
電子工程網(wǎng)
標(biāo)題:
讀取TH0,TL0的值的問題
[打印本頁(yè)]
作者:
風(fēng)溪香士
時(shí)間:
2012-8-31 11:45
標(biāo)題:
讀取TH0,TL0的值的問題
我寫的一個(gè)程序,需要讀取TH0,TL0的值,用time=256*TH0+TL0;可正確讀取,而用time|=TH0; time<<=8; time|=TL0;卻不能。具體情況如下。
外部中斷0和定時(shí)器0初始化:
P3=0;
TMOD=0x09;
TH0=0;
TL0=0;
IT0=1;
EA=1;
EX0=1;
TR0=1;
外部中斷0服務(wù)函數(shù):
void int0() interrupt 0
{
// time|=TH0;
// time<<=8;
// time|=TL0;
time=256*TH0+TL0;
// time_l=TL0;
// time_h=TH0;
// time|=time_h;
// time<<=8;
// time|=time_l;
TH0=0;
TL0=0;
}
我是測(cè)試HC-SR04超聲波模塊,它的輸出腳接在P32,會(huì)輸出一個(gè)脈沖,我就是要計(jì)算這脈沖的高電平時(shí)間。
設(shè)定了定時(shí)器0的GATE位為1,當(dāng)P32的高電平開始時(shí),TH0,TL0開始計(jì)數(shù),當(dāng)高電平結(jié)束時(shí),產(chǎn)生負(fù)跳變,進(jìn)入中斷服務(wù)函數(shù),計(jì)算時(shí)間。
以上就是程序的思路。
問題在于,如果用time=256*TH0+TL0;計(jì)算時(shí)間,得到的值符合實(shí)際,time的值為幾百;而如果用此語(yǔ)句的上面三句,或者下面五句(見上面中斷服務(wù)函數(shù))來計(jì)算時(shí)間,得到的值不符合實(shí)際,time的值為幾萬。
請(qǐng)各位前輩指點(diǎn)一下,為何會(huì)這樣?
作者:
123654789
時(shí)間:
2012-9-4 12:17
用time=256*TH0+TL0;可正確讀取,而用time|=TH0; time<<=8; time|=TL0;卻不能。具體情況如下。
純粹是C語(yǔ)言的問題
因?yàn)閠ime在使用之前不為0
那么你執(zhí)行time|=TH0;語(yǔ)句就不能覆蓋原來的數(shù)值
假如 time在使用之前是等于0x3
TH0=0X50;
你執(zhí)行time|=TH0;
那么time就等于0x53
但是你實(shí)際上是想要time=0x50
那么你就把time原來的數(shù)值攜帶了進(jìn)來
歡迎光臨 電子工程網(wǎng) (http://m.54549.cn/)
Powered by Discuz! X3.4