哪個大神可以幫我看下這個單片機測量頻率的程序哪里出了問題嗎? #include"at89x51.h" #define uint unsigned int uint count, f; bit rflag = 0; //設置周期標志 void control(void) { TMOD = 0x01; //gate=0,方式1是16位定時計數器,INT0 為1是啟動定時器 IT0 = 1; //脈沖方式(后沿負跳有效)進入中斷 TH0 = 0;TL0 = 0;設置初值 P3_2 = 0 //觸發器清零 TR0 = 1; //TR0 = 1,才允許T0計數 EX0 = 1; //只開外部中斷0 EA = 1; //開總中斷 } } void INT_0(void) interrupt 0 using 1 //INTO中斷服務 { EA = 0; TR0 = 0;//禁止T0計數 count = TL0 + TH0 * 256;//取計數值 rflag = 1; //設標志 } main() { While(1){ f=1/count; if(rflag){ rflag = 0 TH0 = 0;TL0 = 0;設置初值 TR0 = 1; //TR0 = 1,才允許T0計數 EX0 = 1; //只開外部中斷0 EA = 1; //開總中斷 } }
|