📄 师姐全部程序wsy.c
字号:
keyon_flag1=0 ;
}//end of if(keyon_flag1)
if(esc_flag)
{
timechange_flag=0 ;
esc_flag=0 ;
display(" 时 分 秒 ",0x88);
display(" ",0x98);
keytimes1=0 ;
keynumber=0 ;
// stardisp();
} //end of if(esc_flag)
}
//显示初始化
void stardisp()
{
init_lcd ();
display("20 年 月 日 ",0x80);
display("星期 ",0x90);
display(" 时 分 秒 ",0x88);
dateread();
timeread();
}
/////////////写卡响2声////////////////////
bell2()
{
BELL_IO=0;
Timer0_ms(200);
BELL_IO=1;
Timer0_ms(200);
BELL_IO=0;
Timer0_ms(200);
BELL_IO=1;
Timer0_ms(200);
}
///////删除一张卡,响3声////////////////
bell3()
{
BELL_IO=0; //删除一张卡响3声
Timer0_ms(200);
BELL_IO=1;
Timer0_ms(200);
BELL_IO=0;
Timer0_ms(200);
BELL_IO=1;
Timer0_ms(200);
BELL_IO=0;
Timer0_ms(200);
BELL_IO=1;
Timer0_ms(200);
}
bell4()
{
BELL_IO=0; //删除所有的事件/卡号/时段响4声
Timer0_ms(200);
BELL_IO=1;
Timer0_ms(200);
BELL_IO=0;
Timer0_ms(200);
BELL_IO=1;
Timer0_ms(200);
BELL_IO=0;
Timer0_ms(200);
BELL_IO=1;
Timer0_ms(200);
BELL_IO=0;
Timer0_ms(200);
BELL_IO=1;
Timer0_ms(200);
}
////////////////刷卡写一张卡号////////////////////
kawr_card()
{
uchar i,j,k;
uint ii;
cs_fm;
BANK0;
if(!lvl)
{P4|=0x07;}
point1=0x0020;
for(ii=0;ii<2000;ii++)
{
if(*point1==0x00)
{
ii=2000;
for(j=0;j<5;j++)
{*(point1+j)=gc_cad[j];
k+=1;
}
for(i=0;i<2;i++)
{
*(point1+5+i)=key_shiqu[i];
k+=1;
}
}
else
point1+=7;
}
ncs_fm;
bell2();
}
//////////////////////键盘写卡//////////////////////////////
keywr_card()
{
uchar i,j,k=0;
uint ii;
cs_fm;
BANK0;
if(!lvl)
{P4|=0x07;}
point1=0x0020;
for(ii=0;ii<2000;ii++)
{if(*point1==0x00)
{
ii=2000;
for(j=0;j<5;j++)
{*(point1+j)=key_card[j];
k+=1;
}
for(i=0;i<2;i++)
{
*(point1+5+i)=key_shiqu[i];
k+=1;
}
}
else
point1+=7;
}
ncs_fm;
bell2(); //写卡响2声
}
//////////////比较键盘输入的卡号,若卡号已存在则删除该卡,否则写卡//////
cmpwrclrkey()
{
uchar i,k;
uint ii;
cs_fm;
BANK0;
if(!lvl)
{P4|=0x07;}
point1=0x0020;
for(ii=0;ii<2000;ii++)
{
k=0;
for(i=0;i<5;i++)
{
if(key_card[i]==*point1)
{
point1++ ;
k+=1;
}
else
i=5;
}//end of for(i=0;i<5;i++)
if(k==5)
ii=2000;
else
point1+=(7-k);
} //end of for(ii=0;ii<2000;ii++)
if(k==5)
{
point1+=2;
for(i=0;i<7;i++)
{*(--point1)=0x00; //若该卡号已经存在,则删除该卡
}
bell3();
P4|=0x07;
}
else
{
keywr_card();
ncs_fm;
}
}
////////////////////////删除所有卡号/////////////////////////
del_allcard()
{uchar i;
uint j;
//display(" ",0x98);
display("删所有的卡号 ",0x98);
cs_fm;
BANK0;
point1=0x0020;
for(j=0;j<2000;j++)
{
for(i=0;i<7;i++)
{
if(!lvl)
{P4|=0x07;}
*(point1++)=0x00;
}
}
ncs_fm;
delcard_flag=0;
bell4();
display(" ",0x98);
ncs_fm;
}
//////////////写事件纪录////////////////////////
xiejilu(uint beginadr)
{uchar i,j,k=0;
uint ii;
cs_fm;
BANK0;
if(!lvl)
{P4|=0x07;}
point1=beginadr;
for(ii=0;ii<5109;ii++)
{
if(*point1==0x00)
{
ii=5109;
for(i=0;i<5;i++)
{*point1=keycodebuf[i];
point1++;
k+=1;
}
for(j=0;j<5;j++)
{
*point1=read_time[j];
point1++;
k+=1;
}
}
else point1+=10;
}
ncs_fm;
}
///////////////////开门//////////////////////
opendoor()
{
uchar i;
name_disp();
chn_disp1("OK",0x9f);
display("门号: ",0x90);
num_disp(door_num,0x93);
for(i=0;i<5;i++)
{sendkeycode[i+1]=keycodebuf[i];}
sendkeycode[0]=0x11; //有效卡刷卡
sendkeycode[7]=0x01; //上传卡号
LED_IO=0;
P5=0x00;
P4&=0xef;
switch(door_num)
{
case 0:
P5=0x01; //继电器1不吸合,开1号门
break;
case 1:
P5=0x02;
break;
case 2:
P5=0x04;
break;
case 3:
P5=0x08;
break;
case 4:
P5=0x10;
break;
case 5:
P5=0x20;
break;
case 6:
P5=0x40;
break;
case 7:
P5=0x80;
break;
default :
break ;
}
count_time2=JDQ_TIME;
ET1=1; //定时器1中断允许位
TR1=1; //定时器1运行控制位
}
/////////////无效卡刷卡/////////////////////
wuxiao()
{
uchar i;
ncs_fm;
chn_disp1("无",0x9c);
chn_disp1("效",0x9d);
for(i=0;i<5;i++)
{sendkeycode[i+1]=keycodebuf[i];}
sendkeycode[0]=0x12; //无效卡刷卡
sendkeycode[7]=0x01; //上传卡号
BELL_IO=0; //刷卡无效响2声
nop();
Timer0_ms(500);
BELL_IO=1;
nop();
/* Timer0_ms(500);
BELL_IO=0;
nop();
Timer0_ms(500);
BELL_IO=1;
nop();
Timer0_ms(500);*/
}
////////////判断节假日,若为假日,有效卡也打不开门////////////////////////
judgedate()
{
uchar i,k=0;
cs_fm;
BANK0;
if(!lvl)
{P4|=0x07;}
point1=0x36b0;
for(i=0;i<60;i++)
{
if((read_time[1]==*(point1++))&&(read_time[2]==*(point1++)))
{i=60;
k=1;
}
else
k=0;
}
ncs_fm;
if(k==1)
{wuxiao();
xiejilu(0x3870);
}
else
{
opendoor();
xiejilu(0x3870);
/* cs_fm;
BANK0;
point1=0x0x3870;
for(j=0;j<10;j++)
{
a[j]=*point1;
point1++;
}*/
}
ncs_fm;
}
////// 判断时间段/////////////////////
judgetime()
{
uchar i,k=0;
cs_fm;
BANK0;
for(i=0;i<2;i++)
{
if(read_time[6]==*(point1++))
{i=2;
k=1;
}
else
k=0;
}
if(k==1)
{
ncs_fm;
wuxiao();
xiejilu(0x3870);
}
else
{
if(((read_time[3]>*point1)&&(read_time[3]<=*(point1+2)))||
((read_time[3]==*point1)&&(read_time[4]>=*(point1+1)))||
((read_time[3]==*(point1+2))&&(read_time[4]<=*(point1+3)))||
((read_time[3]>*(point1+4))&&(read_time[3]<=*(point1+6)))||
((read_time[3]==*(point1+4))&&(read_time[4]>=*(point1+5)))||
((read_time[3]==*(point1+6))&&(read_time[4]<=*(point1+7))))
judgedate();
else
{
ncs_fm;
wuxiao();
xiejilu(0x3870);
}
}
ncs_fm;
}
/////////判断时区权限是否正确////////////
judgeshiqu()
{
uchar i;
cs_fm;
BANK0;
if(!lvl)
{P4|=0x07;}
switch(shiqu_num)
{
case 0 :
point1=0x3730;
judgetime();
break ;
case 1 :
point1=0x373a;
for(i=0;i<10;i++)
{
b[i]=*point1++;
}
point1=0x373a;
judgetime();
break ;
case 2 :
point1=0x3744;
judgetime();
break ;
case 3:
point1=0x375e;
judgetime();
break;
case 4:
point1=0x3768;
judgetime();
break;
case 5:
point1=0x3772;
judgetime();
break;
case 6:
point1=0x378c;
judgetime();
break;
case 7:
point1=0x3796;
judgetime();
break;
case 8:
point1=0x37a0;
judgetime();
break;
case 9:
point1=0x37aa;
judgetime();
break;
case 10:
point1=0x37b4;
judgetime();
break;
case 11:
point1=0x37ce;
judgetime();
break;
case 12:
point1=0x37d8;
judgetime();
break;
default:
break;
}
ncs_fm;
}
///////////判断卡号,若为合法卡号///////////////////////
judgekey()
{
uchar i,j,k;
uint ii;
for(j=0;j<5;j++)
{keycodebuf[j]=gc_cad[j];
}
cs_fm; //选中铁电
BANK0; //0—64k
if(!lvl)
{P4|=0x07;}
point1=0x0020;
for(ii=0;ii<2000;ii++)
{
k=0;
for(i=0;i<5;i++)
{
if(keycodebuf[i]==*(point1+i))
{
k+=1;
}
else
i=5;
}//end of for(i=0;i<5;i++)
if(k==5)
ii=2000;
else
point1+=7;
} //end of for(ii=0;ii<5000;ii++)
if(k==5)
{
if(!program_flag)
{shiqu_num=*(point1+5);
door_num=*(point1+6);
judgeshiqu();
}
else
{
cs_fm; //选中铁电
BANK0; //0—64k
for(i=0;i<7;i++)
{ *(point1+i)=0x00; } //若该卡号已经存在,那么刷下该卡则删除该卡
bell3(); ////删除一张卡响3声
P4|=0x07;
}
}
else
{
ncs_fm;
if(!program_flag)
{wuxiao();
xiejilu(0x3870);
}
else
{
kawr_card();
}
}
program_flag=0;
ncs_fm;
}
////删除所有的事件纪录
delshijian()
{
uint i;
uchar j;
clrram();
display("删所有的事件纪录",0x98);
cs_fm;
BANK0;
if(!lvl)
{P4|=0x07;}
point1=0x3870;
for(i=0;i<5109;i++)
{
for(j=0;j<10;j++)
{
*point1=0x00;
point1++;
}
}
ncs_fm;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -