📄 b3tszh4.c
字号:
}
} /*key_pressed_bz=0*/
} /* key_obj==4; set Adjust Number of OCV/CCV/CCI */
/****************** key_obj==4 ********************************************/
} /* (ACCESS_key==1 && key_ACC2==1) */
goto RUN;
/********************** get key pressed *********************************************/
/******************* Test Program ***********************************************************/
/******************* Test Program ***********************************************************/
/******************* Test Program ***********************************************************/
TEST_PROGRAM:
if(TEST_bz>0) goto MAIN_TEST;
KSC=0;
KLD=0;
dati=get_OCV1(10);
if(dati>20) {
dati=get_OCV1(5);
dlys();
OCV_data=get_OCV1(5);
dati-=OCV_data;
chx=abs(dati);
if(chx<2) {
TEST_bz=1;
WORK_bz=1;
GOOD_bz[0]=0;
GOOD_bz[1]=0;
GOOD_bz[2]=0;
data_ld[16]=0;
};
}
if(TEST_bz==0) goto RUN;
if(CCV_bz==1) {
KLD=1;
if(OCV_bz==1) make_data_ld(OCV_data,1);
dly(2);
CCV_data=get_CCV(10);
KLD=0;
if(CCV_data>OCV_data) CCV_data=OCV_data;
}
if(CCI_bz==1) {
KSC=1;
if(CCV_bz==1) make_data_ld(CCV_data,2);
dly(2);
CCI_data=get_CCI(20);
KSC=0;
make_data_ld(CCI_data,3);
}
TEST_bz=2;
goto RUN;
MAIN_TEST:
if(TEST_bz==2) {
if(OCV_bz==1) {
if(OCV_data<LOW_LIMIT[0] || OCV_data>HIGH_LIMIT[0]) {
GOOD_bz[0]=1; /**** FLASH_bz=1; ***/
VIQ_LED(1,1);
}
else VIQ_LED(2,1);
if(CCV_bz==0) make_data_ld(OCV_data,1);
}
if(CCV_bz==1) {
if(CCV_data<LOW_LIMIT[1] || CCV_data>HIGH_LIMIT[1]) {
GOOD_bz[1]=1; /**** FLASH_bz=2; ***/
VIQ_LED(3,1);
}
else VIQ_LED(4,1);
if(CCI_bz==0) make_data_ld(CCV_data,2);
}
if(CCI_bz==1) {
if(CCI_data<LOW_LIMIT[2] || CCI_data>HIGH_LIMIT[2]) {
GOOD_bz[2]=1; /**** FLASH_bz=3; ***/
VIQ_LED(5,1);
}
else VIQ_LED(6,1);
}
if(GOOD_bz[0]==0 && GOOD_bz[1]==0 && GOOD_bz[2]==0) {
BATS_count++;
if(BATS_count>9999)
BATS_count=0;
make_data_ld(BATS_count,4);
bell(20);
}
LED_on(0);
WORK_bz=0;
TEST_bz=5;
/* bell(20); */
goto RUN;
}
else if(TEST_bz>4) {
dati=get_OCV1(3);
if(dati<10) { /*20*/
LED_on(0);
dly(50);
TEST_bz=0;
}
}
/****************** test **********************************/
RUN:
if(BELL_bz>0) {
if(BELL_bz==1) {
BELL_bz=2;
U6_data|=0xc0; /***** BELL on ***/
P0=U6_data;
LED_on_bz=1;
T1=1;
dlys();
T1=0;
LED_on_bz=0;
dlyss();
}
if(BELL_count==0) {
BELL_bz=0;
U6_data|=0xc0;
U6_data-=0xc0; /*** BELL off ***/
P0=U6_data;
LED_on_bz=1;
T1=1;
dlys();
T1=0;
LED_on_bz=0;
dlyss();
}
}
goto main_loop_start;
} /* ******************** main_{} **************************** */
/****************************************************************************/
/****************************************************************************/
/****************************************************************************/
/****************************************************************************/
/****************** display digitals ****************************/
void dlyst0(void)
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
/****************** display digitals ****************************/
T0_int () interrupt 1 using 1 {
unsigned int dat;
static char FLASH_period;
TL0=216; /* TL0=220; TH0=250; Tp=1mS */
TH0=250;
if(LED_on_bz==1) {
T1=1;
dlyst0();
T1=0;
dlyst0();
LED_on_bz=0;
}
if(WORK_bz>0) {
DSP_DIG=1; /*------- disable display Digitals ****/
goto end_T0;
}
ret_fl1:
if(DISP_count>15) {
DSP_DIG=1; /*------- disable display Digitals ****/
P0=data_ld[16];
dlyst0();
DISP_count++;
T0=1;
dlyst0();
T0=0;
P1_data &= 0xef; /* enable LED display */
P1=P1_data;
if(DISP_count>19) /*19*/
DISP_count=0;
}
else {
if(FLASH_bz>0) {
if(FLASH_bz==1) {
if(DISP_count==0 && FLASH_period==1)
DISP_count+=4;
}
else if(FLASH_bz==2) {
if(DISP_count==4 && FLASH_period==1)
DISP_count+=4;
}
else if(FLASH_bz==3) {
if(DISP_count==8 && FLASH_period==1)
DISP_count+=4;
}
else if(FLASH_bz==4) {
if(DISP_count==12 && FLASH_period==1) {
DISP_count+=4;
goto ret_fl1;
}
}
}
DSP_DIG=1; /**------------ Disable Display Digitals */
P1_data&=0xf0;
P1_data|=DISP_count;
P1_data|=0x10; /* LED off */
P1=P1_data; /**------------ Digital select, disable LED **/
P0=data_ld[DISP_count];
dlyst0();
DISP_count++;
T0=1;
dlyst0();
T0=0;
/* dlyst0(); */
DSP_DIG=0; /**------------- Enable Display **/
}
/* P0=U6_data; */ /**-- Restore P0 to U6:373 locked **/
if(FLASH_bz>0) {
FLASH_count++;
if(FLASH_count>600) {
if(FLASH_period==0) {
FLASH_period=1;
FLASH_count=400;
}
else {
FLASH_period=0;
FLASH_count=0;
}
}
}
end_T0:
T1=0;
} /************** T0_int() **********************/
code const unsigned char LED_DIG[]= {
/* 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 */
/* 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 */
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};
/****************************************************************************/
/*
unsigned int get_OCV(unsigned char tim)
{int dat;
idata float vx;
P1_data&=0x1f;
* P1_data|=0xe0; *** VSP ***
* P1=P1_data;
dlyss();
dat=average(tim);*
P1_data|=0xc0; *** VBAT ***
P1=P1_data;
dly(10);
vx=average(tim);
vx-=1696.;
vx=vx*ADJ_data[0]/340.62;
dat=vx+0.5;
if(dat<0) dat=0;
return(dat);
}*/
unsigned int get_OCV1(unsigned char tim)
{idata int dat;
idata float vx;
P1_data&=0x1f;
/* P1_data|=0xe0; /*** VSP =0xe0 ***/
P1_data|=0xc0; /*** VBAT =0xc0 ***/
P1=P1_data;
dlys();
if(tim<17) dat=average_l(tim);
else dat=average(tim);
if(dat<875) return(0);
dat -= 875;
vx = dat*ADJ_data_act[0];
dat = vx+0.5;
return(dat);
}
unsigned int get_CCV(unsigned char tim)
{int dat;
idata float vx;
P1_data&=0x1f;
/* P1_data|=0xe0; */ /*** VSP ***/
/* P1=P1_data;
dlyss();
dat=average(tim);*/
P1_data|=0xc0; /*** VBAT ***/
P1=P1_data;
dlyss();
vx=average(tim);
vx-=715;
vx=vx*ADJ_data_act[1];
dat=vx+0.5;
if(dat<0) dat=0;
return(dat);
}
/********* work ***********************************************/
void show_ADJ()
{
if(ADJ_LED_bz==1) {
make_data_ld(ADJ_data[0],1);
data_ld[16]=0;
if(OCV_bz==0) VIQ_LED(1,1);
else VIQ_LED(2,1);
}
else if(ADJ_LED_bz==2) {
make_data_ld(ADJ_data[1],2);
data_ld[16]=0;
if(CCV_bz==0) VIQ_LED(3,1);
else VIQ_LED(4,1);
}
else if(ADJ_LED_bz==3) {
make_data_ld(ADJ_data[2],3);
data_ld[16]=0;
if(CCI_bz==0) VIQ_LED(5,1);
else VIQ_LED(6,1);
}
else {
data_ld[16]=0;
}
}
void show_SET()
{
if(VIQ_LED_bz==1) {
make_data_ld(LOW_LIMIT[0],1);
data_ld[16]=0;
VIQ_LED(1,1);
}
else if(VIQ_LED_bz==3) {
make_data_ld(LOW_LIMIT[1],2);
data_ld[16]=0;
VIQ_LED(3,1);
}
else if(VIQ_LED_bz==5) {
make_data_ld(LOW_LIMIT[2],3);
data_ld[16]=0;
VIQ_LED(5,1);
}
else if(VIQ_LED_bz==2) {
make_data_ld(HIGH_LIMIT[0],1);
data_ld[16]=0;
VIQ_LED(2,1);
}
else if(VIQ_LED_bz==4) {
make_data_ld(HIGH_LIMIT[1],2);
data_ld[16]=0;
VIQ_LED(4,1);
}
else if(VIQ_LED_bz==6) {
make_data_ld(HIGH_LIMIT[2],3);
data_ld[16]=0;
VIQ_LED(6,1);
}
else {
data_ld[16]=0;
}
}
void show_SEL()
{
if(OCV_bz==1) {
make_data_ld(0,1);
VIQ_LED(1,0);
VIQ_LED(2,1);
}
else {
make_data_ld(10000,1);
VIQ_LED(1,1);
VIQ_LED(2,0);
}
if(CCV_bz==1) {
make_data_ld(0,2);
VIQ_LED(3,0);
VIQ_LED(4,1);
}
else {
make_data_ld(10000,2);
VIQ_LED(3,1);
VIQ_LED(4,0);
}
if(CCI_bz==1) {
make_data_ld(0,3);
VIQ_LED(5,0);
VIQ_LED(6,1);
}
else {
make_data_ld(10000,3);
VIQ_LED(5,1);
VIQ_LED(6,0);
}
}
void VIQ_LED(char cha,char bz)
{unsigned char dat;
if(cha<1||cha>8) dat=0;
else {
cha-=1;
dat=powt(2,cha);
data_ld[16]|=dat;
if(bz==0)
data_ld[16]-=dat;
}
/* data_ld[16]=0x10; */
}
void LED_on(char bz)
{
U6_data|=0x0f; /* 4 LEDs off : bz=0 */
if(bz==1) {
U6_data-=0x01; /* TEST-LED lights */
}
else if(bz==2) {
U6_data-=0x02; /* SEL-LED lights */
}
else if(bz==3) {
U6_data-=0x04; /* SET-LED lights */
}
else if(bz==4) {
U6_data-=0x08; /* ADJ-LED lights */
}
P0=U6_data;
LED_on_bz=1;
T1=1;
dlys();
T1=0;
LED_on_bz=0;
dlyss();
}
void bell(unsigned char tim)
{
U6_data|=0xc0;
P0=U6_data;
LED_on_bz=1;
T1=1;
dlys();
T1=0;
LED_on_bz=0;
dly(tim);
U6_data-=0xc0;
P0=U6_data;
LED_on_bz=1;
T1=1;
dlys();
T1=0;
LED_on_bz=0;
dlyss();
}
char get_key1(char tim)
{unsigned int dat;
P1_data&=0x1f;
P1_data|=0x60; /* F1 key */
P1=P1_data;
dlyss();
dat=average_l(tim)/5;
P1_data|=0xe0;
P1_data-=0x20;
P1=P1_data;
if(dat<20) dat=1;
else dat=0;
return(dat);
}
char get_key2(char tim)
{unsigned char dat;
P1_data&=0x1f;
P1_data|=0x60; /* F1 key */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -