📄 ads7841.c
字号:
#define ADS7841_CLOCK_DOWN() *ADS7841_PORT_DATA&=(ADS7841_CLOCK^0xFFFF)
#define ADS7841_CLOCK_UP() *ADS7841_PORT_DATA|=ADS7841_CLOCK
#define ADS7841_DIN_DOWN() *ADS7841_PORT_DATA&=(ADS7841_DIN^0xFFFF)
#define ADS7841_DIN_UP() *ADS7841_PORT_DATA|=ADS7841_DIN
#define ADS7841_DOUT_DOWN() *ADS7841_PORT_DATA&=(ADS7841_DOUT^0xFFFF)
#define ADS7841_DOUT_UP() *ADS7841_PORT_DATA|=ADS7841_DOUT
#define ADS7841_POWER_DOWN 3
#define ADS7841_MODE 0x8
#define ADS7841_SGL_DIF 0x4
#define ADS7841_S 0x80
unsigned int *ADS7841_PORT_DATA;
unsigned int *ADS7841_PORT_DIR;
unsigned int *ADS7841_PORT_ATTRIB;
unsigned int ADS7841_CLOCK;
unsigned int ADS7841_DIN;
unsigned int ADS7841_DOUT;
unsigned int ADS7841_CHANNEL;
void ini_ADS7841(char Port,unsigned int Clock,unsigned int Din,unsigned int Dout)
{
if (Port=='b'||Port=='B')
{
ADS7841_PORT_DATA=0x7005;
ADS7841_PORT_DIR=0x7007;
ADS7841_PORT_ATTRIB=0x7008;
}
else
{
ADS7841_PORT_DATA=0x7000;
ADS7841_PORT_DIR=0x7002;
ADS7841_PORT_ATTRIB=0x7003;
}
ADS7841_CLOCK=Clock;
ADS7841_DIN=Din;
ADS7841_DOUT=Dout;
*ADS7841_PORT_DIR|=(ADS7841_CLOCK|ADS7841_DIN);
*ADS7841_PORT_DIR&=(ADS7841_DOUT^0xFFFF);
*ADS7841_PORT_ATTRIB|=(ADS7841_CLOCK|ADS7841_DIN);
*ADS7841_PORT_ATTRIB&=(ADS7841_DOUT^0xFFFF);
*ADS7841_PORT_DATA&=(ADS7841_DOUT|ADS7841_DIN|ADS7841_CLOCK)^0xFFFF;
}
unsigned int ADS7841_Read_Data(unsigned int Channel)
{
unsigned int In_Data,Out_Data=0,i;
switch (Channel)
{
case 0:ADS7841_CHANNEL=0x10;break;
case 1:ADS7841_CHANNEL=0x50;break;
case 2:ADS7841_CHANNEL=0x20;break;
case 3:ADS7841_CHANNEL=0x60;break;
default:ADS7841_CHANNEL=0x10;break;
}
In_Data=ADS7841_S|ADS7841_CHANNEL|ADS7841_MODE|ADS7841_SGL_DIF|ADS7841_POWER_DOWN;
//send_data
for(i=0;i<8;i++)
{
ADS7841_CLOCK_DOWN();
if((In_Data<<i)&0x80) ADS7841_DIN_UP();
else ADS7841_DIN_DOWN();
ADS7841_CLOCK_UP();
}
ADS7841_CLOCK_DOWN();
asm("nop");
ADS7841_CLOCK_UP();
asm("nop");
ADS7841_CLOCK_DOWN();
asm("nop");
//get_data
for(i=0;i<12;i++)
{
ADS7841_CLOCK_UP();
if (*ADS7841_PORT_DATA&ADS7841_DOUT) Out_Data=(Out_Data<<1)+1;
else Out_Data=(Out_Data<<1);
ADS7841_CLOCK_DOWN();
}
*ADS7841_PORT_DATA&=(ADS7841_DOUT|ADS7841_DIN|ADS7841_CLOCK)^0xFFFF;
return Out_Data;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -