Добавил:
ktotogdetotam
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:БЭМЗ полищук доки / mogilev yst / ce4_10_5 / Meas_uip
.c/*дгЄжЁп Ё§¬ҐаҐЁп ¬®й®бвЁ, Їа殮Ёп Ё в®Є –ќ7004M
Copyright (C) ЃҐ«Ё«мЁЄ®ў ‚.„. 30.12.2003, 03.2006*/
/*Ї®¤Є«о票Ґ § Ј®«®ўЄ®ў ўгв२е ॣЁбва®ў 80‘32*/
#include <io51.h>
/*Ї®¤Є«о票Ґ § Ј®«®ўЄ®ў ЎЁЎ«Ё®вҐзле дгЄжЁ©*/
#include <stdlib.h>
#include <math.h>
extern unsigned char num_key(void);
extern void out_size(float);
extern void delayi(unsigned char);
/*®ЇаҐ¤Ґ«ҐЁҐ ¤аҐб®ў гбва®©бвў ўў®¤ -ўлў®¤ */
#define tim_chan0 (*(char*) 0x010000) /*бзҐв Ё¬Їг«мб®ў ЏЌ—*/
#define tim_chan2 (*(char*) 0x010002) /*¤Ґ«ҐЁҐ Ё¬Ї. ЏЌ—*/
/*®ЇаҐ¤Ґ«ҐЁҐ вЁЇ ЇҐаҐ¬Ґле*/
unsigned char number;
extern unsigned char counts1; /*бзҐвзЁЄ ०Ё¬®ў*/
extern unsigned char counts2; /*бзҐвзЁЄ ЇаҐ¤Ґ«®ў Ї® в®Єг*/
extern unsigned char tim_hi_old;
extern unsigned char tim_low_old;
extern unsigned char tim_hi_new;
extern unsigned char tim_low_new;
unsigned int buf_int;
unsigned int tim_old;
unsigned int tim_new;
unsigned int qnt_imp;
float size;
extern unsigned char mode;
extern unsigned char cnt_wait; /*бзҐвзЁЄ ўаҐ¬ҐЁ ®¦Ё¤ Ёп Ё¬Їг«мб®ў ®в Ї®ўҐа. бзҐвз. Ё«Ё ўаҐ¬п Ё§¬ҐаҐЁп ў ०Ё¬Ґ а Ў®вл ў б®бв ўҐ гбв ®ўЄЁ*/
extern unsigned char i;
extern float n_div_st;
extern unsigned int n_div_st_int;
unsigned long buf_lng;
extern unsigned char m_data[5];
void meas_uip(void)
{
beg_meas_uip:
if(counts1==1)
{
P1.2=1; /*ўЄ«о票Ґ ०Ё¬ P*/
P1.3=1;
}
if(counts1==2)
{
P1.2=1; /*ўЄ«о票Ґ ०Ё¬ U*/
P1.3=0;
}
if(counts1==3)
{
P1.2=0; /*ўЄ«о票Ґ ०Ё¬ I*/
P1.3=1;
}
if(mode==0xff) /*Ґб«Ё ўв®®¬л© ०Ё¬*/
{
P1.6=0; /*०Ё¬ б ¤Ґ«. з бв®вл Ї®ўҐа. бзҐвз., ЎҐ§ ¤Ґ«. Ё¬Ї. ЏЌ—*/
P1.7=1;
n_div_st_int=1;
}
else
{
if(cnt_wait<=4)
{
P1.6=1; /*०Ё¬ ЎҐ§ ¤Ґ«. з бв®вл Ї®ўҐа. бзҐвз., ЎҐ§ ¤Ґ«. Ё¬Ї. ЏЌ—*/
P1.7=1;
n_div_st_int=1;
}
else
{
P1.6=1; /*०Ё¬ б ¤Ґ«. Ё¬Ї. ЏЌ—, ЎҐ§ ¤Ґ«. з бв®вл Ї®ўҐа. бзҐвз.*/
P1.7=0;
/*а ббзЁв Ґ¬ Є®ндд. ¤Ґ«ҐЁп Ё¬Ї. ЏЌ—*/
n_div_st=2;
while((cnt_wait*11000/n_div_st)>50000)n_div_st=n_div_st+1;
if(n_div_st>65535.0)n_div_st_int=0xffff;
else n_div_st_int=(unsigned int)n_div_st;
/*Їа®Ја ¬¬Ёа®ў ЁҐ в ©¬Ґа ¤Ґ«ҐЁп Ё¬Їг«мб®ў ЏЌ—*/
tim_chan2=(unsigned char)n_div_st_int;
tim_chan2=(unsigned char)(n_div_st_int>>8);
}
}
i=cnt_wait+1;
flg.4=1; /*гбв ®ўЄ д« Ј ЇҐаў®Ј® Ё§¬ҐаҐЁп*/
flg.2=0; /*бЎа®б д« Ј ЁвҐаў «м®Ј® в ©¬Ґа */
P1.5=0; /*бв®Ї в ©¬Ґа ЏЌ—*/
TR0=0; /*бв®Ї ЁвҐаў «м®Ј® в ©¬Ґа */
tim_chan0=0xff; /*®Ўг«ҐЁҐ в ©¬Ґа ЏЌ—*/
tim_chan0=0xff; /*®Ўг«ҐЁҐ в ©¬Ґа ЏЌ—*/
TH0=0xc8; /*§ Јаг§Є ЁвҐаў « 0.995517 ᥪ.(256-56=200)*/
TL0=0xc8; /*ў ЁвҐаў «мл© в ©¬Ґа (200d=C8h)(Ї® Єў ажг)*/
TR0=1; /*ЇгбЄ ЁвҐаў «м®Ј® в ©¬Ґа */
P1.5=1; /*ЇгбЄ в ©¬Ґа ЏЌ—*/
ET0=1; /*а §аҐиҐЁҐ ЇаҐалў Ё© ®в ЁвҐаў «м®Ј® в ©¬Ґа */
wait_irqt1:
if(flg.2==0)goto wait_irqt1; /*®¦Ё¤ ЁҐ ЇаҐа. ®в ЁвҐаў. в ©¬Ґа */
flg.2=0; /*бЎа®б д« Ј ЁвҐаў «м®Ј® в ©¬Ґа */
if(flg.4==1) /*ў®§ўа в ЇаЁ ЇҐаў®¬ Ё§¬ҐаҐЁЁ*/
{
flg.4=0;
goto wait_irqt1;
}
if(i==0)goto calc_rezults;
else goto wait_irqt1;
calc_rezults:
/*®ЇаҐ¤Ґ«ҐЁҐ а §®бвЁ з «м®Ј® Ё Є®Ґз®Ј® § 票© в ©¬Ґа ,
в.Ґ. Є®«ЁзҐбвў Ё¬Їг«мб®ў ®Ўа. бзҐвзЁЄ ®Є® Ё§¬ҐаҐЁп */
buf_int=((unsigned int)tim_hi_old)<<8; /*®ЇаҐ¤Ґ«ҐЁҐ з «м®Ј® § 票п*/
tim_old=(unsigned int)tim_low_old;
tim_old=buf_int|tim_old;
buf_int=((unsigned int)tim_hi_new)<<8; /*®ЇаҐ¤Ґ«ҐЁҐ Є®Ґз®Ј® § 票п*/
tim_new=(unsigned int)tim_low_new;
tim_new=buf_int|tim_new;
if(tim_old>=tim_new)qnt_imp=tim_old-tim_new; /*ўлзЁб«ҐЁҐ Є®«-ў Ё¬Ї.*/
else qnt_imp=(0xffff-tim_new)+tim_old+1;
/*Ї®Їа ўЄ ¤¤ЁвЁўго Ї®ЈаҐи®бвм*/
if(qnt_imp>=6)size=(float)qnt_imp;
else size=0;
if(counts1==1)
{
if(counts2==0)size=0.001*(size*n_div_st_int)/(cnt_wait*0.995517);
if(counts2==1)size=0.01*(size*n_div_st_int)/(cnt_wait*0.995517);
if(counts2==2)size=0.1*(size*n_div_st_int)/(cnt_wait*0.995517);
if(counts2==3)size=(size*n_div_st_int)/(cnt_wait*0.995517); /*ўлзЁб«. ¬®й®бвЁ*/
}
if(counts1==2)size=2.09619*sqrt((size*n_div_st_int)/(cnt_wait*0.995517)); /*ўлзЁб«. Їа殮Ёп*/
if(counts1==3)
{ if(counts2==0)size=0.00047711*sqrt((size*n_div_st_int)/(cnt_wait*0.995517)); if(counts2==1)size=0.0047711*sqrt((size*n_div_st_int)/(cnt_wait*0.995517)); if(counts2==2)size=0.047711*sqrt((size*n_div_st_int)/(cnt_wait*0.995517)); if(counts2==3)size=0.47711*sqrt((size*n_div_st_int)/(cnt_wait*0.995517));
/*ўлзЁб«. в®Є */
}
out_size(size); /*ўлў®¤ Їа殮Ёп, в®Є Ё«Ё ¬®й®бвЁ Ё¤ЁЄ в®а*/
i=cnt_wait;
/*Їа®ўҐаЁ¬ § Їа®б ®в Є« ўЁ вгал Ё ®в ЁвҐа䥩б */
if(mode==0xff) /*Ґб«Ё ўв®®¬л© ०Ё¬*/
{
EX0=1;
if(flg.0==1)
{
number=num_key();
if(number==1)
{
counts1=counts1+1; /*бзҐвзЁЄ ०Ё¬®ў*/
if(counts1>3)counts1=1;
switch(counts1){
case 1 :
{
ind5.5=0;
ind5.0=1;
ind5.1=1;
}
break;
case 2 :
{
ind5.5=1;
ind5.0=0;
ind5.1=1;
}
break;
case 3 :
{
ind5.5=1;
ind5.0=1;
ind5.1=0;
}
break;
}
goto beg_meas_uip;
}
if(number==2)
{
counts2=counts2+1; /*бзҐвзЁЄ ЇаҐ¤Ґ«®ў Ї® в®Єг*/
if(counts2>3)counts2=0;
switch(counts2){
case 0 :
{
ind5.2=1;
ind5.3=1;
ind5.4=1;
ind5.7=0;
}
break;
case 1 :
{
ind5.2=0;
ind5.3=1;
ind5.4=1;
ind5.7=1;
}
break;
case 2 :
{
ind5.2=1;
ind5.3=0;
ind5.4=1;
ind5.7=1;
}
break;
case 3 :
{
ind5.2=1;
ind5.3=1;
ind5.4=0;
ind5.7=1;
}
break;
}
goto beg_meas_uip;
}
if(number==3)
{
counts1=1;
ind5.0=1;
ind5.1=1;
ind5.5=0;
ind5.6=0;
return;
}
}
EX0=0;
goto wait_irqt1; /*Ґб«Ё ўв®®¬л© ०Ё¬*/
}
else
{
if(RI==0)goto wait_irqt1;
number=SBUF;
RI=0;
if(number==0x30)
{
TR0=0; /*бв®Ї ЁвҐаў «м®Ј® в ©¬Ґа */
ET0=0; /*§ ЇаҐв ЇаҐалў Ё© ®в ЁвҐаў «м®Ј® в ©¬Ґа */
return;
}
if(number==0x31)
{
buf_lng=(long)(size*100000.0);
m_data[0]=(char)buf_lng;
m_data[1]=(char)(buf_lng>>8);
m_data[2]=(char)(buf_lng>>16);
m_data[3]=(char)(buf_lng>>24);
delayi(5);
/*ўлў®¤ १г«мв в®ў Ё§¬ҐаҐЁп ў PC*/
TI=0;
for(i=0;i<=3;i++)
{
SBUF=m_data[i];
put_data1:
if(TI==0)goto put_data1;
TI=0;
delayi(1);
}
i=cnt_wait;
goto wait_irqt1;
}
}
}
Соседние файлы в папке ce4_10_5