#include<reg51.h>
#include<ABSACC.h>
#include<stdio.h>
#include<intrins.h>
#define uchar unsigned char
#define unit unsigned int
sbit P3_6=P2^1;
sbit LcdRs=P3^2;
sbit LcdRw=P3^1;
sbit LcdEn=P3^0;
sbit P2_0=P2^0;
unit key_val=16;
unit m=0,count=0,count2=0;
unit pass=0,pass0=0,pass1=0,pass2=0,o=0,n=0;
unit co[6]={0,0,0,0,0,0};
unit cp[1]={0};
unit cq[7]={ 0,0,0,0,0,0 ,0};
uchar sk[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
uchar password[16];
void DelayMs(unsigned int n){
unsigned int i,j;
for(i=0;i<n;i++)
for(j=0;j<120;j++);}
void Check_key(void){
unsigned int row,col,tmp1,tmp2;
tmp1=0x10;
for(row=0;row<4;row++){
P1=0x0f;
P1=~tmp1;
tmp1*=2;
if((P1&0x0f)<0x0f)
{DelayMs(30);
if((P1&0x0f)<0x0f)
{ tmp2=0x01;
for (col=0;col<4;col++){
if((P1&tmp2)==0x00){
key_val=row*4+col;
while ((P1&tmp2)==0x00);
return ;}
tmp2*=2;}
while((P1&tmp2)==0x00);}}} }
void rec_key(void)
{
if(key_val!=16){
if(m>6)
m=0;
if(count2==1)
{if (key_val==0){
sk[0]=1;
count++;
pass=0;
password[m]=0;
m++;
DelayMs(10);
P3_6=0;
DelayMs(100);
P3_6=1;
key_val=16;}
if(key_val==1){
sk[1]=1;
count++;
pass=1;
password[m]=1;
m++;
DelayMs(10);P3_6=0;
DelayMs(100);P3_6=1;
key_val=16;}
if(key_val==2 ){
sk[2]=1;
count++;
pass=2;
password[m]=2;
m++;
DelayMs(10);P3_6=0;
DelayMs(100);P3_6=1;
key_val=16; }
if(key_val==3){
sk[3]=1;
count++;pass=3;password[m]=3;
m++;
DelayMs(10);P3_6=0;
DelayMs(100);P3_6=1;
key_val=16;
}
if(key_val==4){
sk[4]=1;
count++;
pass=4;
password[m]=4;
m++;
DelayMs(10);P3_6=0;
DelayMs(100);P3_6=1;
key_val=16;}
if(key_val==5){
sk[5]=1;
count++;
pass=5;
password[m]=5;
m++;
DelayMs(10);P3_6=0;
DelayMs(100);P3_6=1;
key_val=16;}
if(key_val==6){
sk[6]=1;
count++;
pass=6;
password[m]=6;
m++;
DelayMs(10);P3_6=0;
DelayMs(100);P3_6=1;
key_val=16;}
if(key_val==7){
sk[7]=1;
count++;
pass=7;
password[m]=7;
m++;
DelayMs(10);P3_6=0;
DelayMs(100);P3_6=1;
key_val=16;}
if(key_val==8){
sk[8]=1;
count++;
pass=8;
password[m]=4;
m++;
DelayMs(10);P3_6=0;
DelayMs(100);P3_6=1;
key_val=16;}
if(key_val==9){
sk[9]=1;
count++;
pass=9;
password[m]=9;
m++;
DelayMs(10);P3_6=0;
DelayMs(100);P3_6=1;
key_val=16;}
if(key_val==10){
sk[10]=1;
count++;
pass=10;
password[m]=10;
m++;
DelayMs(10);P3_6=0;
DelayMs(100);P3_6=1;
key_val=16;}
if(key_val==11){
sk[11]=1;
count++;
pass=11;
password[m]=11;
m++;
DelayMs(10);P3_6=0;
DelayMs(100);P3_6=1;
key_val=16;}
if(key_val==12){
sk[12]=1;
count++;
pass=12;
password[m]=12;
m++;
DelayMs(10);P3_6=0;
DelayMs(100);P3_6=1;
key_val=16;}
if(key_val==13){
sk[13]=1;
count++;
pass=13;
password[m]=16;
m++;
DelayMs(10);P3_6=0;
DelayMs(100);P3_6=1;
key_val=16;}
if(key_val==14){
sk[14]=1;
count++;
pass=14;
password[m]=14;
m++;
DelayMs(10);P3_6=0;
DelayMs(100);P3_6=1;
key_val=16;}
if(key_val==15){
sk[15]=1;
count++;
pass=15;
password[m]=15;
m++;
DelayMs(10);P3_6=0;
DelayMs(100);P3_6=1;
key_val=16;}
if(m>10)
m=0; }
unsigned char LCD_Wait(void){//这行附近有个语法错误
LcdEn=0;LcdRs=0;
LcdRw=1;_nop_();
LcdEn=1;_nop_();
LcdEn=0;_nop_();
while(DBPort&0x80)
if(DBPort&0x80==0x80)
return DBPort;}
#define LCD_COMMAND 0
#define LCD_DATA 1
#define LCD_CLEAR_SCREEN 0x01
#define LCD_HOMING 0x02
void LCD_Write(bit style,unsigned char input){
LCD_Wait();
LcdEn=0;
LcdRs=style;
LcdRw=0;_nop();
DBPort=input; _nop();
LcdEn=1;_nop();
LcdEn=0; _nop();
}
#define LCD_SHOW 0x04
#define LCD_HIDE 0x00
#define LCD_CURSOR 0x02
#define LCD_NO_CURSOR 0x00
#define LCD_FLASH 0x01
#define LCD_NO_FLASH 0x00
void LCD_SetDisplay(unsigned char DisplayMode){
LCD_Write(LCD_COMMAND,0x08|DisplayMode);}
#define LCD_AC_Up 0x02
#define LCD_AC_DOWN 0x00