|
#include
#include
#define ad_run XBYTE[0x7fff]
#define ad_read XBYTE[0xbfff]
#define uchar unsigned char
uchar collect[5]=0;
uchar aaa;
char i;
bit overrun;
bit underrun;
bit data_ready; /* 增加一个标志 */
main()
{
IT0=1; // interrupt edge trigger
EA=1; //interrupt 0 enable
EX0=1;
i=4;
ad_run=0x20; //ad start
while(1)
{
if (data_ready)
{
/* 处理采样的数据 */
data_ready = 0;
ad_run = 0x20; /* 假定需要重复测量, 再次启动转换 */
}
}
}
void ad_result() interrupt 0
{
ad_run = 0; /* 如果需要暂停它,在哪一个nSTROBE脉冲给出控制信号并无分别*/
/* 每个脉冲都重复给出给出同样的控制信号也没有问题 */
aaa=ad_read;
overrun = underrun = 0; /* 先清0 */
if(aaa&0x04==0x04)
overrun=1; //过量程处理
else if(aaa&0x01==0x01)
underrun=1; //欠量程处理
collect=aaa; /* 我不知道 B1-B4 占 A 中的哪4个bit */
i--;
if (i<0)
{
data_ready = 1;
i = 4;
}
}
我最后把程序改成了上面这个样子!我通过人为产生中断的方式,运行了程序(因为strobe出来的电平一直为高5V上下,让int0接地,接通一次就能产生一次中断)并设了断点,由此可以知道程序是没问题的。可以确定是strobe负脉冲没有产生或者是ad转换没进行。可是电源+5V,-5V,clk in都没错呀!我也量了R/H的电压,它也是5V啊!busy在零到5V之间跳动,可是当采集的是一个恒定的信号的时候,它应该是一个周期信号啊! 我快崩溃了。会不会是芯片坏了,或是电路板坏了? |
|