哪个大神可以帮我看下这个单片机测量频率的程序哪里出了问题吗? #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; //开总中断 } }
|