📄 cs5522._c
字号:
#include<io8515.h>
//**************************************************
//PC1-CS5522_CS PC0-CS5522_SCLK PB4-CS5522_SDO
//PB3-CS5522_SDI
//****************************************************
#define cs 0b00000010
#define sclk 0b00000001
#define sdi 0b00001000
#define sdo 0b00010000
//************************************
#define unch unsigned char
//*************************************
unsigned char data[3]; //receive cs5522's number;
void Cacu_Display(unsigned char temp);
//***********************************
//向CS5522发送一个字节
void Se_Cs_W(unsigned char Cs_Word)
{ unsigned char Cs_Tem;
unsigned char Cs_i=8;
while(Cs_i)
{
Cs_Tem=Cs_Word;
Cs_Tem=Cs_Tem>>(Cs_i-1);
Cs_Tem&=0b00000001;
if(Cs_Tem)
{PORTB=PORTB|sdi;}
else
{PORTB=PORTB&~sdi;}
PORTC=PORTC|sclk;//clock=1.
PORTC=PORTC&(~sclk);//clock=0
Cs_i--;
}
}
//***********************************
//读一个字节。
unsigned char ReadW()
{
unsigned char Read_Temp01,Read_Temp02,Read_i;
Read_i=8;
Read_Temp01=0;
Read_Temp02=0;
while(Read_i)
{
Read_Temp01=PINB;
PORTC=PORTC|sclk;
PORTC=PORTC&~sclk;
Read_Temp01=Read_Temp01&sdo;
Read_Temp01=Read_Temp01>>4;
Read_Temp01=Read_Temp01<<(Read_i-1);
Read_Temp02=Read_Temp02+Read_Temp01;
Read_i--;
}
return(Read_Temp02);
}
//***********************************
//写1字节读3字节。
void Sen_Rec(unsigned char comaw)
{
DDRC=DDRC|cs;
DDRC=DDRC|sclk;
DDRB=DDRB|sdi;
DDRB=DDRB&~sdo;
PORTB|=sdo;//选择为输入
PORTC=PORTC&~cs; //片选
Se_Cs_W(comaw);
data[2]=ReadW();
data[1]=ReadW();
data[0]=ReadW();
PORTC=PORTC|cs;
}
//************************************
//直接写4字节。
void F_Word(unch write1,unch write2,unch write3,unch write4)
{ DDRC=DDRC|cs;
DDRC=DDRC|sclk;
DDRB=DDRB|sdi;
PORTC=PORTC&~cs; //片选
PORTB|=sdi;
Se_Cs_W(write1);
Se_Cs_W(write2);
Se_Cs_W(write3);
Se_Cs_W(write4);
PORTC=PORTC|cs;
}
//***********************************
void ADC(unsigned char ADCtemp)
{
DDRC=DDRC|cs;
DDRC=DDRC|sclk;
DDRB=DDRB|sdi;
DDRB=DDRB&~sdo;
PORTB|=sdo;//选择为输入
PORTC=PORTC&~cs; //片选
Se_Cs_W(ADCtemp);
PORTC=PORTC|cs;
}
//**********************************
//接收CS5522的数据:
void ReceiveData(void)
{
unsigned char ReceiveTemp;
DDRB=DDRB&~sdo;
PORTB|=sdo;//选择为输入
DDRC=DDRC|cs;
PORTC=PORTC&~cs; //片选
DDRC=DDRC|sclk;
PORTC=PORTC|sclk;
do
{
ReceiveTemp=PINB;
ReceiveTemp=ReceiveTemp&sdo;
}
while(ReceiveTemp);
data[2]=ReadW();
data[2]=ReadW();
data[1]=ReadW();
data[0]=ReadW();
PORTC=PORTC|cs;
}
//***********************************
//起动串口。
void initserial(void)
{
unsigned char Init_Tem=15;
DDRC=DDRC|cs;
DDRC=DDRC|sclk;
PORTC=PORTC&~cs;
DDRB=DDRB|sdi;
while(Init_Tem)
{
Se_Cs_W(0xff);
Init_Tem--;
}
Se_Cs_W(0xfe);
PORTC=PORTC|cs;
}
//***********************************
//配置CS5522
void InitCs(void)
{
unsigned char InitTemp;
initserial(); //起动串口。
//===================设置配置寄存器=======================
//配置RS位寄存器写一
// distemp();
F_Word(0x03,0x00,0x00,0x80); //直接写4字节
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -