AD转换 求解代码错误 C
#include
#include
#define uint unsigned int
#define uchar unsigned char
#define pcf8591 0x90;\x05\x05\x05\x05//定义pcf8591地址
uchar AD_channel;
sbit LS138A=P2^2; \x05\x05\x05//编码器(类似与段选、位选)
sbit LS138B=P2^3;
sbit LS138C=P2^4;
unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char AD_CHANNEL;\x05\x05\x05//AD 通道
unsigned long xdata LedOut[8];\x05\x05//无符号长整型 .
unsigned int D[32];
bit DACconversion(uchar addr,uchar ctr,uchar Val)
{
\x05Start_I2c();
\x05SendByte(addr);
\x05if(ack==0);return(0);
\x05SendByte(ctr);
\x05if(ack==0);return(0);
\x05SendByte(Val);
\x05if(ack==0);return(0);
\x05Stop_I2c();
\x05return(1);
}
uchar IRecByte(uchar addr)
{
\x05uchar c;
\x05Start_I2c();
\x05SendByte(addr+1);
\x05if(ack==0);return(0);
\x05c=RcvByte();
\x05Ack_I2c(1);
\x05Stop_I2c();
\x05return(c);
}
bit ISendByte(uchar addr,uchar ctr)
{
\x05Start_I2c();
\x05SendByte(addr);
\x05if(ack==0);return(0);
\x05SendByte(ctr);
\x05if(ack==0);return(0);
\x05Stop_I2c();
\x05return(1);
\x05
}
void main()
{
\x05while(1)
\x05{
\x05\x05switch(AD_channel)
\x05\x05{
\x05\x05\x05case 0:ISendByte(pcf8591,0x40);
\x05\x05\x05\x05D[0]=IRecByte(pcf8591);
\x05\x05\x05\x05break;
\x05\x05\x05case 1:ISendByte(pcf8591,0x41);
\x05\x05\x05\x05D[1]=IRecByte(pcf8591);
\x05\x05\x05\x05break;
\x05\x05\x05case 2:DACconversion(pcf8591,0x40);
\x05\x05\x05\x05break;
\x05\x05\x05
\x05\x05}
\x05\x05if(++AD_channel>4) AD_channel=0;
\x05}
\x05LedOut[0]=Disp_Tab[D[1]%10000/1000];
LedOut[1]=Disp_Tab[D[1]%1000/100];
LedOut[2]=Disp_Tab[D[1]%100/10]|0x80;
LedOut[3]=Disp_Tab[D[1]%10];
\x05
\x05LedOut[4]=Disp_Tab[D[0]%10000/1000];
LedOut[5]=Disp_Tab[D[0]%1000/100];
LedOut[6]=Disp_Tab[D[0]%100/10]|0x80;
LedOut[7]=Disp_Tab[D[0]%10];
\x05
\x05
\x05for( i=0; i
作业帮用户2016-11-21举报