我送個程序你看看
定時器T0的模式2測量正脈沖寬度
#include<reg51.h> //包含51單片機寄存器定義的頭文件
sbit ui=P3^2; //將ui位定義為P3.2(INT0)引腳,探測輸入電壓
/*******************************************
函數功能:主函數
******************************************/
void main(void)
{
TMOD=0x0a; // TMOD=0000 1010B,使用定時器T0的模式2,GATE置1
EA=1; //開總中斷
ET0=0; //禁止定時器T0中斷
TH0=0; //計數器T0高8位賦初值
TL0=0; //計數器T0低8位賦初值
TR0=1; //啟動T0
while(1)
{
while(ui==0) ; //INT0為低電平,T0不啟動
TL0=0; //INT0為高電平, T0啟動, TL0清0做準備
while(ui==1) ; //在INT0高電平期間等待,計時結果送TH0\TL0
P1=TL0; //INT0一旦為低電平就將計時結果送P1口(或其他變量存儲),根據機器周期可以計
算出INT0上高電平存續的寬度,當然如果高電平時間太長,也可以算上TH1。
//While(1);
}
}
|