Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
21.12.2020
Размер:
7.16 Кб
Скачать
/*дг­ЄжЁп Ё§¬ҐаҐ­Ёп ¬®й­®бвЁ, ­ Їа殮­Ёп Ё в®Є  –ќ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