📄 初始化.c
字号:
#include"w77e58.h"
#include"intrins.h"
#define uchar unsigned char
#define uint unsigned int
#define pl 0x02
#define gl 0x04
#define kg 0x06
#define sd 0x08
#define zb 0x0a
#define stch 0x0c
#define zy 0x0e
#define ac 0x10
#define bc 0x12
#define xdart 0x0000
#define ddb 0xffff
#define gs 0x14//干涉
#define px 0x16//频率修正
#define ko 0x18//扩大
sbit l1=P1^4;//发射频率锁定
sbit l2=P1^3;//接收锁定
sbit l3=P1^2;//增益stc锁定
sbit fstd=P1^5;//发射探头检测
sbit plsx=P1^6; //锁相环检测
//************************************//
//初始化函数
//*************************************//
void cusiha();
void plsucu();
void tongxin();
void datey(uint p);
extern void tongxin_txdr();
extern int Read_Temperature(void);
extern bit i2c_write(uchar address,uint fb);
extern uint i2c_read(uchar address);
//extern bit i2c_write(uchar address,char fb);
extern int data wd;//温度缓存
extern uchar data sanwdbz;//上传有无温度传感器0=无,0x01=有
extern uchar data e2prom;//24c02 0=无,0x01=有
extern uchar data fasepl;//发射频率缓存
extern uchar data fasegl;//发射功率缓存
extern uchar data fasekg;//发射开关00-01
extern uchar data caijisendu;//采集深度缓存
extern uchar data zaibao;//消除杂波
extern uchar data stc;//stc等级1-8级
extern uchar data zenyi;//增益1-9级
extern uchar data zenyia;
extern uchar data accd;
extern uchar data bccd;
extern uchar data fstde;//发射探头 0=无,0x01=有
extern uchar data ram;//w24257 0=无,0x01=有
extern uchar data plsxe;// 锁相环 0=无,0x01=有
extern bit wdcgaq;//温度传感器正确标志0=正?
//extern bit i2c_write(uchar address,uint fb);
//extern void tongxin_txd();
extern uchar data kod;
extern uchar data ganse;
extern int data plxz;
//uint data ram_error;
extern void clp_dog();
extern void tongxin_txd(bit ewu);
void cusiha()//第一次读取各参数初始化
{
unsigned char xdata * dda;
unsigned char dgh;
//uint df;
uchar i;
l1=0;
l2=0;
l3=0;
datey(10);
P2=200;
l1=1;datey(10);
l1=0;
P2=143;
l2=1;datey(10);l2=0;
P2=128;
l3=1;datey(10);l3=0;
wd=Read_Temperature();
if(wdcgaq)
sanwdbz=0x00;
else sanwdbz=0x01;
clp_dog();
if(i2c_read(0x00)==0x3030)
{
e2prom=0x01;//24c02 Ok
fasepl=i2c_read(pl);//,发射频率
fasegl=i2c_read(gl);//功率
clp_dog();
fasekg=i2c_read(kg);//开关
caijisendu=i2c_read(sd);//深度
zaibao=i2c_read(zb);//杂波
clp_dog();
stc=i2c_read(stch);//stc
zenyi=i2c_read(zy);//增益
accd=i2c_read(ac);//扫描频率50k
clp_dog();
bccd=i2c_read(bc);//200k
kod=i2c_read(ko);
ganse=i2c_read(gs);
plxz=i2c_read(px);
}
else
{
for(i=0;i<=4;i++)
{
while(i2c_write(0x00,0x3030))
{
tongxin_txd(0);
break;
}
}
e2prom=0x00;
fasepl=0x00;//,发射频率
fasegl=0x00;//功率
fasekg=0x00;//开关
caijisendu=0x00;//深度
zaibao=0x00;//杂波
stc=0x00;//stc
zenyi=0x00;//增益
accd=0x00;//扫描频率50k
bccd=0x00;//200k
kod=0x00;
ganse=0x00;
plxz=0x00;
}
if(fstd)//发射探头检测
fstde=0x00;
else fstde=0x01;
if(plsx)//锁相环检测
plsxe=0x01;
else plsxe=0x00;
for(dda=xdart;dda<ddb;dda++)//内存w24257检测
{
*dda=0x80;//先写入0x80
clp_dog();
}
clp_dog();
for(dda=xdart;dda<ddb;dda++)
{
clp_dog();
dgh=*dda;
if(dgh!=0x80)
{
// ram_error=df;
ram=0x00;
break;
}
ram=0x01;
}
tongxin_txdr();
}
void tongxin()//通信协议初始化
{
T2CON=0x00;
TMOD=0x22;
SCON=0x40;
PCON=0x80;
TH1=0xfb;
TL1=0xfb;
TH0=0xae;
TL0=0xae;
CKCON=0xd2;
PMR=0x60;
PT0=1;
EA=1;
TR1=1;
}
void datey(uint p)
{
uint i;
for(i=0;i<=p;i++)
_nop_();
}
void plsucu()//频率和增益输出,stc
{
int jsple;//接收频率缓存
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -