Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
21.12.2020
Размер:
5.35 Кб
Скачать
/*дг­ЄжЁп Ё§¬ҐаҐ­Ёп Ё ўлзЁб«Ґ­Ёп Ї®ЈаҐи­®бвЁ ¤«п Њ‚€Џ –“7016*/

         /*Ї®¤Є«о祭ЁҐ § Ј®«®ўЄ®ў ў­гв७­Ёе ॣЁбва®ў 80‘31*/
#include <io51.h>
         /*Ї®¤Є«о祭ЁҐ § Ј®«®ўЄ®ў ЎЁЎ«Ё®вҐз­ле дг­ЄжЁ©*/
#include <stdlib.h>

extern	void put_ind(void);
extern	void delayj(char);
extern	void delayi(char);
extern	void delay1(char);

		/*®ЇЁб ­ЁҐ ЇҐаҐ¬Ґ­­ле*/
extern unsigned int cnt_irq1;	/*бзҐвзЁЄ ЇаҐалў ­Ё© ®в Ї®ўҐа塞®Ј® бзҐвз.*/
unsigned int cnt_irqt0;    /*бзҐвзЁЄ ЇҐаҐЇ®«­. ЇаЁ Ї®¤бзҐвҐ Ё¬Ї. нв «. з бв®вл*/
unsigned int q_imp;  /*Є®«ЁзҐбвў® Ё¬Ї. гб।Ґ­Ёп ⥫Ґ¬ҐваЁЁ Ї®ў. бзҐвз.*/
extern unsigned long c_cnt;  /*Ї®бв®п­­ п Ї®ўҐа塞ле бзҐвзЁЄ®ў*/
unsigned int buf_hi;
unsigned int buf_low;
float pogr;
float c_obr_f;              /*Ї®бв®п­­ п нв «®­­®Ј® бзҐвзЁЄ  Ё¬Ї./Є‚в*з*/
float c_cnt_f;              /*Ї®бв®п­­ п Ї®ўҐа塞ле бзҐвзЁЄ®ў*/
float q_imp_f;              /*Є®«ЁзҐбвў® Ё¬Ї. гб।Ґ­Ёп ⥫Ґ¬ҐваЁЁ Ї®ў. бзҐвз.*/

unsigned char tim_low;
unsigned char tim_hi;
extern unsigned long c_obr; /*Ї®бв®п­­ п нв «®­­®Ј® бзҐвзЁЄ  Ё¬Ї./‚в*з*/
float w_obr;
float w_pov;
extern unsigned char flg_irq0;
extern unsigned char flg_irq1;
extern unsigned char flg_reg;
extern float period;
unsigned char period_ch;
unsigned char big_time;
extern unsigned char i;
extern unsigned int m;

float number_overflow;
float q_imp_clk;           /*Є®«ЁзҐбвў® Ё¬Їг«мб®ў нв «®­­®Ј® бзҐвзЁЄ */

void meas_pog(void)
{
if(contr_word==0x34||contr_word==0x35)
{
/*а бзҐв ўаҐ¬Ґ­Ё § ¤Ґа¦ЄЁ ¤«п Ї®¤ ў«Ґ­Ёп ¤аҐЎҐ§Ј  д®в®Ј®«®ўЄЁ*/
      if(period>2.55)
	{
       period_ch=(char)period;
	 big_time=2;
	}
	if(period<=2.55&&period>0.255)
	{
       period_ch=(char)(period*100.001);
	 big_time=1;
	}
	if(period<=0.255)
	{
       period_ch=(char)(period*1000.001);
       if(period_ch==0)period_ch=1;
	 big_time=0;
	}
period=period*0.0625;
      if(period>2.55)
	{
       i=(char)period;
	 m=2;
	}
	if(period<=2.55&&period>0.255)
	{
       i=(char)(period*100.001);
	 m=1;
	}
	if(period<=0.255)
	{
       i=(char)(period*1000.001);
       if(i==0)i=1;
	 m=0;
	}
}

beg_meas:
             P3.5=1;  /*бЎа®б § Їа®б  ЇаҐалў ­Ё© ®в Ї®ўҐа. бзҐвзЁЄ */
             P3.5=0;  /*а §аҐиҐ­ЁҐ ЇаҐалў ­Ё© ®в Ї®ўҐа. бзҐвзЁЄ */
	flg_irq0=0;
	flg_irq1=0;
	cnt_irq1=0;
      cnt_irqt0=0;
	       TR0=0;		     			/*бв®Ї в ©¬Ґа */
             TH0=0;
             TL0=0;
             ET0=1;
if(contr_word==0x34||contr_word==0x35)
 {
	 if(P3.3==0)
		 {
               P3.5=1;  /*бЎа®б § Їа®б  ЇаҐалў ­Ё© ®в Ї®ўҐа. бзҐвзЁЄ */
		   if(big_time==0)delayj(period_ch);
		   if(big_time==1)delayi(period_ch);
		   if(big_time==2)delay1(period_ch);
		 }
 }
 else
 {
       if(P3.3==0)
		 {
               P3.5=1;  /*бЎа®б § Їа®б  ЇаҐалў ­Ё© ®в Ї®ўҐа. бзҐвзЁЄ */
		   delayj(1);
		 }
 }
		 EX1=1;
             P3.5=0;  /*а §аҐиҐ­ЁҐ ЇаҐалў ­Ё© ®в Ї®ўҐа. бзҐвзЁЄ */
            
wait_1irq:
	if(flg_irq0==1)goto beg_meas;
	if(flg_irq1==0)goto wait_1irq;
             TR0=1;       /*ЇгбЄ в ©¬Ґа */             if(contr_word==0x34||contr_word==0x35)
           {
             if(m==0)delayj(i);
             if(m==1)delayi(i);
             if(m==2)delay1(i);
             P3.5=0;  /*а §аҐиҐ­ЁҐ ЇаҐалў ­Ё© ®в Ї®ўҐа. бзҐвзЁЄ */
             delayj(1);
             if(P3.3==1)
             {
               if(m==0)delayj(i);
               if(m==1)delayi(i);
               if(m==2)delay1(i);
               goto beg_meas;
             }
             else
		 {
               P3.5=1;  /*бЎа®б § Їа®б  ЇаҐалў ­Ё© ®в Ї®ўҐа. бзҐвзЁЄ */
		   if(big_time==0)delayj(period_ch);
		   if(big_time==1)delayi(period_ch);
		   if(big_time==2)delay1(period_ch);
		 }
           }
		 flg_irq1=0;
	       delayj(10);
		 EX1=1;
             P3.5=0;  /*а §аҐиҐ­ЁҐ ЇаҐалў ­Ё© ®в Ї®ўҐа. бзҐвзЁЄ */

wait_Nirq:
	if(flg_irq0==1)goto beg_meas;
	if(flg_irq1==0)goto wait_Nirq;
 	if(cnt_irq1<(q_imp+1))
	{
            if(contr_word==0x34||contr_word==0x35)
           {
	         if(big_time==0)delayj(period_ch);
		   if(big_time==1)delayi(period_ch);
		   if(big_time==2)delay1(period_ch);
            }
	     flg_irq1=0;
	     delayj(10);
	     EX1=1;
           P3.5=0;  /*а §аҐиҐ­ЁҐ ЇаҐалў ­Ё© ®в Ї®ўҐа. бзҐвзЁЄ */
	     goto wait_Nirq;
	}
	TR0=0;							/*бв®Ї в ©¬Ґа */
      tim_low=TL0;
      tim_hi=TH0;
      TH0=0;       /*ЇгбЄ в ©¬Ґа  ЇаЁ ॣ㫨஢ЄҐ*/
      TL0=0;
      TR0=1;
	cnt_irq1=1;
      EX1=1;
calc_pogr:
      number_overflow=(float)cnt_irqt0;
      cnt_irqt0=0;
	buf_hi=(int)tim_hi;buf_hi=buf_hi<<8;buf_low=(int)tim_low;
	buf_hi=buf_hi|buf_low;
	q_imp_clk=(float)buf_hi;
	c_obr_f=(float)c_obr;
	w_obr=(q_imp_clk+(number_overflow*65536))/c_obr_f;
      c_cnt_f=(float)c_cnt;
      q_imp_f=(float)q_imp;
	w_pov=q_imp_f*1000/c_cnt_f;
	pogr=((w_pov-w_obr)/w_obr)*100.0001;
	put_ind();      				/*ўлў®¤ १г«мв в®ў ­  Ё­¤ЁЄ жЁо*/
	if(flg_reg==0)goto end_meas_pog;
            if(contr_word==0x34||contr_word==0x35)
           {
	         if(big_time==0)delayj(period_ch);
		   if(big_time==1)delayi(period_ch);
		   if(big_time==2)delay1(period_ch);
           }
	     flg_irq1=0;
	     delayj(10);
	     EX1=1;
           P3.5=0;  /*а §аҐиҐ­ЁҐ ЇаҐалў ­Ё© ®в Ї®ўҐа. бзҐвзЁЄ */
	     goto wait_Nirq;
end_meas_pog:
		 return;
}
Соседние файлы в папке МВИП
  • #
    21.12.20201.06 Кб0GET_D1.R03
  • #
    21.12.20202.96 Кб0INI_MVIP.C
  • #
    21.12.20201.26 Кб0INI_MVIP.R03
  • #
    21.12.20202.84 Кб0IO51.H
  • #
    21.12.20202.05 Кб0LNK8051.XCL
  • #
    21.12.20205.35 Кб0MEAS_POG.C
  • #
    21.12.20203.98 Кб0MEAS_POG.R03
  • #
    21.12.2020135 б0MVIP.BAT
  • #
    21.12.20208.06 Кб0MVIP.C
  • #
    21.12.202033.22 Кб0MVIP.LST
  • #
    21.12.20205.17 Кб0MVIP.R03