📄 ad_0838.c
字号:
void main(void)
{
Byte data1;
data1=AD_0838(0,2);
while(1);
}
/**********************************************************
目的:运用TLC0838,输入通道值,读取AD转换值
输入参数:1、通道值TDZ
输出参数:1、AD转换结果AD_JG
相关管脚:1、ADCS1=P1^3 第一个0838-AD片选 2、ADCS2=P1^0 第二个0838-AD片选
3、ADCLK=P1^1 0832-AD时钟 4 、ADIO=P1^4 0832-AD数据
*/
Byte AD_0838(Byte TDZ,Byte Number)
{
Byte Bit[8];
Byte TDZ_MID;
Byte i;
Byte AD_JG=0x00;
Bit[0]=0x01;
Bit[1]=0x02;
Bit[2]=0x04;
Bit[3]=0x08;
Bit[4]=0x10;
Bit[5]=0x20;
Bit[6]=0x40;
Bit[7]=0x80;
switch(TDZ)
{
case 0 :TDZ_MID=0x18;break;
case 1 :TDZ_MID=0x1c;break;
case 2 :TDZ_MID=0x19;break;
case 3 :TDZ_MID=0x1d;break;
case 4 :TDZ_MID=0x1a;break;
case 5 :TDZ_MID=0x1e;break;
case 6 :TDZ_MID=0x1b;break;
case 7 :TDZ_MID=0x1f;break;
}
switch(Number)
{
case 1:ADCS1=1;break;
case 2:ADCS2=1;break;
}
RS_ADIO=0;
CM8880CLK_ADCLK=0;
switch(Number)
{
case 1:ADCS1=0;break;
case 2:ADCS2=0;break;
}
for(i=5;i>0;i--)
{
RS_ADIO=TDZ_MID&Bit[i-1];
AD_0838_Pulse();
}
CM8880CLK_ADCLK=1;
for(i=8;i>0;i--)
{
AD_0838_Pulse();
if(RS_ADIO)AD_JG|=Bit[i-1];
}
switch(Number)
{
case 1:ADCS1=1;break;
case 2:ADCS2=1;break;
}
return AD_JG;
}
void AD_0838_Pulse(void)
{
Byte i;
CM8880CLK_ADCLK=1; //get a pulse about 52 us
for(i=0;i<4;i++)
{
_nop_();
}
CM8880CLK_ADCLK=0;
for(i=0;i<4;i++)
{
_nop_();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -