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

📄 cplc.c

📁 印刷机润版液控制
💻 C
字号:
    #include <reg52.h>
    #include <intrins.h>
    #define xin P1
    #define yout P0

    #define uchar unsigned char
    #define uint unsigned int
    #define ulong unsigned long
    uchar bdata buf45,cmd45,xbuf,ybuf;
    uchar data ssbuf[12],tempbuf,phbuf,tempseth,tempsetl,phseth,phsetl,comm,timer;
    uchar data tu3,t_y4,t_u1,t_d1,td3,t_u6;
    uint data ttload,ppload;
    uchar bdata xbuf1,mode0;
    uchar data fu,fv,fw,fy,fz;//临时变量
    uchar data sdelay;
    sbit mclk=P2^0;
    sbit sdao=P2^1;
    sbit dcs=P2^2;
    sbit sdai=P2^3;
    sbit rbuf=buf45^0;
    sbit wbuf=buf45^7;
    sbit cmd0=cmd45^0;
    sbit cmd=cmd45^7;
    sbit load=P2^7;
    sbit ldac=P2^6;
    sbit temp=P2^4;
    sbit php=P2^5;

    sbit x0=xbuf^0;
    sbit x1=xbuf^1;
    sbit x2=xbuf^2;
    sbit x3=xbuf^3;
    sbit x4=xbuf^4;
    sbit x5=xbuf^5;
    sbit x6=xbuf^6;
    sbit x7=xbuf^7;
    sbit xin8=P3^2;

    sbit y0=ybuf^0;
    sbit y1=ybuf^1;
    sbit y2=ybuf^2;
    sbit y3=ybuf^3;
    sbit y4=ybuf^4;
    sbit y5=ybuf^5;
    sbit y6=ybuf^6;
    sbit y7=ybuf^7;

    sbit bs=xbuf1^0;
    sbit bt=xbuf1^1;
    sbit bu=xbuf1^2;
    sbit bv=xbuf1^3;
    sbit bw=xbuf1^4;
    sbit tclk=xbuf1^5;
    sbit fcom=xbuf1^6;
    sbit x8=xbuf1^7;

    sbit jjsta=mode0^0;
    sbit ttsta=mode0^1;
    sbit tdsta=mode0^2;
    sbit start=mode0^3;
    sbit m4=mode0^4;
    sbit m5=mode0^5;
    sbit m6=mode0^6;
    sbit m7=mode0^7;

    void delay (uint day)
    {
        while (--day!=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 format (void)
    {
        bs=1;
        tclk=0;
        fcom=0;
        mode0=0;
        timer=20;
        yout=0xff;
        ybuf=0xff;
        xbuf=0xff;
        xin=0xff;
        TMOD = 0x20;
        TH1 =  0xfd;
        TL1 =  0xfd;
        SCON = 0x50;
        T2CON=0;
        RCAP2H=0x4c; //65136=fe70,62536=f448
        RCAP2L=0x00;
        TH2=0x4c;
        TL2=0x00;
        PS=1;
        TR1=1;
        TR2=0;
        RI=0;
        TI=0;                                             
        EA=1;
        ET2=0;
        ES=1;
    }
    void dinput (void)
    {
        xin=0xff;
        xin8=1;
		delay (10);
        xbuf=xin;
        x8=xin8;

    }
    void main(void)
    {
        delay(1000);
        wrsr (0x30);
        format();
        start=1;
        P0=0xff;
        tempseth=rdmem(0);
        tempsetl=rdmem(1);
        phseth=rdmem(2);
        phsetl=rdmem(3);
		wrmem (200,0);
        t_u1=10;
        t_d1=10;
        t_u6=10;
        t_y4=0;
        tu3=180;
        td3=100;
        wrsr (0x00);
        while (1)
        {
			dcs=~dcs;
            dinput ();
            if (start)
            {
                if (xbuf!=255)
                {
                    start=0;
                    if (!x0)
                    {
                        for (tu3=0;tu3<10;tu3++)
                        {
                            ybuf=0xfd;
                            yout=ybuf;
                            for (td3=0;td3<200;td3++)
                            {
                                dcs=~dcs;
                                delay(200);
                            }
                            ybuf=0xff;
                            yout=ybuf;
                            P0=0xff;
                            for (td3=0;td3<200;td3++)
                            {
                                dcs=~dcs;
                                delay(200);
                            }
                        }
                    }
                    start=1;
                }
            }
        }
    }
    void cpu_int4(void) interrupt 4
    {
//    uchar data ssbuf[10],tempbuf,phbuf,tempseth,tempsetl,phseth,phsetl,comm;
        ES=0;
        RI=0;
        if (SBUF==0x55)
        {
            fv=SBUF;
            for (fv=0;fv<10;fv++)
            {
                sdelay=0;
                while (!RI)
                {
                    if (--sdelay==0)
                    {
                        fv=0;
                        goto ssbr;
                    }
                    _nop_();
                    _nop_();
                    _nop_();
                    _nop_();
                    _nop_();
                    _nop_();
                }
                RI=0;
                ssbuf[fv]=SBUF;
            }
            fcom=1;
            TI=0;
        }
ssbr:   RI=0;
        ES=1;
    }
    void cpu_int5(void) interrupt 5
    {
        TF2=0;          //(50ms/每次)
        if (--timer==0)
        {
            timer=20;
            tclk=1;         //(500ms/每次)
        }
    }



⌨️ 快捷键说明

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