#include<reg52.h> #define uchar unsigned char #define uint unsigned int uchar code table[4]={0xef,0xdf,0xbf,0x7f}; //??? uchar code table1[4]={0x3d,0x28,0x3c,0x61};//??"?"? uchar code table2[4]={0x28,0x70,0x30,0x68};//??"?"? uchar code table3[4]={0x74,0x60,0xeb,0x3d};//??"??"? uchar inbuf[4]={0x3d,0x28,0x3c,0x61}; //????? uchar pm[4]={1,2,3,4};//?? uchar inbuf[4],pmbuf[4]; uchar temp,enterflag,num2,count; sbit sda=P3^5; sbit scl=P3^4; sbit D1=P3^7; //??? sbit D2=P3^3; //??? sbit D3=P3^6; //??? void delayus() //????? { ;; } void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=120;y>0;y--); } void start() //???? { sda=1; delayus(); scl=1; delayus(); sda=0; delayus(); } void stop() //???? { sda=0; delayus(); scl=1; delayus(); sda=1; delayus(); } void respons() //???? { uchar i; scl=1; delayus(); while((sda==1)&&(i<250))i++; scl=0; delayus(); } void init() //??? { sda=1; delayus(); scl=1; delayus(); } void write_byte(uchar date) //???24c02??? { uchar i,temp; temp=date; for(i=0;i<8;i++) { temp=temp<<1; scl=0; delayus(); sda=CY; delayus(); scl=1; delayus(); delayus(); } scl=0; delayus(); sda=1; delayus(); } uchar read_byte() //???24c02??? { uchar i,k; scl=0; delayus(); sda=1; delayus(); for(i=0;i<8;i++) { scl=1; delayus(); k=(k<<1)|sda; scl=0; delayus(); } return k; } void write_add(uchar address,uchar date) { start(); write_byte(0xa0); respons(); write_byte(address); respons(); write_byte(date); respons(); stop(); } uchar read_add(uchar address) { uchar date; start(); write_byte(0xa0); respons(); write_byte(address); respons(); start(); write_byte(0xa1); respons(); date=read_byte(); stop(); return date; } //****????****// void pmset() { uchar i; for(i=0;i<4;i++) { init(); write_add(i,pmbuf[i]); } delay(100); for(i=0;i<4;i++) { init(); pm[i]=read_add(i); } } //****????****// void readpm() { uchar i; for(i=0;i<4;i++) { init(); pm[i]=read_add(i); } } //****????****// uchar pmcmp() { char flag; char t,num1; t=0; num1=0; for(t=0;t<4;t++) if(pm[t]==pmbuf[t]) num1++; if(num1==4) flag=1; else{ flag=0;t=4;} return(flag); } //****????****// uchar keyscan() { uchar num=0; temp=P2; temp=temp&0xf0; while(temp!=0xf0) { delay(10); temp=P2; temp=temp&0xf0; while(temp!=0xf0) { temp=P2; switch(temp) { case 0xee:num=1; break; case 0xde:num=2; break; case 0xbe:num=3; break; case 0x7e:num=4; break; } while(temp!=0xf0) { temp=P2; temp=temp&0xf0; } } } P2=0xfd; temp=P2; temp=temp&0xf0; while(temp!=0xf0) { delay(10); temp=P2; temp=temp&0xf0; while(temp!=0xf0) { delay(10); temp=P2; temp=temp&0xf0; while(temp!=0xf0) { temp=P2; switch(temp) { case 0xed:num=5; break; case 0xdd:num=6; break; case 0xbd:num=7; break; case 0x7d:num=8; break; } while(temp!=0xf0) { temp=P2; temp=temp&0xf0; } } } P2=0xfb; temp=P2; temp=temp&0xf0; while(temp!=0xf0) { delay(10); temp=P2; temp=temp&0xf0; while(temp!=0xf0) { temp=P2; switch(temp) { case 0xeb:num=9; break; case 0xdb:num=10; break; case 0xbb:num=11; break; case 0x7b:num=12; break; } while(temp!=0xf0) { temp=P2; temp=temp&0xf0; } } } } return num; } //****???****// void main() { uchar key,count,pmflag; uchar i,j; count=0; num2=0; enterflag=0; pmflag=0; readpm(); while(1) { for(i=0;i<4;i++) { P2=table[i]; P0=inbuf[i]; for(j=500;j>0;j--); } P2=0xff; key=keyscan(); switch(key) { case 1: if(count<4) { inbuf[count]=0xf7; pmbuf[count]=0; count++; } break; case 2: if(count<4) { inbuf[count]=0xf7; pmbuf[count]=1; count++; } break; /* case 3: if(count<4) { inbuf[count]=0xf7; pmbuf[count]=2; count++; } count++; // } break; */ case 3: if(count<4) { inbuf[count]=0xf7; pmbuf[count]=2; count++; } break; case 4: if(count<4) { inbuf[count]=0xf7; pmbuf[count]=3; count++; } break; case 5: if(count<4) { inbuf[count]=0xf7; pmbuf[count]=4; count++; } break; case 6: if(count<4) { inbuf[count]=0xf7; pmbuf[count]=5; count++; } break; case 7: if(count<4) { inbuf[count]=0xf7; pmbuf[count]=6; count++; } break; case 8: if(count<4) { inbuf[count]=0xf7; pmbuf[count]=7; count++; } break; case 9: if(count<4) { inbuf[count]=0xf7; pmbuf[count]=8; count++; } break; case 10: if(count<4) { inbuf[count]=0xf7; pmbuf[count]=9; count++; } break; case 11:// { //if(count= =4) if(count==4) {count=0; pmset(); } for(i=0;i<4;i++) inbuf[i]=table1[i]; //break; } break; case 12: { enterflag=1; //if(count= =4) if(count==4) pmflag=pmcmp(); else pmflag=0; break; } default: break; } // if(enterflag= =1) if(enterflag==1) { enterflag=0; count=0; for(i=0;i<4;i++) pmbuf[i]=0xf7; //if(pmflag= =1) if(pmflag==1) { P1=0xf0; D3=0; while(1) { for(i=0;i<4;i++) { P2=table[i]; P0=table2[i]; for(j=500;j>0;j--); } //if(D2= =0) //?? if(D2==0) { D3=1; P1=0xff; for(i=0;i<4;i++) inbuf[i]=table1[i]; break; } } } //if(pmflag= =0) if(pmflag==0) { num2++; P1=0x0f; for(i=0;i<4;i++) inbuf[i]=table1[i]; // if(num2= =3) if(num2==3) { while(1) { P1=0; for(i=0;i<4;i++) { for(j=500;j>0;j--); P2=table[i]; P0=table3[i]; for(j=500;j>0;j--); for(j=50;j>0;j--) D1=~D1; } //if(D2= =0) //?? if(D2==0) {num2=0; P1=0xff; for(i=0;i<4;i++) inbuf[i]=table1[i]; break; } } } } } } } |
|
没错,括号的确是出了问题 |
你这键盘扫描函数,层层嵌套,中括号可能有少或多的,恕我暂时手里没有电脑。只能推测 |
手上没电脑,用手机看你这代码特蛋疼!!! |
这叫人怎么要看。。。起码要知道那一块有问题吧、 |