📄 fs511.c
字号:
/*********************************************/
// File Name: FS511_adc.c
// Author: henny
// Create Date: 2006/3/1
// Modify Date: 2006/7/21
/*********************************************/
#include <SST89x5xxRD2.h>
#include <intrins.h>
#define VOID void
typedef signed char INT8;
typedef signed short INT16;
typedef signed long INT32;
typedef char CHAR;
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long DWORD;
typedef double FLOAT;
typedef bit BOOL;
#define CS P1_0
#define SK P1_1
#define DI P1_2
#define DO P1_3
#define RDBY P1_3
#define NETA 0
#define NETB 1
#define NETC 2
#define NETD 3
#define Nop() _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_()
DWORD AD_Value;
DWORD AD_Data_buf[5];
VOID FS511_Write(BYTE adr,BYTE c)
{
INT8 i;
CS = 0;
Nop();
DI = 0;
Nop();
SK = 1;
Nop();
SK = 0;
Nop();
if ((adr&0x02)==0x02)
{
DI = 1;
Nop();
}
else
{
DI = 0;
Nop();
}
SK = 1;
Nop();
SK = 0;
Nop();
if ((adr&0x01)==0x01)
{
DI = 1;
Nop();
}
else
{
DI = 0;
Nop();
}
SK = 1;
Nop();
SK = 0;
Nop();
DI = 0;
Nop();
SK = 1;
Nop();
SK = 0;
Nop();
for (i=0; i<8; i++)
{
if ((c<<i)&0x80)
{
DI = 1;
}
else
{
DI = 0;
}
SK = 1;
Nop();
SK = 0;
Nop();
}
CS = 1;
DI = 0;
Nop();
}
BYTE Get_FS511_Byte()
{
INT8 i;
BYTE d;
for (i=0;i<8;i++)
{
d = d<<1;
if (DO == 1)
{
d=d+1;
}
SK = 1;
Nop();
SK = 0;
Nop();
}
return d;
}
BYTE FS511_Read(BYTE adr)
{
BYTE c;
CS = 0;
Nop();
if ((adr&0x04)==0x04)
{
DI = 1;
Nop();
}
else
{
DI = 0;
Nop();
}
SK = 1;
Nop();
SK = 0;
Nop();
if ((adr&0x02)==0x02)
{
DI = 1;
Nop();
}
else
{
DI = 0;
Nop();
}
SK = 1;
Nop();
SK = 0;
Nop();
if ((adr&0x01)==0x01)
{
DI = 1;
Nop();
}
else
{
DI = 0;
Nop();
}
SK = 1;
Nop();
SK = 0;
Nop();
DI = 1;
Nop();
SK = 1;
Nop();
SK = 0;
Nop();
c = Get_FS511_Byte();
CS = 1;
DI = 0;
Nop();
return c;
}
VOID FS511_Init()
{
CS = 1;
Nop();
SK = 1;
Nop();
DI = 1;
Nop();
DO = 0;
Nop();
DO = 1;
Nop();
CS = 1;
Nop();
FS511_Write(NETA,0x88);
FS511_Write(NETB,0xe0);
FS511_Write(NETC,0x93);
FS511_Write(NETD,0x56);
}
DWORD Get_AD_Convert_Data()
{
INT8 i;
while (RDBY);
CS = 0;
Nop();
DI = 1;
Nop();
SK = 1;
Nop();
SK = 0;
Nop();
DI = 0;
Nop();
SK = 1;
Nop();
SK = 0;
Nop();
DI = 0;
Nop();
SK = 1;
Nop();
SK = 0;
Nop();
DI = 1;
Nop();
SK = 1;
Nop();
SK = 0;
Nop();
AD_Value=Get_FS511_Byte();
AD_Value=AD_Value<<8;
AD_Value+=Get_FS511_Byte();
AD_Value=AD_Value<<8;
AD_Value+=Get_FS511_Byte();
for (i=4; i>0; i--)
{
AD_Data_buf[i]=AD_Data_buf[i-1];
}
AD_Data_buf[0]=AD_Value>>6;
AD_Value=0;
for (i=0; i<5; i++)
{
AD_Value+=AD_Data_buf[i];
}
AD_Value = AD_Value/5;
CS = 1;
DI = 0;
Nop();
return AD_Value;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -