📄 ad0832.c
字号:
#include "AT89X52.H"
#define uchar unsigned char
#define uint unsigned int
#define ADCLK P3_4 //时钟接口
#define ADDI P3_5 //数据输入接口
#define ADDO P3_5 //数据输出接口
#define ADCS P3_0 //使能接口
void Delay35U();
void Delay2U();
uchar AD(uchar n)
{
uchar temp=0;
uchar temp1=0;
uchar temp2=0;
uchar i=0;
switch(n)
{
case 0:n=1;break;
case 1:n=3;break;
case 2:n=9;break;
case 3:n=11;break;
case 4:n=5;break;
case 5:n=7;break;
case 6:n=13;break;
case 7:n=1;break;
case 8:n=15;break;
}
ADCS=1;
Delay2U();
ADCLK=0;
ADDI=1; /*在第1 个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号*/
ADCS=0; //使能ADC0838
Delay2U();
ADCLK=1;
Delay2U();
ADCLK=0;
Delay2U();
for(i=0;i<4;i++)
{
ADDI=n&1;
n=n>>1;
Delay2U();
ADCLK=1;
Delay2U();
ADCLK=0;
Delay2U();
}
ADDI=1;
Delay35U();
//***************接收********************
for(i=0; i < 8; i++)
{
ADCLK=1;
Delay2U();
ADCLK=0;
Delay2U();
temp1=temp1 << 1;
if(ADDO)temp1|= 0x01;
else temp1|= 0x00;
}
/*for(i=0; i < 8; i++)
{
if(ADDO)temp=0x01;
else temp=0x00;
temp=temp << i;
temp2 |= temp;
ADCLK=1;
Delay2U();
ADCLK=0;
Delay2U();
}
if(temp1 == temp2);
*/
ADDI=1;
ADCS=1;
return temp1;
}
void Delay2U()
{
uchar x=4;
while(x--);
}
void Delay35U()
{
uchar x=40;
while(x--);
}
void main()
{uint yscs;
int ys;
while(1){P0=AD(1);
for(ys =200;ys>0;ys--)
{ for(yscs=0;yscs<124;yscs++)
{;}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -