📄 cplc.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 + -