void Timer4_ISR (void) interrupt 16 { unsigned int i,jtemp; unsigned char itemp; read = 1; write = 1; for(i=0;i<10;i++); write = 0; P2 = 0x02;// 写DB0-DB3,选择AD7865通道二 for(i=0;i<10;i++); write = 1; convst= 0; for(i=0;i<10;i++); convst= 1; //convst上升沿启动AD7865 for(i=0;i<10;i++); while(busy); //等待转换结束 read = 1; for(i=0;i<10;i++); read = 0; ad_data=P1; //DB8-DB13数据 jtemp = (ad_data<<8); itemp = P2; //DB0-DB7数据 ad_data= jtemp+itemp; ad_data&= 0x3fff; read = 1; T4CON &= 0x7f; //请T4中断标志位 }
这是我自己写的中断服务程序,用来启动AD7865采样和读取采样数据的。 不知道什么原因,AD7865始终不工作。 硬件上已经检查过了 ,电源和地都正常。就是参考电压引脚不是很确定,我用的是外部参考电压2.5V,但是我只接了一个0.1UF的电容,不知道有没有问题。
|