📄 b3tszh4.c
字号:
P1=P1_data;
dlyss();
dat=average(tim)/5;
if(dat<20) dat=1;
else dat=0;
return(dat);
}
char get_key(char ksr)
{unsigned char dat;
P1_data&=0x1f;
if(ksr==1) dat=0x60; /* F1 key */
else if(ksr==2) dat=0x40; /* Enter key */
else if(ksr==3) dat=0x20; /* < key */
else if(ksr==4) dat=0x00; /* > key */
else return(0);
P1_data|=dat;
P1=P1_data;
dlyss();
dat=average(50)/5;
if(dat<20) dat=ksr;
else dat=0;
return(dat);
}
char get_key_all()
{unsigned char dat;
P1_data&=0x1f;
P1_data|=0x60; /* F1 key */
P1=P1_data;
dlys();
dat=average(20)/5;
if(dat<30)
return(1);
P1_data&=0x1f;
P1_data|=0x40; /* Enter key */
P1=P1_data;
dlys();
dat=average(20)/5;
if(dat<30)
return(2);
P1_data&=0x1f;
P1_data|=0x20; /* < key */
P1=P1_data;
dlys();
dat=average(20)/5;
if(dat<30)
return(3);
P1_data&=0x1f; /* > key */
P1=P1_data;
dlys();
dat=average(20)/5;
if(dat<30)
return(4);
return(0);
} /*------------- get_key_all() --****/
void INIT_VIQ()
{unsigned int dat;
dat=read_word(2);
if(dat==1) OCV_bz=1;
else OCV_bz=0;
dat=read_word(3);
if(dat==1) CCV_bz=1;
else CCV_bz=0;
dat=read_word(4);
if(dat==1) CCI_bz=1;
else CCI_bz=0;
dat=read_word(10);
LOW_LIMIT[0]=dat;
dat=read_word(11);
HIGH_LIMIT[0]=dat;
dat=read_word(12);
LOW_LIMIT[1]=dat;
dat=read_word(13);
HIGH_LIMIT[1]=dat;
dat=read_word(14);
LOW_LIMIT[2]=dat;
dat=read_word(15);
HIGH_LIMIT[2]=dat;
dat=read_word(20);
if(dat>1990||dat<100) dat=1000;
ADJ_data[0]=dat;
dat=read_word(21);
if(dat>1990||dat<100) dat=1000;
ADJ_data[1]=dat;
dat=read_word(22);
if(dat>1990||dat<100) dat=1000;
ADJ_data[2]=dat;
make_VIQ();
}
void save_VIQ()
{unsigned int dat;
if(OCV_bz==1) dat=1;
else dat=0;
write_word(2,dat);
if(CCV_bz==1) dat=1;
else dat=0;
write_word(3,dat);
if(CCI_bz==1) dat=1;
else dat=0;
write_word(4,dat);
write_word(10,LOW_LIMIT[0]);
write_word(11,HIGH_LIMIT[0]);
write_word(12,LOW_LIMIT[1]);
write_word(13,HIGH_LIMIT[1]);
write_word(14,LOW_LIMIT[2]);
write_word(15,HIGH_LIMIT[2]);
write_word(20,ADJ_data[0]);
write_word(21,ADJ_data[1]);
write_word(22,ADJ_data[2]);
make_VIQ();
}
void make_VIQ()
{idata float vx;
vx = ADJ_data[0];
vx /= 1783.;
ADJ_data_act[0]=vx;
vx = ADJ_data[1];
vx /= 1783.;
ADJ_data_act[1]=vx;
vx = ADJ_data[2];
vx /=35.5;
ADJ_data_act[2]=vx;
}
/***************************************----*/
void make_data_ld(unsigned int Tem,char VIQ)
{int datm,dax;
char dig0,dig1,dig2,dig3;
if(Tem<10000) {
dig0=Tem/1000;
dax=dig0*1000;
datm=Tem-dax;
dig1=datm/100;
dax=dig1*100;
datm-=dax;
dig2=datm/10;
dax=dig2*10;
dig3=datm-dax;
datm=(VIQ-1)*4;
/* ET0=0; */
data_ld[datm]=LED_DIG[dig0];
data_ld[datm+1]=LED_DIG[dig1];
if(VIQ==1||VIQ==2) data_ld[datm+1]|=0x80;
data_ld[datm+2]=LED_DIG[dig2];
if(VIQ==3) data_ld[datm+2]|=0x80;
data_ld[datm+3]=LED_DIG[dig3];
/* ET0=1; */
}
else {
datm=(VIQ-1)*4;
/* ET0=0; */
data_ld[datm]=0x40;
data_ld[datm+1]=0x40;
data_ld[datm+2]=0x40;
data_ld[datm+3]=0x40;
/* ET0=1; */
}
}
/*----*******************************************/
void dlyss(void)
{
unsigned char i;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
void dly(unsigned char times)
{unsigned char i,j;
for(i=0;i<times;i++) {
for(j=0;j<165;j++) {
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
void dlys(void) {
unsigned char i;
for(i=0;i<10;i++)
_nop_();
}
unsigned char powt(unsigned char bas,unsigned char m) {
unsigned char i,dat=1;
for(i=0;i<m;i++)
dat*=bas;
return(dat);
}
/*
unsigned int powti(unsigned char bas,unsigned char m) {
unsigned char i;
unsigned int dat=1;
for(i=0;i<m;i++)
dat*=bas;
return(dat);
}*/
unsigned int average_l(unsigned char tim) {
unsigned char i;
unsigned int vx,dat;
vx = 0;
for(i=0;i<tim;i++){
vx += Read_from_AD();
}
vx=vx/tim;
return vx;
}
unsigned int average(unsigned char tim) {
unsigned char i,j;
unsigned int vx;
unsigned long int av;
av = 0;
j = 0;
for(i=0;i<tim;i++){
vx = Read_from_AD();
if(vx>1) av += vx;
else j++;
}
if(j<tim) {
av = av/(tim-j);
vx=av;
}
else vx=0;
return vx;
}
/******************max187****************/
/************/
unsigned int Read_from_AD(void) {
union {
unsigned int unsignedout;
unsigned char ch[2];
} para;
unsigned char i;
AD_DO = 1;
AD_CLK = 0;
AD_CS = 0; /* Start conversition */
i = 20;
do{
i--;
if (i==0){
AD_CS=1;
return 0;
}
} while(AD_DO==0);
para.ch[0] = 0;
AD_CLK = 1;
AD_CLK = 0;
para.ch[0] |= AD_DO; /* 0*/
AD_CLK = 1;
AD_CLK = 0;
para.ch[0] <<= 1;
para.ch[0] |= AD_DO; /*1 */
AD_CLK = 1;
AD_CLK = 0;
para.ch[0] <<= 1;
para.ch[0] |= AD_DO; /*2*/
AD_CLK = 1;
AD_CLK = 0;
para.ch[0] <<= 1;
para.ch[0] |= AD_DO; /*3*/
para.ch[1] = 0;
AD_CLK = 1;
AD_CLK = 0;
para.ch[1] |= AD_DO; /*0*/
AD_CLK = 1;
AD_CLK = 0;
para.ch[1] <<= 1;
para.ch[1] |= AD_DO; /*1*/
AD_CLK = 1;
AD_CLK = 0;
para.ch[1] <<= 1;
para.ch[1] |= AD_DO; /*2*/
AD_CLK = 1;
AD_CLK = 0;
para.ch[1] <<= 1;
para.ch[1] |= AD_DO; /*3*/
AD_CLK = 1;
AD_CLK = 0;
para.ch[1] <<= 1;
para.ch[1] |= AD_DO; /*4*/
AD_CLK = 1;
AD_CLK = 0;
para.ch[1] <<= 1;
para.ch[1] |= AD_DO; /*5 */
AD_CLK = 1;
AD_CLK = 0;
para.ch[1] <<= 1;
para.ch[1] |= AD_DO; /*6 */
AD_CLK = 1;
AD_CLK = 0;
para.ch[1] <<= 1;
para.ch[1] |= AD_DO; /*7*/
AD_CS = 1;
return para.unsignedout;
}
/********************max187******************/
/*************************** Get A/D Datas **********************/
/************************************** EEPROM 93C46 OPERATION *************/
void send_byte(unsigned char dat) {
unsigned char i;
EPR_CS = 1; /* Start Condition */
EPR_DI = 1;
EPR_CLK = 1;
EPR_CLK = 0;
_nop_();
for(i=0;i<8;i++) {
dat <<= 1;
EPR_DI = CY;
EPR_CLK = 1;
EPR_CLK = 0;
}
_nop_();
EPR_CS = 0;
_nop_();
_nop_();
}
unsigned int read_word(unsigned char addr) {
unsigned char i;
unsigned char data_in;
unsigned int datx;
if(addr>63) return(0);
EPR_CS = 1; /* Start Condition */
EPR_DI = 1;
EPR_CLK = 1;
EPR_CLK = 0;
addr &= 0x3f; /* send address */
addr |= 0x80;
for(i=0;i<8;i++) {
addr <<= 1;
EPR_DI = CY;
EPR_CLK = 1;
EPR_CLK = 0;
}
for(i=0;i<8;i++) { /* read high byte */
EPR_CLK = 1;
EPR_CLK = 0;
data_in <<= 1;
CY = EPR_DO;
data_in |= CY;
}
datx=data_in*256;
for(i=0;i<8;i++) { /* read low byte */
EPR_CLK = 1;
EPR_CLK = 0;
data_in <<= 1;
CY = EPR_DO;
data_in |= CY;
}
EPR_CS = 0;
datx |= data_in;
return(datx);
}
void write_word(unsigned char addr,unsigned int data_out) {
unsigned char i;
if(addr>63) goto end_ww;
send_byte(0x30);
_nop_();
_nop_();
EPR_CS = 1; /* Start Condition */
EPR_DI = 1;
EPR_CLK = 1;
EPR_CLK = 0;
_nop_();
addr &= 0x3f; /* send address */
addr |= 0x40;
for(i=0;i<8;i++) {
addr <<= 1;
EPR_DI = CY;
EPR_CLK = 1;
EPR_CLK = 0;
}
for(i=0;i<16;i++) { /* write one word */
data_out <<= 1;
EPR_DI = CY;
EPR_CLK = 1;
EPR_CLK = 0;
}
_nop_();
EPR_CS = 0;
dly(3);
send_byte(0x00);
dly(1);
end_ww:
_nop_();
_nop_();
}
/*************************** Get A/D Datas **********************/
/**** unsigned int read_ad1549(void) *******
unsigned int Read_from_AD(void) {
unsigned int i;
unsigned int dat;
AD_CLK=0;
AD_CS=0; start condition
dat=0;
for(i=0;i<10;i++)
{
AD_CLK=1;
AD_CLK=0;
}
AD_CS=1;
for(i=0;i<6;i++) _nop_();
AD_CS=0;
dat=(dat<<1)|AD_DO;
for(i=0;i<9;i++) {
AD_CLK=1;
AD_CLK=0;
dat=(dat<<1)|AD_DO;
}
AD_CLK=1; AD_CLK=0;
AD_CS=1;
dat >>= 2;
i=dat;
return i;
}
********************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -