⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yangtao.c

📁 机械产品控制器
💻 C
📖 第 1 页 / 共 2 页
字号:
        i=key_in();
	if(key_bit_press){
		switch(i){
                        case key_prog:
                             prog_sub();
                             break;
			case  key_sel:
				sel_sub();
				break;
			case key_enter:
				enter_sub();
				break;
			case key_esc:
				esc_sub();
				break;
			case key_up:
				up_sub();
				break;
			case key_down:
				down_sub();
				break;
                        case 0: break;
			default:
                                key_number_sub(i);
			}
		}
}

//------------------------------------------------
//   write all data
//------------------------------------------------

void write_sub(void)
{
		unsigned char i,j;
        if(en_bit_write) {
             if(xh_bit)         j=128;
             else               j=0;
             for(i=0;i<16;i++){
                          EA=0;
                          Write24c02(&(gg_2401_ram[i*8]),i*8+j,8);
                          EA=1;
                          delay();
                          }
             en_bit_write=0;
             }
}

//----------------------------------------------------
//             ex0_int
//----------------------------------------------------
void    init_ex0(void)
{
        IP=0x05;                // ex0 ex1 high interrupt
        EX0=1;                  // enable EX0, interrupt
        IT0=1;                  // edge falling
}

void   ex0_int(void) interrupt 0 using 2
{
        unsigned char i,j;
        if(gx_ram)  return;
        if(!start_bit_stop)    return;
        if(gx_ram==0){
               j=0;
               for(i=0;i<20;i++)   {  if(!signal_1)  j++;   }
               if(j>15)   input_1=1;
               else       input_1=0;
               input_2=0;
             }
        else   input_1=0;

}


void    init_ex1(void)
{
        IP=0x5;
        EX1=1;
        IT1=1;
}

void    ex1_int(void)   interrupt 2 using 3
{
        unsigned char i,j;
        if(!gx_ram)   return;
        if(!start_bit_stop)     return;
        if(gx_ram){
               j=0;
               for(i=0;i<20;i++)  {   if(!signal_2)   j++;   }
               if(j>15)           input_2=1;
               else               input_2=0;
               }
         else  input_2=0;
}


//----------------------------------------------------
//----------------------------------------------------
void    close_relay(void)
{
        r_45=1;
        r_67=1;
        r_1456=1;
        r_220v=1;
        led_light=1;
        start_bit_stop=0;			// for add
}

void    zs_dec(void)
{
        if(zs_ram_0)    zs_ram_0--;
        else  {
               zs_ram_0=99;
               zs_ram_1--;
               }
}

void rx_work_sub(void)
{
        if(gx_ram==0) {
            r_45=0;
            r_67=1;
            if(fx_ram)  r_1456=0;       //
            else        r_1456=1;       //
            if(input_1) {
                  input_1=0;
                  zs_dec();
                  if((zs_ram_0==0)&&(zs_ram_1==0))    close_relay();
                  }
            }
         else {
            r_45=0;
            r_67=0;
            if(fx_ram)  r_1456=0;
            else        r_1456=1;
            if(input_2) {
                 input_2=0;
                 zs_dec();
                 if((zs_ram_0==0)&&(zs_ram_1==0))     close_relay();
                 }
            }
}

void bz_work_sub(void)
{
        if(gx_ram==0){
              r_45=0;
              r_67=0;
              if(fx_ram)  r_1456=1;
              else        r_1456=0;
              if(input_1){
                        input_1=0;
                        zs_dec();
                        if((zs_ram_0==0)&&(zs_ram_1==0))  en_bit_220v=1;
                        }
            }
        else{
              r_45=0;
              r_67=0;
              if(fx_ram)    r_1456=0;
              else          r_1456=1;
              if(input_2)   {
                         input_2=0;
                         zs_dec();
                         if((zs_ram_0==0)&&(zs_ram_1==0)) close_relay();
                         }
              }
}

void start_stop_sub(void)
{
unsigned  char i;
//            key_start_deal
	if(start_bit_stop){
                if(zs_ram_0||zs_ram_1){
                        led_light=0;
                        if(xh_bit)  rx_work_sub();
                        else        bz_work_sub();
                        }
                 else  {
                        i=gg_ram*20+2;
                        if((gg_2401_ram[i]==0)&&(gg_2401_ram[i+1]==0))  start_bit_stop=0;
                        gx_ram++;
                        if(gx_ram==gx_max+1)    gx_ram=0;
                        canshu_deal();
                        if((zs_ram_0==0)&&(zs_ram_1==0)) {
                              gx_ram=0;
                              canshu_deal();
                              }
                         }
                 }
        else   close_relay();
}

void    control_220v(void)
{
        if(en_bit_220v){
              if(dms_220v>MAX_220V) {
                   r_220v=1;
                   en_bit_220v=0;
                    }
              else  r_220v=0;
              }
         else  dms_220v=0;
}

//------------------------------------------------
//   to interrupt display
//------------------------------------------------

void t0_int(void) interrupt 1 using 1
{
	unsigned char i;
	TH0=0xfc;
	TL0=0x18;
	dms1++;
        dis_bit=1;
	if(dms1==10) {
		dms1=0;
                add_bit=1;
                }

        if(gx_ram)  {
//                EX0=0;          // gx_ram!=0   signal_1 disable
//                IT0=0;
//                EX1=1;          //
//                IT1=1;
                input_1=0;
                }
        else    {

//                EX0=1;        // gx_ram==0;  signal_2 disable
//                IT0=1;
//                EX1=0;        //
//                IT1=0;
                input_2=0;
                }
        control_220v();         // control 220v out
 //     close display
        P2=P2|fx_close;
        P0=0xff;
        dis_w_enable=1;
        dis_w_enable=0;
        dis_d_enable=1;
        dis_d_enable=0;

//      enable wei
        i=dms1 ;
        if(i<8) {
             P2=P2|fx_close;      // no dis fx
             P0=dis_w_table[i];
             }
        else {
             P0=0xff;
             if(i==9) P2=P2&fx_0_dis;
             else     P2=P2&fx_1_dis;
             }
        dis_w_enable=1;
        dis_w_enable=0;

        i=dis_ram[dms1];
        P0=dis_d_table[i];
 	if((prog_bit|sel_bit)&&(dms100<5)) {
                i=dms1;
                if(gg_bit_flash)    P0=P0&gg_dis_table[i];
                if((zs_bit_flash)&&(dms1==key_number))    P0=P0&zs_dis_table[i];
		if(fx_bit_flash)    P0=P0&fx_dis_table[i];
		if(gx_bit_flash)    P0=P0&gx_dis_table[i];
		}
        dis_d_enable=1;
        dis_d_enable=0;
}

void time_add(void)
{
        if(!add_bit)     return;
        add_bit=0;
        dms10++;
        key_dms10++;
	start_stop_dms10++;
        dms_220v++;
	if(dms10==10){
		dms10=0;
		dms100++;
		if(dms100==10) dms100=0;
		}
//      judge key_start press
        if(prog_bit|sel_bit) return;
        if(!key_start_stop){             //
                if((!key_bit_start)&&(start_stop_dms10>10)) {
                        key_bit_start=1;
                        start_bit_stop=~start_bit_stop;
                        }
                 }
	else  {
              start_stop_dms10=0;         // no start press
              key_bit_start=0;
              }
}


//-----------------------------------------------------------
//-----------------------------------------------------------

void init_t0(void)
{
        TMOD=0x01;
        TH0=0xfc;
        TL0=0x18;
        ET0=1;
        TR0=1;
}


void init_sub(void)
{
        unsigned char i,j;
//      judge xinhao
        P3=0xff;
        P0=0xff;
        P2=0xff;
        P1=0xff;
        j=0;
        for(i=0;i<10;i++){
              delay();
              if(xh_sel)    j++;
              }
        if(j>6)    {
			  xh_bit=1;
			  j=128;
			  xh_ram_length=20,
			  gg_max=5;
			  gx_max=8;
			  }
        else       {
		          xh_bit=0;
			  j=0;
			  xh_ram_length=20;
			  gg_max=5;
			  gx_max=1;
			  }
	Read24c02(gg_2401_ram,j,128);

        gg_ram=0;
	gx_ram=0;
	fx_ram=gg_2401_ram[0]&0x80;
	zs_ram_0=gg_2401_ram[2];
	zs_ram_1=gg_2401_ram[3];
        close_relay();

//      close all dis
        P0=0xff;
        dis_w_enable=1;
        dis_w_enable=0;
        P2=P2|fx_close;
        dis_d_enable=1;
        dis_d_enable=0;
	init_t0();
        init_ex0();
        init_ex1();
	EA=1;
}


//-----------------------------------------------------
//-----------------------------------------------------

main()
{
    _nop_();
	_nop_();
		init_sub();
	for(;;)	{
	    key_deal();
		_nop_();
		_nop_();
        time_add();
		_nop_();
		_nop_();
        dis_ram_deal();
		_nop_();
		_nop_();
  	    start_stop_sub();
  		_nop_();
		_nop_();
        write_sub();
		_nop_();
		_nop_();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -