📄 tlc1549.c
字号:
//ADC
//--------------------------------------------------------------------------------------------------
//tlc1549控制引脚宏定义
//--------------------------------------------------------------------------------------------------
sbit AD_CS1 = P1^2; //CS3电压反馈 // 将p1.2口模拟片选
sbit AD_CS2 = P1^3; //CS4电流反馈 // 将p1.2口模拟片选
sbit AD_CLK = P1^7; // 将p1.7口模拟时钟输出
sbit AD_DOUT = P1^5; // 将p1.6口模拟主机输出
//---------------------------------------------------------------------------------
//读取电压反馈AD转换值
//---------------------------------------------------------------------------------
unsigned int Read1549_U(void)
{
unsigned char n;
unsigned int AD_Val=0;
AD_CS1 = 1;
AD_CS2 = 1;
Delay(1);
AD_CLK = 0;
AD_DOUT = 1;
Delay(1);
AD_CS1 = 0;
Delay(1);
for( n = 0; n < 10; n++ )
{
AD_CLK = 0;
AD_CLK = 1;
_nop_();
}
AD_CLK = 0;
Delay(2);
AD_CS1 = 1;
AD_DOUT = 1;
Delay(2);
AD_CLK = 0;
AD_CS1 = 0;
Delay(1);
for( n = 0; n < 10; n++ )
{
if(AD_DOUT == 1)
{
AD_Val = AD_Val | 0x0001;
} //===从高位开始接收===//
else if(AD_DOUT == 0)
{
AD_Val = AD_Val & 0xFFFE;
}
if(n != 9)
{
AD_Val = AD_Val << 1;
} //===接收的数据左移一位===//
AD_CLK = 1;
AD_CLK = 0;
}
AD_CLK = 0;
AD_CS1 = 1;
return AD_Val; //===返回值===//
}
//---------------------------------------------------------------------
//读取电流反馈AD转换值
//----------------------------------------------------------------------
unsigned int Read1549_I(void)
{
unsigned char n;
unsigned int AD_Val=0;
AD_CLK = 0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
AD_CS2 = 1;
AD_DOUT = 1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
AD_CS2 = 0;
Delay(3);
for( n = 0; n < 10; n++ )
{
AD_CLK = 0;
AD_CLK = 1; //===时钟置高===//
if(AD_DOUT == 1)
{
AD_Val = AD_Val | 0x0001;
} //===从高位开始接收===//
else
{
AD_Val = AD_Val & 0xFFFE;
}
if(n < 9)
{
AD_Val = AD_Val << 1;
} //===接收的数据左移一位===//
AD_CLK = 0;
}
AD_CLK = 0;
AD_CS2 = 0;
AD_CS2 = 1;
Delay(10);
return AD_Val; //===返回值===//
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -