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

📄 刀控板.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 timeh0,timel0,timeh1,timeh2,timel2,timel1,inbuf,i;
	uchar data ssbuf[10],sscom,gden,tjj,tjjs;
    uchar bdata inbuf1,inbuf3;
	uchar data tgd1,tgd1s,tgd,tgds,tgd1r,zddo,gd1en;
    sbit sdai=P1^1;
    sbit de=P1^4;
    sbit mclk=P1^3;
    sbit sdao=P1^2;
    sbit dcs=P3^4;
    sbit xin=P1^5;
    sbit jj=P1^6;
    sbit gd=P1^7;
    sbit gd1=P3^2;
    sbit plc=P3^5;
    sbit ixin=inbuf1^5;
    sbit ijj=inbuf1^6;
    sbit igd=inbuf1^7;
    sbit igd1=inbuf3^2;
    sbit iplc=inbuf3^5;
    bit  oldgd1,gdex,oldgd,oldjj,gd1f,gd1e,iszd,isof,jjex;
//--------------------------------
//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 input (void)
    {
        inbuf1=P1;
        inbuf3=P3;
    }
    void jjexe (void)
    {
        P0=0xdb;        //1.   CD
        delay(200);
        P0=0xdc;        //2.   ZD,CD,XC
        delay(3000);
        P0=0xd9;        //3.   ZD,CD
        delay(5000);
		iszd=1;
		isof=0;
		zddo=3;
    }
    void gdexe (void)
    {
		iszd=0;
        P0=0xcb;        //4.   ALL_OFF
        delay(200);
        P0=0xa3;        //5.   LH,FD
        delay(10000);
        P0=0xe3;        //6.   LH
        delay(200);
        P0=0xf3;        //7.   LH,CD
    }

//----------------------------------
	void main (void)
	{
		delay (1000);
        oldgd=0;
        oldgd1=1;
        oldjj=1;
        de=0;
		gden=1;
		gd1e=0;
		gd1en=rdmem(0);
		tgd1r=50;
        tgds=rdmem(1);
    	tgd=tgds;
        tgd1s=rdmem(5);
    	tgd1=tgd1s;
		tjj=rdmem(9);
    	gd1f=0;
        jjexe();
		isof=0;
        delay(1000);
        wrsr(0x20);
        timeh0=0xec;
        timel0=0x78;
        timeh2=0xec;
        timel2=0x78;

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

        RCAP2L=timel2;
        RCAP2H=timeh2;
        TH0=timeh0;
        TL0=timel0;
        TH2=timeh2;
        TL2=timel2;
        TXD=1;
        RXD=1;
        RI=0;TI=0;
        PS=1;
        ES=1;
        ET2=0;
        TR2=0;
        EA=1;
        while (1)
        {
		dcs=~dcs;
            input ();
			if (gden)
			{
	            if (!igd && oldgd)
	            {
					if (tgd==0)
					{
						gdexe();
					}
					else
					{
	                    TH0=timeh0;
	                    TL0=timel0;
	                    ET0=1;
	                    TR0=1;
					}
	            }
	            if (igd)
	            {
	                delay (10);
	                input ();
	                if (igd)
	                {
	                    oldgd=1;
	                }
	            }
	            else oldgd=0;
			}
            if (!igd1 && oldgd1)
            {
			if (gd1en==1)
			{
                ET2=1;
                TR2=1;
			}
            }
            if (igd1)
            {
                delay (10);
                input ();
                if (igd1)
                {
                    oldgd1=1;
					tgd1=tgd1s;
                }
            }
            else oldgd1=0;
			if (iszd)
			{
	            if (isof) 
				{
					isof=0;
					P0=0xd9;
				}
				else
				{
					isof=1;
					zddo=3;
					P0=0xcb;
				}
			}
            if (!ijj && oldjj)
            {
                jjexe();
            }
            if (ijj)
            {
                delay (10);
                input ();
                if (ijj)
                {
                    oldjj=1;
                }
            }
            else oldjj=0;
			if (gdex)
			{
				gdex=0;
				gdexe();
			}
			if (jjex)
			{
				jjex=0;
				jjexe();
			}
			if (sscom)
			{
				sscom=0;
				if (ssbuf[0]==1)
				{
					tgds=ssbuf[1];
					tgd=tgds;
					tgd1s=ssbuf[2];
					tgd1=tgd1s;
					tjj=256-ssbuf[3];
					wrmem (1,tgds);
					wrmem (5,tgd1s);
					wrmem (9,tjj);
				}
				if (ssbuf[0]==2)
				{
					gden=0;
				}
				if (ssbuf[0]==3)
				{
					if (tgd==0)
					{
						gdexe();
					}
					else
					{
	                    TH0=timeh0;
	                    TL0=timel0;
	                    ET0=1;
	                    TR0=1;
					}

				}
				if (ssbuf[0]==4)
				{
					gden=1;
					jjexe();
				}
				if (ssbuf[0]==5)
				{
					gd1en=0;
					wrmem(0,0);
				}
				if (ssbuf[0]==6)
				{
					gd1en=1;
					wrmem(0,1);
				}
			}
        }
    }

     void cpu_int1(void) interrupt 1
    {
		tgd--;
		if (tgd==0)
		{
        gdex=1;
		}
		if (tgd==tjj)
		{
        ET0=0;
        TR0=0;
		jjex=1;
		tgd=tgds;
		}
        TH0=timeh0;
        TL0=timel0;

    }
    void cpu_int4(void) interrupt 4
    {
        uchar data is;
        EA=0;
        while (!RI);
        RI=0;
        if (SBUF==0xfa)
        {
            for (is=0;is<5;is++)
            {
                while (!RI);
                RI=0;
                ssbuf[is]=SBUF;
            }
            ssbuf[10]=0;
            for (is=0;is<5;is++)
            {
                ssbuf[10]+=ssbuf[is];
            }
			de=1;
			delay (500);
			TI=0;
			SBUF=ssbuf[10];
			while (!TI);
			de=0;
            sscom=1;
			delay (500);
        }
        RI=0;TI=0;
        EA=1;
    }
     void cpu_int5(void) interrupt 5
    {
		TF2=0;
		if (!gd1e)
		{
			tgd1--;
			input();
			if (!igd1)
			{
				if (tgd1==0)
				{
					iplc=0;
					inbuf=P3;
					inbuf &= 0xdf;
					P3=inbuf;
					tgd1=tgd1s;
					gd1e=1;
				}
			}
			else
			{
				if (gd1f)
				{
					tgd1=tgd1s;
					ET2=0;
					TR2=0;
					TH2=timeh2;
					TL2=timel2;
					gd1f=0;
				}
				else gd1f=1;
			}
		}
		else
		{
			if (--tgd1r==0)
			{
				gd1e=0;
				ET2=0;
				TR2=0;
				TH2=timeh2;
				TL2=timel2;
				inbuf=P3;
				inbuf |= 0x24;
				P3=inbuf;
				tgd1=tgd1s;
				tgd1r=50;
			}
		}
    }





⌨️ 快捷键说明

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