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

📄 设定.c

📁 折页机控制设置软件
💻 C
字号:
    #include <reg52.h>
    #include <math.h>
    #include <stdio.h>
    #include <ABSACC.h>
    #include <intrins.h>
    #define uchar unsigned char
    #define uint unsigned int
    #define ulong unsigned long
//------------------------------
    uchar bdata buf45,cmd45;
    sbit rbuf=buf45^0;
    sbit wbuf=buf45^7;
    sbit cmd0=cmd45^0;
    sbit cmd=cmd45^7;
//------------------------------
	uchar data led[12],ssbuf[20],i,keyno[3],kask,kask1,ees,dkno;
    uchar bdata kbuf,ledbuf1,ledbuf2,ledbuf3;
	uchar data scheck,ledzz,dss,comno,sn,option;
	uint  data tkl;
    uchar data timeh0,timel0,timeh2,timel2;
	uchar code ds[36]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,
	                   0x76,0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,
					   0xf1,0x00,0x08,0x40};
			 //              off  .    -
	uchar code com[12]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xef,0xdf,0xbf,0x7f};
	uchar code off={33},dbar={35},mbar={34};
	ulong idata inum,dpsl,zyzs,zysd,zzcd,szsj,zzjg,lsys;
    uchar idata dsbuf[6],lzz;
    sbit sdai=P3^3;
    sbit sdao=P3^2;
    sbit mclk=P1^7;
    sbit dcs=P1^6;
    sbit com8=P3^4;
    sbit com9=P3^5;
    sbit com10=P3^6;
    sbit com11=P3^7;

	sbit kb0=kbuf^0;
	sbit kb1=kbuf^1;
	sbit kb2=kbuf^2;
	sbit kb3=kbuf^3;
	sbit kb4=kbuf^4;
	sbit kb5=kbuf^5;
	sbit ddp=ledbuf1^2;
	sbit dzs=ledbuf1^1;
	sbit dsd=ledbuf1^0;

    sbit ddx=ledbuf2^0;
    sbit dls=ledbuf2^1;
    sbit ddz=ledbuf2^2;
    sbit dsz=ledbuf2^3;
    sbit dzt=ledbuf2^4;
    sbit dzj=ledbuf2^5;
    sbit djt=ledbuf2^6;
		
	sbit odp=ledbuf3^0;
	sbit ocd=ledbuf3^1;
	sbit osz=ledbuf3^2;
	sbit ojg=ledbuf3^3;
	sbit oys=ledbuf3^4;
	sbit olg=ledbuf3^5;
	sbit oql=ledbuf3^6;
	sbit oxg=ledbuf3^7;
    bit  ken,k1;
//--------------------------------
//Protected  0x3c
//work       0x00;
    void delay (uint nh)
    {
        while (--nh!=0);
    }
    void trans (void)
    {
        uchar data ii;
        mclk=0;
        for (ii=8;ii>0;ii--)
        {
            sdao=wbuf;
            mclk=1;
            _nop_();
            buf45<<=1;
            mclk=0;
            _nop_();
        }
        sdao=0;
    }
    void rdsr (void)
    {
        uchar i;
        dcs=1;
        mclk=0;
        dcs=0;
        cmd45=0x05;
        for (i=8;i>0;i--)
        {
            sdao=cmd;
            mclk=1;
            cmd45<<=1;
            mclk=0;
        }
        sdao=0;
        sdai=1;
        for (i=8;i>0;i--)
        {
            cmd0=sdai;
            mclk=1;
            cmd45=_crol_(cmd45,1);
            mclk=0;
        }
        cmd45=_cror_(cmd45,1);
        dcs=1;
    }
    void wwip (void)
    {
        uchar l;
        l=0;
        cmd0=1;
        while (cmd0 && (++l<=200))
        {
            rdsr ();
        }
    }
    void wren (void)
    {
        mclk=0;
        dcs=0;
        buf45=0x06;
        trans ();
        wwip ();
        dcs=1;
    }
    void wrsr (uchar srmd)
    {
        wren ();
        dcs=1;
        mclk=0;
        dcs=0;
        buf45=0x01;
        trans ();
        buf45=srmd;
        trans ();
        wwip ();
        dcs=1;
    }
    void wrmem (uchar dd,uchar aa)
    {
        wren ();
        dcs=1;
        mclk=0;
        buf45=0x02;
        dcs=0;
        trans ();
        buf45=dd;
        trans ();
        buf45=aa;
        trans ();
        cmd45=0;
        wwip ();
        dcs=1;
        mclk=1;
    }
    uchar rdmem (uchar dd)
    {
        uchar i;
        dcs=1;
        mclk=0;
        buf45=0x03;
        dcs=0;
        trans ();
        buf45=dd;
        trans ();
        for (i=8;i>0;i--)
        {
            _nop_();
            rbuf=sdai;
            mclk=1;
            buf45=_crol_(buf45,1);
            mclk=0;
            _nop_();
        }
        buf45=_cror_(buf45,1);
        dcs=1;
        return (buf45);
    }
//----------------------------------------
	void inkey (void)
	{
inl:	kask=keyno[0]&keyno[1]&keyno[2];
		if (kask!=0xff)
		{
			kask1=kask;
			delay (5000);
			kask=keyno[0]&keyno[1]&keyno[2];
			if (kask1==kask) goto inkbak;
		}
		goto inl;
inkbak: while (kask1!=0xff)
		{
			kask1=keyno[0]&keyno[1]&keyno[2];
		}
	}
	void xs (ulong xsr)
	{
		led[5]=(xsr/100000);
        lzz=led[5];
		xsr=(xsr-led[5]*100000);
        if (lzz==0) led[5]=off;
		led[4]=(xsr/10000);
        lzz+=led[4];
		xsr=(xsr-led[4]*10000);
        if (lzz==0) led[4]=off;
		led[3]=(xsr/1000);
        lzz+=led[3];
		xsr=(xsr-led[3]*1000);
        if (lzz==0) led[3]=off;
		led[2]=(xsr/100);
        lzz+=led[2];
		xsr=(xsr-led[2]*100);
        if (lzz==0) led[2]=off;
		led[1]=(xsr/10);
        lzz+=led[1];
        xsr=(xsr-led[1]*10);
        if (lzz==0) led[1]=off;
        led[0]=(xsr);
	}
	void xsm (uchar xsm)
	{
		led[7]=xsm/10;
		led[6]=xsm%10;
	}
	void format ()
	{
	uchar data rd1,rd2,rd3;//dpsl,zyzs,zysd,zzcd,szsj,zzjg,lsys;
		ledzz=0;
		keyno[0]=0xff;
		keyno[1]=0xff;
		keyno[2]=0xff;
		ken=1;
		kbuf=0xff;

		rd1=rdmem(0);
		rd2=rdmem(1);
        rd3=rdmem(2);
		dpsl=rd3*65536+rd2*256+rd1;
		rd1=rdmem(3);
		rd2=rdmem(4);
        rd3=rdmem(5);
		zyzs=rd3*65536+rd2*256+rd1;
		rd1=rdmem(6);
		rd2=rdmem(7);
        rd3=rdmem(8);
		zysd=rd3*65536+rd2*256+rd1;
		rd1=rdmem(9);
		rd2=rdmem(10);
        rd3=rdmem(11);
		zzcd=rd3*65536+rd2*256+rd1;
		rd1=rdmem(12);
		rd2=rdmem(13);
        rd3=rdmem(14);
		szsj=rd3*65536+rd2*256+rd1;
		rd1=rdmem(15);
		rd2=rdmem(16);
        rd3=rdmem(17);
		zzjg=rd3*65536+rd2*256+rd1;
		rd1=rdmem(18);
		rd2=rdmem(19);
        rd3=rdmem(20);
		lsys=rd3*65536+rd2*256+rd1;

        TMOD = 0x20;
        TH1 =  0xf3;
        TL1 =  0xf3;
        TCON = 0x40;
        SCON = 0x50;
        T2CON=0;


        RCAP2L=0x80;
		RCAP2H=0xf6;
		TH2=0x80;
		TL2=0xf6;
        ET2=1;
		TR2=1;
        TXD=1;
        RXD=1;
        RI=0;TI=0;
        EA=1;
	}
	void clnum (uchar cl)
	{
		for (i=0;i<cl;i++)
		{
			led[i]=off;
            dsbuf[i]=0;
		}
	}
    void denter ()
    {
        clnum(8);
        delay (5000);
        for (i=0;i<4;i++)
        {
            led[i]=dbar;
            led[7-i]=dbar;
            delay (10000);
        }
    }
	void innum ()
	{
		inkey();
		clnum(6);
num1:	if (kask<10)
		{
			for (i=4;i<255;i--)
			{
				led[i+1]=led[i];
				dsbuf[i+1]=dsbuf[i];
			}
			led[0]=kask;
			dsbuf[0]=kask;
		 }
		 if (kask==10)
		 {
		 	inum=dsbuf[5]*100000;
			inum+=dsbuf[4]*10000;
			inum+=dsbuf[3]*1000;
			inum+=dsbuf[2]*100;
			inum+=dsbuf[1]*10;
            inum+=dsbuf[0];
            goto num2;
		 }
         inkey();
         goto num1;
num2:;
	}
	void tdpsl ()
	{
    uchar data rd1;
        led[7]=mbar;
        led[6]=mbar;
		xs (dpsl);
		innum();
		if (inum!=0)
        {
            dpsl=inum;
            rd1=inum/65536;
            wrmem (2,rd1);
            inum=inum-rd1*65536;
            rd1=inum/256;
            wrmem (1,rd1);
            inum=inum-rd1*256;
            rd1=inum;
            wrmem (0,rd1);
        }
        denter();
        led[9]=0;
        xs (dpsl);
	}
	void fn7 (void)
	{
fn7l:	xsm (comno);
		inkey();
		if (kask==7)
		{
        	led[9]=_crol_(led[9],1);
			if (++comno==8) comno=0;
		}
		if (kask==0)
		{
			xsm(0);
			goto fn7bak;
		}
		if (kask==10)
		{
			if (comno==0)
			{
				tdpsl();
			}
			goto fn7bak;
		}

		goto fn7l;
fn7bak:;
	}

//----------------------------------
	void main (void)
	{
	    P0=0xff;
		P2=0;
		ees=0;
		dkno=0;
        delay(5000);
		wrsr (0x30);//dpsl,zyzs,zysd,zzcd,szsj,zzjg,lsys;
		i=rdmem(0);
		format ();
		ssbuf[0]=0;
		for (i=0;i<8;i++)
		{
			led[i]=dbar;
		}
		for (i=8;i<11;i++)
		{
			led[i]=0;
		}
ml1:	k1=1;
		while (k1)
		{
			dcs=~dcs;
			inkey();
			xsm (kask);
	        switch (kask)
			{
		        case 7:
				led[9]=1;
				comno=0;
				fn7();
		        break;
		        default: led[9]=0;
			}
		}
		wrmem (0,0);
		goto ml1;
    }

     void cpu_int5(void) interrupt 5
    {
		TF2=0;
		P2=0;
		P0=0xff;
		P3|=0xf0;
		if (ledzz<8)
		{
			P0=com[ledzz];
			if (ledzz<3)
			{
				kbuf=P1;
				kbuf|=0xc0;
				if (kbuf!=0xff)
				{
					if (!kb0) keyno[ledzz]=0;
					if (!kb1) keyno[ledzz]=1;
					if (!kb2) keyno[ledzz]=2;
					if (!kb3) keyno[ledzz]=3;
					if (!kb4) keyno[ledzz]=4;
					if (!kb5) keyno[ledzz]=5;
					keyno[ledzz]+=ledzz*6;
				}
				else
				{
					keyno[ledzz]=0xff;
				}
			}
			dss=ds[led[ledzz]];
		}
		else 
		{
			P3=com[ledzz];
			dss=led[ledzz];
		}
		P2=dss;
		if (++ledzz>10) ledzz=0;
    }





⌨️ 快捷键说明

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