menfiss 发表于 2014-5-19 10:25 
你的软件应该是开环的吧,不会受负载的影响。如果受影响了可能和硬件有关。 ...
我试了一下是加上计数之后程序给跑飞了 我写了一段程序 麻烦你给我看看
/*====================================================================*/
/*函数:unit read() */
/*描述:读取计数值 */
/*参数:无 */
/*返回:无 */
/*备注:无 */
/*====================================================================*/
unsigned int read()
{
unsigned char t1, th1, th2;
unsigned int val;
while(1)
{
th1 = TH0;
t1 = TL0;
th2 = TH0;
if(th1==th2)
break;
}
val=th1*256+t1;
return val;
}
这个是读出计数脉冲的次数
void t1(void) interrupt 3 using 0
{
TF1 = 0;
TH1 = 0x1C;
TL1 = 0x22;
timecount++;
if (timecount == 25) //0.5s计时
{
TR1 = 0; //关闭定时器1,为了读出计数器0计数个数
timecount = 0;
x = read();
write_count(11,x);
TH0 = 0; //计数器初值清零
TL0 = 0;
TR0 = 1; //重新启动计数器0
TR1 = 1;
}
}
这个是一个中断程序每隔0.5S读一次计数数据
我前面的程序还定义了一个PCA的中断
我用的是35M的晶振, 我用一个管脚发出来20KHZ的PWM,用P3.4再把他显示出来
就是不知道程序哪里出了问题
|