下面是程序,程序编译没问题但是仿真就是读取不了数据,两个数据都是0
*********************************************************/// ADC0832的时钟脉冲/*********************************************************/void WavePlus(){ _nop_(); ADC_CLK = 1; _nop_(); ADC_CLK = 0;}/*********************************************************/// 获取指定通道的A/D转换结果/*********************************************************/uchar Get_ADC0832(){ uchar i; uchar dat1=0; uchar dat2=0; ADC_CLK = 0; // 电平初始化 ADC_DAT = 1; _nop_(); ADC_CS = 0; WavePlus(); // 起始信号 ADC_DAT = 1; WavePlus(); // 通道选择的第一位 ADC_DAT = 1; for(i=0;i<8;i++) // 第一次读取 { dat1<<=1; WavePlus(); if(ADC_DAT) dat1=dat1|0x01; else dat1=dat1|0x00; } for(i=0;i<8;i++) // 第二次读取 { dat2>>= 1; if(ADC_DAT) dat2=dat2|0x80; else dat2=dat2|0x00; WavePlus(); } _nop_(); // 结束此次传输 ADC_DAT = 1; ADC_CLK = 1; ADC_CS = 1; if(dat1==dat2) // 返回采集结果 return dat1; else return 0;} uchar Get_ADC08322(){ uchar i; uchar dat1=0; uchar dat2=0; ADC_CLK = 0; // 电平初始化 ADC_DAT = 1; _nop_(); ADC_CS = 0; WavePlus(); // 起始信号 ADC_DAT = 1; WavePlus(); // 通道选择的第一位 ADC_DAT = 1; for(i=0;i<8;i++) // 第一次读取 { dat1<<=1; WavePlus(); if(ADC_DAT) dat1=dat1|0x01; else dat1=dat1|0x00; } for(i=0;i<8;i++) // 第二次读取 { dat2>>= 1; if(ADC_DAT) dat2=dat2|0x80; else dat2=dat2|0x00; WavePlus(); } _nop_(); // 结束此次传输 ADC_DAT = 1; ADC_CLK = 1; ADC_CS = 1; if(dat1==dat2) // 返回采集结果 return dat1; else return 0;}
light=Get_ADC08322(); // 读取光照强度
sd=Get_ADC0832();
sd=sd/2.5;
light=light/2.5; // 缩小光照检测结果(在0-99)
if(light>99) // 如果大于99
light=99; // 则依然保持99
LcdGotoXY(1,14); // 光标定位
LcdPrintNum(light); // 显示光照强度
LcdGotoXY(1,9); // 光标定位
LcdPrintNum(sd); // 显示湿度
|