Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
21.12.2020
Размер:
8.63 Кб
Скачать
/*”г­ЄжЁп гЇа ў«Ґ­Ёп €”Њ ЊЉ7007Ѓ 2009Ј.*/
		 /*Ї®¤Є«о祭ЁҐ § Ј®«®ўЄ®ў ў­гв७­Ёе ॣЁбва®ў 80‘31*/
#include <io51.h>
         /*Ї®¤Є«о祭ЁҐ § Ј®«®ўЄ®ў ЎЁЎ«Ё®вҐз­ле дг­ЄжЁ©*/
#include <stdlib.h>

extern  void delayi(char);           /*§ ¤Ґа¦Є  б Єў ­в®¬ 10¬б*/
extern  void delay1(char);           /*§ ¤Ґа¦Є  б Єў ­в®¬ 1б*/
extern  void loadcwu(void);          /*§ Јаг§Є  гЇа.б«®ў  ५Ґ U*/
extern  void loadcwi(void);          /*§ Јаг§Є  гЇа.б«®ў  ५Ґ I*/
extern  void loadfreq(char);         /*§ Јаг§Є  з бв®вл ᨭ⥧ в®а®ў*/
extern  void loadphase(char);        /*§ Јаг§Є  д §л ᨭ⥧ в®а®ў*/
/*Ї®¤Їа.ўЄ«. ­ Їа.,в®Є */
extern  void sw_on_u(float,float,float,char);
extern  void sw_on_i(float,float,float,char);

         /*®ЇаҐ¤Ґ«Ґ­ЁҐ  ¤аҐб®ў гбва®©бвў ўў®¤ -ўлў®¤ */
#define wrled_rdk1     (*(char*) 0x014800) /*§ ЇЁбм ў ॣЁбва ᢥ⮤Ё®¤®ў
                                            Ё з⥭ЁҐ 1-Ј® Ў ©в  Є« ўЁ вгал*/
#define wrreg_rdk2     (*(char*) 0x015000) /*§ ЇЁбм ў ॣЁбва гЇа ў«Ґ­Ёп 
                                            Ё з⥭ЁҐ 2-Ј® Ў ©в  Є« ўЁ вгал*/


/*®ЇЁб ­ЁҐ ЇҐаҐ¬Ґ­­ле*/
extern unsigned int voltage;
extern float volt_old;
extern float volt_new;
float lim_volt;
extern float current;
float curr_new;
float curr_old;
float lim_curr;
float l_curr_old;
extern float frequency;
extern unsigned int fi;
float fi_old;
float setfi;
extern unsigned char flag_stop;
extern unsigned char flag_prg;
extern unsigned char flag_fun;
extern unsigned char i;
extern unsigned char j;
extern unsigned char k;
extern unsigned char ireg_led;
extern unsigned char start_stop;
extern unsigned char sw_u;
extern unsigned char sw_i;
unsigned char old_faze_i;
extern unsigned char number;
extern float m_cor_flt[81];
unsigned long delta_phase;
unsigned int phase_shift;

void contr_ifm(void)
{

		 		 if(start_stop==1) goto start;
				 goto stop;
/*­ зЁ­ Ґвбп д®а¬Ёа®ў ­ЁҐ гЇа ў«пойЁе б«®ў*/
start:
				 if(flag_stop==0)goto sw_volt;

/*ўЄ«о祭ЁҐ ­ Їа殮­Ёп*/
	if(sw_u==0)cwu0.0=0;else cwu0.0=1;
	loadcwu();

/*ўлЄ«о祭ЁҐ ЈҐ­Ґа жЁЁ бЁ­гб®Ё¤*/
      TR2=0;

/*Їа®Ја ¬¬Ёа®ў ­ЁҐ з бв®вл*/
         delta_phase=(long)(20615.843*frequency/m_cor_flt[8]);
         loadfreq(0x01);
         loadfreq(0x10);
/*гбв ­®ўЄ  гЈ«®ў б¤ўЁЈ  бЁ­гб®Ё¤л ­ Їа殮­Ёп*/
         phase_shift=0;
         loadphase(0x01);        
/*ўЄ«о祭ЁҐ в®Є */
	if(sw_i==0)cwi0.2=0;else cwi0.2=1;
      if(current<0.001)
        {
          cwi0.2=0;
          current=0.001;
        }
sw_current:
/*ЇҐаҐЄ«о祭ЁҐ ЇаҐ¤Ґ«®ў Ї® в®Єг*/
if(current<=0.00605)
{cwi0.7=1;cwi0.3=0;cwi0.4=0;cwi0.5=0;cwi0.6=0;cwi1.4=0;cwi1.5=0;cwi1.0=1;
lim_curr=0.006;i=9;}
if(current>0.00606&&current<=0.06005)
{cwi0.7=1;cwi0.3=0;cwi0.4=0;cwi0.5=0;cwi0.6=0;cwi1.4=0;cwi1.5=0;cwi1.0=0;
lim_curr=0.06;i=11;}
if(current>0.06006&&current<=0.60005)
{cwi0.7=0;cwi0.3=0;cwi0.4=1;cwi0.5=0;cwi0.6=1;cwi1.4=0;cwi1.5=0;cwi1.0=0;
lim_curr=0.6;i=13;}
if(current>0.60006&&current<=6.00005)
{cwi0.7=0;cwi0.3=0;cwi0.4=1;cwi0.5=1;cwi0.6=0;cwi1.4=0;cwi1.5=0;cwi1.0=0;
lim_curr=6.0;i=15;}
if(current>6.00006&&current<=12.0005)
{cwi0.7=0;cwi0.3=0;cwi0.4=1;cwi0.5=0;cwi0.6=0;cwi1.4=1;cwi1.5=0;cwi1.0=0;
lim_curr=12.0;i=17;}
if(current>12.0006&&current<=60.0005)
{cwi0.7=0;cwi0.3=1;cwi0.4=1;cwi0.5=0;cwi0.6=0;cwi1.4=0;cwi1.5=0;cwi1.0=0;
lim_curr=60.0;i=19;}
	loadcwi();
/*гбв ­®ўЄ  гЈ«®ў б¤ўЁЈ  бЁ­гб®Ё¤л в®Є */
         if(m_cor_flt[i+1]==1)
            {
              setfi=(360-fi+180)+m_cor_flt[i];
              while(setfi>=360.0)setfi=setfi-360.0;
            }
         else 
            {
              setfi=(360-fi+180)-m_cor_flt[i];
              while(setfi>=360.0)setfi=setfi-360.0;
            }
         phase_shift=(int)(setfi/360*4095);
         loadphase(0x10);

fi_old=fi;

/*ўЄ«о祭ЁҐ ЈҐ­Ґа жЁЁ бЁ­гб®Ё¤*/
      TR2=1;

/*ЇаҐ¤ў аЁвҐ«м­л© Їг᪠ᨭ⥧ в®а®ў Ї®б«Ґ б­пвЁп ®Ї®а­®Ј® ­ Їа殮­Ёп*/
  sw_on_u(264,0,264,1);
  sw_on_u(0,264,264,1);
  sw_on_i(60,0,60,1);
  sw_on_i(0,60,60,1);                      

sw_volt:
if(old_faze_i==0)
{
  sw_on_i(60,0,60,1);
  sw_on_i(0,60,60,1);                      
}
/*бЎа®б § йЁвл гбЁ«ЁвҐ«Ґ© ­ Їа殮­Ёп*/
		cwu0.3=1;loadcwu();
		delayi(4);
		cwu0.3=0;loadcwu();
/*ўлЄ«о祭ЁҐ Ў«®ЄЁа®ўЄЁ гбЁ«ЁвҐ«Ґ© ­ Їа殮­Ёп*/
	    cwu0.5=1;loadcwu();
	    delayi(4);
/*ўЄ«о祭ЁҐ ­ Їа殮­Ёп*/
   		volt_new=(float)voltage;
		sw_on_u(volt_new,volt_old,lim_volt,20);
		volt_old=volt_new;
/*бЎа®б § йЁвл гбЁ«ЁвҐ«Ґ© в®Є */
		cwi1.2=1;loadcwi();

if(current==0.02)goto block_prot;  /*Ў«®ЄЁа®ўЄ  § йЁвл ¤«п Їа®§ў®­ */
		delayi(4);
		cwi1.2=0;loadcwi();

block_prot:
if(cwi0.2==0)goto no_curr;

/*ўлЄ«о祭ЁҐ Ў«®ЄЁа®ўЄЁ гбЁ«ЁвҐ«Ґ© в®Є */
	    cwi1.3=1;loadcwi();
	    delayi(4);
no_curr:
/*ўЄ«о祭ЁҐ в®Є */
		l_curr_old=lim_curr;
if((lim_curr==60.0)&&(current<=12.0005)&&(flag_stop==0))goto stop_curr_sw_lim;
if((lim_curr==12.0)&&(current<=6.00005)&&(flag_stop==0))goto stop_curr_sw_lim;
if((lim_curr==12.0)&&(current>12.0006)&&(flag_stop==0))goto stop_curr_sw_lim;
if((lim_curr==6.0)&&(current<=0.60005)&&(flag_stop==0))goto stop_curr_sw_lim;
if((lim_curr==6.0)&&(current>6.00006)&&(flag_stop==0))goto stop_curr_sw_lim;
if((lim_curr==0.6)&&(current<=0.06005)&&(flag_stop==0))goto stop_curr_sw_lim;
if((lim_curr==0.6)&&(current>0.60006)&&(flag_stop==0))goto stop_curr_sw_lim;
if((lim_curr==0.06)&&(current>0.06006)&&(flag_stop==0))goto stop_curr_sw_lim;
if((lim_curr==0.06)&&(current<=0.00605)&&(flag_stop==0))goto stop_curr_sw_lim;
if((lim_curr==0.006)&&(current>0.00606)&&(flag_stop==0))goto stop_curr_sw_lim;

if((old_faze_i!=sw_i)&&(flag_stop==0))goto stop_curr_sw_lim;

if((fi_old!=fi)&&(flag_stop==0))goto stop_curr_sw_lim;

goto start_curr;

stop_curr_sw_lim:
               /*ўлЄ«о祭ЁҐ в®Є */
		       curr_new=0;
		       sw_on_i(curr_new,curr_old,l_curr_old,20);
		       curr_old=0;
		       delay1(2);
               /*ўЄ«о祭ЁҐ Ў«®ЄЁа®ўЄЁ гбЁ«ЁвҐ«Ґ© в®Є */
		       cwi1.3=0;loadcwi();
	           delayi(4);
               /*ўЄ«о祭ЁҐ в®Є */
	           if(sw_i==0)cwi0.2=0;else cwi0.2=1;
                 if(current<0.001)
                   {
                    cwi0.2=0;
                    current=0.001;
                   }
               /*ЇҐаҐЄ«о祭ЁҐ ЇаҐ¤Ґ«®ў Ї® в®Єг*/
if(current<=0.00605)
{cwi0.7=1;cwi0.3=0;cwi0.4=0;cwi0.5=0;cwi0.6=0;cwi1.4=0;cwi1.5=0;cwi1.0=1;
lim_curr=0.006;i=9;}
if(current>0.00606&&current<=0.06005)
{cwi0.7=1;cwi0.3=0;cwi0.4=0;cwi0.5=0;cwi0.6=0;cwi1.4=0;cwi1.5=0;cwi1.0=0;
lim_curr=0.06;i=11;}
if(current>0.06006&&current<=0.60005)
{cwi0.7=0;cwi0.3=0;cwi0.4=1;cwi0.5=0;cwi0.6=1;cwi1.4=0;cwi1.5=0;cwi1.0=0;
lim_curr=0.6;i=13;}
if(current>0.60006&&current<=6.00005)
{cwi0.7=0;cwi0.3=0;cwi0.4=1;cwi0.5=1;cwi0.6=0;cwi1.4=0;cwi1.5=0;cwi1.0=0;
lim_curr=6.0;i=15;}
if(current>6.00006&&current<=12.0005)
{cwi0.7=0;cwi0.3=0;cwi0.4=1;cwi0.5=0;cwi0.6=0;cwi1.4=1;cwi1.5=0;cwi1.0=0;
lim_curr=12.0;i=17;}
if(current>12.0006&&current<=60.0005)
{cwi0.7=0;cwi0.3=1;cwi0.4=1;cwi0.5=0;cwi0.6=0;cwi1.4=0;cwi1.5=0;cwi1.0=0;
lim_curr=60.0;i=19;}

	           loadcwi();
/*гбв ­®ўЄ  гЈ«®ў б¤ўЁЈ  бЁ­гб®Ё¤л в®Є */
         if(m_cor_flt[i+1]==1)
            {
              setfi=(360-fi+180)+m_cor_flt[i];
              while(setfi>=360.0)setfi=setfi-360.0;
            }
         else 
            {
              setfi=(360-fi+180)-m_cor_flt[i];
              while(setfi>=360.0)setfi=setfi-360.0;
            }
         phase_shift=(int)(setfi/360*4095);
         loadphase(0x10);

fi_old=fi;


		     delay1(2);
		       l_curr_old=lim_curr;
                    if(cwi0.2==0)goto start_curr;
               /*ўлЄ«о祭ЁҐ Ў«®ЄЁа®ўЄЁ гбЁ«ЁвҐ«Ґ© в®Є */
	           cwi1.3=1;loadcwi();
	           delayi(4);
start_curr:
   		curr_new=current;
		sw_on_i(curr_new,curr_old,l_curr_old,20);
		curr_old=curr_new;

		if(flag_stop==0) goto end_start;

		delay1(2);

end_start:
			ireg_led=0xfb;
	        wrled_rdk1=ireg_led; /*ўЄ«озЁвм ᢥ⮤Ё®¤ "Џ“‘Љ"*/
              old_faze_i=cwi0.2;

		  flag_stop=0;
		  return;

stop:
/*ўлЄ«о祭ЁҐ в®Є */
		curr_new=0;
		sw_on_i(curr_new,curr_old,l_curr_old,20);
		curr_old=0;
/*ўЄ«о祭ЁҐ Ў«®ЄЁа®ўЄЁ гбЁ«ЁвҐ«Ґ© в®Є */
		 cwi1.3=0;loadcwi();
	     delayi(4);
/*ўлЄ«о祭ЁҐ ­ Їа殮­Ёп*/
		volt_new=0;
		sw_on_u(volt_new,volt_old,lim_volt,20);
		volt_old=0;
/*ўЄ«о祭ЁҐ Ў«®ЄЁа®ўЄЁ гбЁ«ЁвҐ«Ґ© ­ Їа殮­Ёп*/
	    cwu0.5=0;loadcwu();
	    delayi(4);

	ireg_led=0xf7;
	wrled_rdk1=ireg_led; /*ўЄ«озЁвм ᢥ⮤Ё®¤ "‘’ЋЏ"*/
	flag_stop=1;
	return;
}
Соседние файлы в папке МК7007БМ
  • #
    21.12.2020215 б0BIN_BCD.R03
  • #
    21.12.20201.16 Кб0BIN_BCD.S03
  • #
    21.12.2020234 б0BIN_BCD1.R03
  • #
    21.12.20201.39 Кб0BIN_BCD1.S03
  • #
    21.12.202077.82 Кб0CL8051C.R03
  • #
    21.12.20208.63 Кб0CONTR_IF.C
  • #
    21.12.20209.21 Кб0CONTR_IF.R03
  • #
    21.12.20205.53 Кб0COR.C
  • #
    21.12.20203.78 Кб0COR.R03
  • #
    21.12.2020870 б0CSTARTUP.R03
  • #
    21.12.20208.64 Кб0CSTARTUP.S03