Добавил:
ktotogdetotam
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:БЭМЗ полищук доки / mogilev yst / МВИП / MEAS_POG
.C/*дгЄжЁп Ё§¬ҐаҐЁп Ё ўлзЁб«ҐЁп Ї®ЈаҐи®бвЁ ¤«п Њ‚€Џ –“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;
}
Соседние файлы в папке МВИП