📄 设定.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 + -