📄 x20gdnzh1.c
字号:
}
TF2=0;
}
//-----------------------------------------------
//-----------------------------------------------
//X25045送数单元
void outbyt(unsigned char i)
{
unsigned char j;
for(j=0;j<8;j++)
{
SCLK=0;
if(i&0x80)SDI=1;
else SDI=0;
i<<=1;
SCLK=1;
}
SDI=0;
}
//-----------------------------------------------
//X25045读数据
unsigned char inbyt(void)
{
unsigned char i=0;
unsigned int k=0;
do
{
SCLK=1;
SCLK=0;
if(SDO)k++;
i++;
k<<=1;
}
while(i<8);
k>>=1;
i=k;
return i;
}
//-----------------------------------------------
//写延时
void wip_del(void)
{
unsigned char i,k;
for(i=0;i<25;i++)
{
SCLK=0;
EECS=0;
outbyt(5);
k=inbyt();
SCLK=0;
EECS=1;
}
}
//-----------------------------------------------
//i是地址,j是内容16位
void writee(unsigned int i,unsigned int j)
{
EECS=1;
SDI=1;
SDO=1;
SCLK=0;
_nop_();
EECS=0;
outbyt(6);
EECS=1;
SCLK=0;
EECS=0;
outbyt(1);
outbyt(0);
EECS=1;
SCLK=0;
_nop_();
EECS=1;
wip_del();
EECS=1;
SCLK=0;
_nop_();
EECS=0;
_nop_();
outbyt(6);
SCLK=0;
EECS=1;
SCLK=0;
EECS=0;
if((i+i)>=256)outbyt(10);
else outbyt(2);
outbyt(i+i);
outbyt(j&0x00ff);//低8位数据
SCLK=0;
_nop_();
EECS=1;
wip_del();
SCLK=0;
EECS=0;
outbyt(6);
SCLK=0;
EECS=1;
SCLK=0;
EECS=0;
if((i+i)>=256)outbyt(10);
else outbyt(2);
outbyt(i+i+1);
outbyt(j>>8);
SCLK=0;
EECS=1;
wip_del();
SDI=1;
SDO=1;
EECS=0;
SCLK=0;
}
//***********************************************
//读25045 16位 i地址 j读到内容
//***********************************************
unsigned int reade(unsigned char i)
{
unsigned int j;
SCLK=0;
EECS=1;
SCLK=0;
EECS=0;
if(i+i>=256) outbyt(11);
else outbyt(3);
outbyt(i+i+1);
j=inbyt();
j<<=8;
SCLK=0;
EECS=1;
SCLK=0;
EECS=0;
if(i+i>=256) outbyt(11);
else outbyt(3);
outbyt(i+i);
j|=inbyt();
return j;
}
//-----------------------------------------------
//max111读/写程序 写入数据i,返回数据k
unsigned int wrmax111(unsigned int i)
{
unsigned char j=0;
unsigned int k=0;
if(adchange)i|=0x0010;
do {
SCLK=0;
if(i&0x8000) SDI=1;
else SDI=0;
SCLK=1;
i<<=1;
if(SDO) k++;
k<<=1;
j++;
}while(j<16);
k>>=1;
SCLK=0;
return k;
}
//-----------------------------------------------
//不显示
void dirb(void)
{
led2c=1;led3c=1;led4c=1;//显示' '
}
//-----------------------------------------------
//延时程序 入口i
void delay(unsigned int i)
{
for(;i>1;i--){
_nop_();
}
}
//***********************************************
//MAX111采样三部校准 14位转换 时间200ms
//***********************************************
void indb0()
{
SCLK=1;
ADCS=0;
wrmax111(0);
ADCS=1; _nop_();
delay(15400);//delay 200ms
dog();
ADCS=0;
wrmax111(0x8c8c);_nop_();
ADCS=1;
delay(15400);//delay 200ms
dog();
ADCS=0;
wrmax111(0x8c88);_nop_();
ADCS=1;
delay(15400);//delay 200ms
dog();
ADCS=0;
wrmax111(0x8c84);_nop_();
ADCS=1;_nop_();
delay(15400);//delay 200ms
dog();_nop_();
ADCS=0;_nop_();
wrmax111(0x8c80);
ADCS=1;
delay(15400);//delay 200ms
dog();
}
//********************************************************
//函数功能:AD采样 返回采样的二进制数
//********************************************************
unsigned int indb(void)
{
unsigned int i=0,sum=0;//,k=0xffff,j=0; //j=max,k=min
unsigned char l;
for(l=0;l<4;l++) {
SCLK=1;
ADCS=0;
i=wrmax111(0x8c80);
ADCS=1;
delay(13000);//delay 200ms
dog();
sum+=i;
}
sum>>=2;
return sum;
}
//***************************************************
//HEX_BCD max 9999
unsigned int HEX2BCD(unsigned int hex_data)
{
unsigned int bcd_data;
unsigned int temp;
temp=hex_data%1000;
bcd_data=hex_data/1000<<12;
bcd_data=bcd_data|temp/100<<8;
bcd_data=bcd_data|((temp%100)/10)<<4;
bcd_data=bcd_data|temp%10;
return bcd_data;
}
//*********显示版本号****************************
void dirver(void)
{
tbuffer2=17;tbuffer3=6;tbuffer4=1;//'U6.0' 零点处理
led3p=1;//第三位数码管小数点显示
delay(58500);//延时500ms
dog();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -