📄 师姐全部程序wsy.c
字号:
num_disp(keynumber,0x9d);
key_holiday[1]=keynumber*10 ;
keytimes1++;
keynumber1[1]=keynumber;
break ;
case 4 :
num_disp(keynumber1[1],0x9d);
num1_disp(keynumber);
key_holiday[1]=key_holiday[1]+keynumber;
keytimes1++;
break ;
case 5 :
keytimes1++;
default:
break;
} //end switch(keytimes1)
}//end (keytimes1<=5)
}//if((clrlcd_flag==0)&(esc_flag==0)&(chaxun_flag==0)&(enter_flag==0))
if(clrlcd_flag)
{
if(keytimes1>=5)
{
num_disp(keynumber1[1],0x9d);
num_disp2(" ");
keytimes1=4 ;
key_holiday[1]&=0xf0;
}
else
{
if(keytimes1<=1)
{
keytimes1=1 ;
}
else
{
switch(--keytimes1)
{
case 3:
num_disp1(" ",0x9d);
key_holiday[1]=0;
break;
case 2:
num_disp(keynumber1[0],0x9c);
num_disp2(" ");
key_holiday[0]&=0xf0;
break;
case 1:
num_disp1(" ",0x9c);
key_holiday[0]=0;
break;
default:
break;
}//end of switch(keytime2)
} //end of else
}//end of else
keyon_flag1=0 ;
keyon_flag=0 ;
clrlcd_flag=0 ;
}//end of if(clrlcd_flag)
if(enter_flag==1)
{
keynumber=0 ;
enter_flag=0 ;
quanxian_flag=0 ;
keywrcard_flag=0;
keytimes1=0 ;
wr_holiday();
display(" 时 分 秒 ",0x88);
display(" ",0x98);
}
keyon_flag=0 ;
keyon_flag1=0 ;
}//end of if(keyon_flag1)
if(esc_flag)
{
quanxian_flag=0 ;
keywrcard_flag=0;
esc_flag=0 ;
display(" 时 分 秒 ",0x88);
display(" ",0x98);
keytimes1=0 ;
keynumber=0 ;
}
}
////////////////////用键盘输入卡号/////////////////
program()
{
uchar keynumber1[5];
if(keytimes1==0)
{
display("请输入卡号: ",0x88) ;
//请输入
}
if(keyon_flag1)
{
if((clrlcd_flag==0)&(esc_flag==0)&(chaxun_flag==0)&(enter_flag==0))
{
if(keytimes1<=11)
{
switch(keytimes1)
{
case 0 :
keytimes1++; //第一次为空操作,因为是编程按键产生的keyonflag
break ;
case 1 :
num_disp(keynumber,0x9a);
key_card[0]=keynumber<<4;
keytimes1++;
keynumber1[0]=keynumber;
break ;
case 2 :
num_disp(keynumber1[0],0x9a);
num1_disp(keynumber);
key_card[0]=key_card[0]+keynumber;
keytimes1++;
break ;
case 3 :
num_disp(keynumber,0x9b);
key_card[1]=keynumber<<4 ;
keytimes1++;
keynumber1[1]=keynumber;
break ;
case 4 :
num_disp(keynumber1[1],0x9b);
num1_disp(keynumber);
key_card[1]=key_card[1]+keynumber;
keytimes1++;
break ;
case 5 :
num_disp(keynumber,0x9c);
key_card[2]=keynumber<<4 ;
keytimes1++;
keynumber1[2]=keynumber;
break ;
case 6:
num_disp(keynumber1[2],0x9c);
num1_disp(keynumber);
key_card[2]=key_card[2]+keynumber;
keytimes1++;
break;
case 7 :
num_disp(keynumber,0x9d);
key_card[3]=keynumber<<4 ;
keytimes1++;
keynumber1[3]=keynumber;
break ;
case 8:
num_disp(keynumber1[3],0x9d);
num1_disp(keynumber);
key_card[3]=key_card[3]+keynumber;
keytimes1++;
break;
case 9 :
num_disp(keynumber,0x9e);
key_card[4]=keynumber<<4 ;
keytimes1++;
keynumber1[4]=keynumber;
break ;
case 10:
num_disp(keynumber1[4],0x9e);
num1_disp(keynumber);
key_card[4]=key_card[4]+keynumber;
keytimes1++;
break;
case 11 :
keytimes1++;
default:
break;
} //end switch(keytimes1)
}//end (keytimes1<=11)
}//if((clrlcd_flag==0)&(esc_flag==0)&(chaxun_flag==0)&(enter_flag==0))
if(clrlcd_flag)
{
if(keytimes1>=11)
{
num_disp(keynumber1[5],0x9e);
num_disp2(" ");
keytimes1=10 ;
key_card[4]&=0xf0;
}
else
{
if(keytimes1<=1)
{
keytimes1=1 ;
}
else
{
switch(--keytimes1)
{
case 9:
num_disp1(" ",0x9e);
key_card[4]=0;
break;
case 8:
num_disp(keynumber1[4],0x9d);
num_disp2(" ");
key_card[3]&=0xf0;
break;
case 7:
num_disp1(" ",0x9d);
key_card[3]=0;
break;
case 6:
num_disp(keynumber1[3],0x9c);
num_disp2(" ");
key_card[2]&=0xf0;
break;
case 5:
num_disp1(" ",0x9c);
key_card[2]=0;
break;
case 4:
num_disp(keynumber1[2],0x9b);
num_disp2(" ");
key_card[1]&=0xf0;
break;
case 3:
num_disp1(" ",0x9b);
key_card[1]=0;
break;
case 2:
num_disp(keynumber1[1],0x9a);
num_disp2(" ");
key_card[0]&=0xf0;
break;
case 1:
num_disp1(" ",0x9a);
key_card[0]=0;
break;
default:
break;
}//end of switch(keytime2)
} //end of else
}//end of else
keyon_flag1=0 ;
keyon_flag=0 ;
clrlcd_flag=0 ;
}//end of if(clrlcd_flag)
if(enter_flag==1)
{
//keynumber=0 ;
enter_flag=0 ;
program_flag=0 ;
keywrcard_flag=0;
keytimes1=0 ;
cmpwrclrkey();
display(" 时 分 秒 ",0x88);
display(" ",0x98);
}
keyon_flag=0 ;
keyon_flag1=0 ;
}//end of if(keyon_flag1)
if(esc_flag)
{
program_flag=0 ;
keywrcard_flag=0;
esc_flag=0 ;
display(" 时 分 秒 ",0x88);
display(" ",0x98);
keytimes1=0 ;
keynumber=0 ;
}
}
//////////////查询门禁事件纪录////////////
chaxun_shijian()
{
uchar i,w,s;
uchar addr;
clrram();
addr=0x80;
for(i=0;i<5;i++)
{
cs_fm;
BANK0;
if(!lvl)
{P4|=0x07;}
w=*point1>>4;
s=*(point1++)&0x0f;
num_disp(w,addr++);
num1_disp(s);
}
addr=0x93;
for(i=0;i<5;i++)
{
cs_fm;
BANK0;
if(!lvl)
{P4|=0x07;}
w=*point1/10;
s=*(point1++)%10;
num_disp(w,addr++);
num1_disp(s);
}
addr=0x88;
for(i=0;i<5;i++)
{
cs_fm;
BANK0;
if(!lvl)
{P4|=0x07;}
w=*point1>>4;
s=*(point1++)&0x0f;
num_disp(w,addr++);
num1_disp(s);
}
addr=0x9b;
for(i=0;i<5;i++)
{
cs_fm;
BANK0;
if(!lvl)
{P4|=0x07;}
w=*point1/10;
s=*(point1++)%10;
num_disp(w,addr++);
num1_disp(s);
}
ncs_fm;
one_flag=0;
next_flag=0;
last_flag=0;
}
///查询已存在的卡号/////
chaxun_card()
{
uchar i,w,s;
uchar row=0,col=0;
clrram();
for(i=0;i<28;i++)
{
cs_fm;
BANK0;
if(!lvl)
{P4|=0x07;}
w=*point1>>4;
s=*point1&0x0f;
point1++;
if(col==7) //判断换行
{ //若不判断,则自动从第一行到第三行
col=0;
row++;
}
num_disp(w,AC_TABLE[8*row+col]);
num1_disp(s);
col++;
}
ncs_fm;
one_flag=0;
next_flag=0;
last_flag=0;
}
//查询每个权限下的时段信息/////
chaxun_shiduan()
{
uchar i,w,s;
uchar row=1,col=0;
display("权限: ",0x80);
w=quanxian_num>>4;
s=quanxian_num&0x0f;
num_disp(w,0x84);
num1_disp(s);
for(i=0;i<10;i++)
{
cs_fm;
BANK0;
if(!lvl)
{P4|=0x07;}
w=*point1/10;
s=*point1%10;
point1++;
if(col==8) //判断换行
{ //若不判断,则自动从第一行到第三行
col=0;
row++;
}
num_disp(w,AC_TABLE[8*row+col]);
num1_disp(s);
col++;
}
ncs_fm;
one_flag=0;
next_flag=0;
last_flag=0;
}
chaxun_holiday()
{
uchar i,j,w,s;
uchar row=0,col=0;
for(j=0;j<8;j++)
{
for(i=0;i<2;i++)
{
cs_fm;
BANK0;
if(!lvl)
{P4|=0x07;}
w=*point1/10;
s=*point1%10;
point1++;
if(col==8) //判断换行
{ //若不判断,则自动从第一行到第三行
col=0;
row++;
}
num_disp(w,AC_TABLE[8*row+col]);
num1_disp(s);
col++;
}
chn_disp1(";",AC_TABLE[8*row+col]);
col++;
chn_disp1(" ",AC_TABLE[8*row+col]);
col++;
}
ncs_fm;
one_flag=0;
next_flag=0;
last_flag=0;
}
////crc16校验///////////////
void crc16 (uchar in_data,uint *crc)
{ uchar i;
for(i=0;i<8;i++)
{ //CRC polynomial
if((*crc^in_data)&0x0001)
{ *crc=(*crc>>1)^0xa001;
}
else
{ *crc>>=1;
}
in_data>>=1;
}
}
crc_16(uchar in_data,uint *crc)
{ uchar i;
for(i=0;i<8;i++)
{ //CRC polynomial
if((*crc^in_data)&0x0001)
{ *crc=(*crc>>1)^0xa001;
}
else
{ *crc>>=1;
}
in_data>>=1;
}
}
///发送地址///////////////
void send_addr(uchar sentm)
{check_crc=0;
SBUF0=sentm;
crc16(sentm,&check_crc);
while(TI0==0)
{;}
TI0=0;
}
////发送数据/////////////
send_data(uchar sentm)
{
SBUF0=sentm;
crc16(sentm,&check_crc);
while(TI0==0)
{;}
TI0=0;
}
///发送校验码//////////
send_crc()
{ SBUF0=check_crc;
while(TI0==0)
{;}
TI0=0;
SBUF0=check_crc>>8;
while(TI0==0)
{;}
TI0=0;
}
open485()
{
REN0=0;
RD0_IO=0;//发送允许
TB80=0;
Timer0_us(30);
}
close485()
{
RD0_IO=1;//接收允许
REN0=1;
Timer0_us(30);
}
///////////////////////////////////////////
void sendno()
{
open485();
kflag=0;
nop();
send_addr(addr);
nop();
send_data(0xff);
//nop;
send_crc();
nop();
close485();
}
void sendyes()
{
open485();
kflag=0;
nop();
send_addr(addr);
nop();
send_data(0x00);
//nop;
send_crc();
nop();
close485();
}
/////////////////////////////////////////////////
fun31()
{
uchar j=0;
if(sendkeycode[0]!=0&&sendkeycode[7]<4)
{sendkeycode[7]+=1;
nop();
open485();
nop();
send_addr(addr);
nop();
for(j=0;j<8;j++)
send_data(sendkeycode[j]);
send_data(0x0);
send_data(0x0);
send_data(0x0);
send_crc();
nop();
nop();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -