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

📄 yangtao.c

📁 机械产品控制器
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <reg52.h>
#include <stdio.h>
#include <intrins.h>
//#include <math.h>

#define fx_close        0x18
#define fx_0_dis        0xf7
#define fx_1_dis        0xef
#define MAX_220V        50

#define key_0 		1
#define key_1 		2
#define key_2 		3
#define key_3 		4
#define key_4 		5
#define key_5 		6
#define key_6 		7
#define key_7 		8
#define key_8 		9
#define key_9 		10
#define key_enter 	11
#define key_esc	  	12
#define key_sel	  	13
#define key_prog  	14
#define key_up		15
#define key_down  	16

//	#pragma src

extern void Read24c02(unsigned char idata *RamAddress,unsigned char RomAddress,unsigned char bytes);
extern void Write24c02(unsigned char idata *RamAddress,unsigned char RomAddress,unsigned char bytes);
extern unsigned char key_in(void);

#define BLACK		0x7F
#define UP              10
#define DOWN            11

#define dis_zs_0 dis_ram[0]
#define dis_zs_1 dis_ram[1]
#define dis_zs_2 dis_ram[2]
#define	dis_zs_3 dis_ram[3]
#define dis_gg_0 dis_ram[4]
#define dis_gg_1 dis_ram[5]
#define dis_gx_0 dis_ram[6]
#define dis_gx_1 dis_ram[7]
#define	dis_fx_0 dis_ram[8]
#define dis_fx_1 dis_ram[9]

//                                  0   1    2    3   4     5    6    7    8    9
unsigned char code gg_dis_table[]={0xff,0xff,0xff,0xff,0x7f,0x7f,0xff,0xff,0xff,0xff};
unsigned char code zs_dis_table[]={0x7f,0x7f,0x7f,0x7f,0xff,0xff,0xff,0xff,0xff,0xff};
unsigned char code gx_dis_table[]={0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x7f,0xff,0xff};
unsigned char code fx_dis_table[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x7f};


unsigned char code dis_w_table[]={ 0xf7,0xfb,0xfd,0xfe,0xdf,0xef,0x7f,0xbf};



//				    0	1     2    3	4    5	  6    7    8    9   10   11   12
unsigned char code dis_d_table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98,0x9c,0xa3,0xff };

bit	key_bit_press;
bit	sel_bit;
bit	gg_bit_flash;
bit	zs_bit_flash;
bit	gx_bit_flash;
bit	fx_bit_flash;
bit	prog_bit;
bit	start_bit_stop;
bit	gg_bit_sel;
bit	begin_bit;
bit	en_bit_write;
//      0  baozhuan   1  juandai
bit     xh_bit ;
bit     add_bit;
bit     key_bit_start;
bit     dis_bit;
bit     input_1;
bit     input_2;
bit     en_bit_220v;

//sbit	data_2401=P2^0;
//sbit	clk_2401=P2^1;
sbit	xh_sel=P2^2;
sbit    led_light=P2^5;
sbit	dis_w_enable=P2^6;
sbit	dis_d_enable=P2^7;

sbit    r_45=P3^0;
sbit	key_start_stop=P3^1;
sbit    r_67=P3^6;
sbit    r_1456=P3^4;
sbit    r_220v=P3^5;
sbit	signal_1=P3^7;
sbit	signal_2=P3^3;

unsigned char dms1,dms10,dms100,sec1;

unsigned char key_dms10,key_dms100;
//unsigned char key_add_step;
//unsigned char key_step;
unsigned char key_number;

unsigned char gg_ram;
unsigned char gx_ram;
unsigned char fx_ram;
unsigned int  zs_ram_0,zs_ram_1;

unsigned char dis_ram[10];

unsigned char gg_max,gx_max,xh_ram_length;
unsigned char start_stop_dms10;
unsigned char dms_220v;

unsigned char idata gg_2401_ram[130];


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

void delay(void)
{
        unsigned int i;
        i=1500;
        while(i){
           i--;
           }
}
//-----------------------------------------

void  canshu_deal(void)
{
        unsigned char i ;
        i=gg_ram*xh_ram_length;
        if(gx_ram==0)   fx_ram=gg_2401_ram[i]&0x80;
        else            fx_ram=gg_2401_ram[i+1]&(1<<(gx_ram-1));
        i=i+(gx_ram+1)*2;
        zs_ram_0=gg_2401_ram[i];
        zs_ram_1=gg_2401_ram[i+1];
}

void dis_ram_deal(void)
{
	unsigned char i,j,k;

        if(prog_bit|sel_bit) {
               canshu_deal();
	           i=zs_ram_0;
               dis_zs_0=i%10;
               dis_zs_1=(i-i%10)/10;
	           i=zs_ram_1;
	           dis_zs_2=i%10;
	           dis_zs_3=(i-i%10)/10;
               }
         else{
                i=gg_ram*20+(gx_ram+1)*2;
				j=gg_2401_ram[i];
				i=gg_2401_ram[i+1];
                if(j<zs_ram_0){
				     j=100+j-zs_ram_0;
					 k=i-zs_ram_1-1;
                     }
                else {
				     j=j-zs_ram_0;
					 k=i-zs_ram_1;
                     }
        	 dis_zs_0=j%10;
        	 dis_zs_1=(j-j%10)/10;
		     dis_zs_2=k%10;
		     dis_zs_3=(k-k%10)/10;
                 }
	dis_gg_0=gg_ram+1;
	dis_gg_1=0;

	dis_gx_0=gx_ram+1;
	dis_gx_1=0;

        if(fx_ram) {
              dis_fx_0=UP;
              dis_fx_1=UP;
              }
        else {
              dis_fx_0=DOWN;
              dis_fx_1=DOWN;
             }
}



//-----------------------------------------
//-----------------------------------------
void	key_number_sub(unsigned char i)
{
	i=i-1;
	if(prog_bit&&zs_bit_flash){
		switch(key_number){
			case 0:
				 zs_ram_0=zs_ram_0+i-zs_ram_0%10;
				 break;
			case 1:
				 zs_ram_0=i*10+zs_ram_0%10;
				 break;
			case 2:
		 		zs_ram_1=zs_ram_1+i-zs_ram_1%10;
				break;
			case 3:
		 		zs_ram_1=i*10+zs_ram_1%10;
		 	    break;
			default:	break;
		    }
		i=gg_ram*xh_ram_length+(gx_ram+1)*2;
		gg_2401_ram[i]=zs_ram_0;
		gg_2401_ram[i+1]=zs_ram_1;
		key_number++;
		if(key_number==4)	key_number=0;
		}
}

//----------------------------------------------------
//----------------------------------------------------
void prog_sub(void)
{
	if(start_bit_stop|sel_bit) 	return;
	if(!prog_bit){
		prog_bit=1;
		gg_bit_flash=1;
//		gg_ram=0;
		gx_ram=0;
		}
	else {
		prog_bit=0;
		gg_bit_flash=0;
		gx_bit_flash=0;
		fx_bit_flash=0;
		zs_bit_flash=0;
		gx_ram=0;
		en_bit_write=1;
                canshu_deal();
		}
}

void sel_sub(void)
{
	if(start_bit_stop|prog_bit) 	return;
	if(!sel_bit){
		sel_bit=1;
		gg_bit_flash=1;
	//	gg_ram=0;
		gx_ram=0;
		}
	else {
		sel_bit=0;
		gg_bit_flash=0;
		gx_bit_flash=0;
		gx_ram=0;
        canshu_deal();
		}
}


//----------------------------------------------------
void enter_sub(void)
{

	if(!(prog_bit|sel_bit)) return;
	if(prog_bit){
		if(gg_bit_flash)	{   gx_bit_flash=1; gg_bit_flash=0;	return; }
		if(gx_bit_flash) 	{	fx_bit_flash=1;	gx_bit_flash=0; key_number=0;return; }
		if(fx_bit_flash) 	{	zs_bit_flash=1; fx_bit_flash=0;	return; }
		if(zs_bit_flash) 	{	gg_bit_flash=1; zs_bit_flash=0;	return; }
		}
	else {
		if(gg_bit_flash)	{	gx_bit_flash=1; gg_bit_flash=0; return; }
		if(gx_bit_flash)	{	gg_bit_flash=1; gx_bit_flash=0;	return; }
		}
}


void esc_sub(void)
{
	unsigned char i,j;
	if(sel_bit|start_bit_stop)		return;
	if(prog_bit){
		if(gg_bit_flash) {
                        j=gg_ram*xh_ram_length;
                        i=20;
                        while(i){
                            i--;
                            gg_2401_ram[i+j]=0;
                            }
                        return;
			}
		if(gx_bit_flash)      {
			zs_ram_0=0;
			zs_ram_1=0;
			fx_ram=0;
                        i=gg_ram*xh_ram_length ;
                        if(gx_ram)      gg_2401_ram[i+1]=gg_2401_ram[i+1]&(~(1<<(gx_ram-1)));
                        else            gg_2401_ram[i]=gg_2401_ram[i]&0x7f;
			i=i+(gx_ram+1)*2;
			gg_2401_ram[i]=0;			// clear ram
			gg_2401_ram[i+1]=0;			// clear ram
			}
		 }
	else{
		zs_ram_0=0;
		zs_ram_1=0;
		gx_ram++;
        if(gx_ram==gx_max+1)  gx_ram=0;
		else {		  // 2004.9.4
              canshu_deal();
              if((zs_ram_0==0)&&(zs_ram_1==0))  gx_ram=0;
  		      }          //  2004.9.4
		if(gx_ram==0)   canshu_deal();
		}

}



void up_sub(void)
{
	unsigned char i;
	if(!(prog_bit|sel_bit)) return;
	key_dms10=0;
	key_bit_press=0;
	if(prog_bit){
                if(zs_bit_flash){
                        if(++key_number==4) key_number=0;
                        }
		if(gg_bit_flash&&(gg_ram<gg_max))  {
  			gg_ram++;
			gx_ram=0;
			}
 		if(gx_bit_flash&&(gx_ram<gx_max))  	gx_ram++;
		if(fx_bit_flash) {
            if(fx_ram) 		return ;
  			fx_ram=1;
			i=gg_ram*xh_ram_length;
			if(gx_ram)   	gg_2401_ram[i+1]=gg_2401_ram[i+1]|(1<<(gx_ram-1));
			else         	gg_2401_ram[i]=gg_2401_ram[i]|0x80;
			}

		}
	 else {
	 	if(gg_bit_flash&&(gg_ram<gg_max)){
			gg_ram++;
			gx_ram=0;
			}
		if(gx_bit_flash&&(gx_ram<gx_max))	gx_ram++;
		}
}

void down_sub(void)
{
	unsigned char i;
	if(!(prog_bit|sel_bit)) return;
		key_dms10=0;
		key_bit_press=0;
	if(prog_bit){
		if(zs_bit_flash) {
             if(key_number==0) key_number=3;
             else              key_number--;
             }
		if(gg_bit_flash&&(gg_ram>0)) {
			gg_ram--;
			gx_ram=0;
			}
		if(gx_bit_flash&&(gx_ram>0)) 	gx_ram--;
		if(fx_bit_flash&&fx_ram){
			fx_ram=0;
			i=gg_ram*xh_ram_length;
			if(gx_ram==0) gg_2401_ram[i]=gg_2401_ram[i]&0x7f;
			else	      gg_2401_ram[i+1]=gg_2401_ram[i+1]&(~(1<<(gx_ram-1)));
			}
        }

	else {
    	    if(gg_bit_flash&&(gg_ram>0)){
			gg_ram--;
			gx_ram=0;
			}
	    if(gx_bit_flash&&(gx_ram>0))	gx_ram--;
	    }
}




void key_deal(void)
{
	unsigned char i;

⌨️ 快捷键说明

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