尊敬的 Josef Kiefmann:
您能帮我解决这个问题还是共享您的代码来检查我出错的地方。
SCL=1;
SDA=1;
SDA=0; //启动条件
B=0x90; //从地址+WR
ADC_WR (); //8位通过使[ SCL=0、(SAD 1或0)、SCL=1]进行发送
SCL=0;
SCL=1; //9位额外一个时钟脉冲
B=0x01; //config REG
ADC_WR (); //8位通过使[ SCL=0、(SAD 1或0)、SCL=1]进行发送
SCL=0;
SCL=1; //9位额外一个时钟脉冲
B=0xC3; //os=1、A0 CH、单次触发模式
ADC_WR (); //8位通过使[ SCL=0、(SAD 1或0)、SCL=1]进行发送
SCL=0;
SCL=1; //9位额外一个时钟脉冲
SCL=0; //extra SCL=0
SCL=0; //extra SCL=0
SCL=0; //extra SCL=0 //偶数我跳过这个额外的3次 SCL=0,然后我也会得到相同的 MSB 器件结果
B=0x83; //默认
ADC_WR (); //8位通过使[ SCL=0、(SAD 1或0)、SCL=1]进行发送
SCL=0;
SCL=1; //9位额外一个时钟脉冲
SCL=0;
SCL=1;
SDA=0;
SDA=1; //停止 条件
//延迟10ms
TH0=0xDC;
TL0=0x00;
tr0=1;
while (TF0=0);
tr0=0;
TF0=0;
//////////////////////////////////////////////////////////////////////////////////////////////////
SCL=1;
SDA=1;
SDA=0; //Start 条件
//读取操作
B=0x90; //从地址+WR
ADC_WR (); //8位通过使[ SCL=0、(SAD 1或0)、SCL=1]进行发送
SCL=0;
SCL=1; //9位额外一个时钟脉冲
B=0x00; //转换寄存器
ADC_WR (); //8位通过使[ SCL=0、(SAD 1或0)、SCL=1]进行发送
SCL=0;
SCL=1; //9位额外一个时钟脉冲
SCL=0;
SCL=1;
SDA=0;
SDA=1; //停止 条件
SCL=1;
SDA=1;
SDA=0; //START 条件
B=0x91; //从地址+RD
ADC_WR (); //8位通过使[ SCL=0、(SAD 1或0)、SCL=1]进行发送
SCL=0;
SCL=1; //9位额外一个时钟脉冲
ADCM(); //一次读取16位[SCL=0、(16BITREG=SDA (将 SDA 值加载到 REG)、SCL=1]
SCL=0;
SCL=1; //9位额外一个时钟脉冲
SCL=0;
SCL=1;
SDA=0;
SDA=1; //停止 条件
快速查看
启动
90
01
C383
停下
延迟10ms
启动
90
00
停下
启动
91.
MSB+LSB