uchar anjian(void) { uchar num; P1=0xfe; /*檢查第一行*/ temp=P1;/*讀回IO口值*/ temp=temp&0xf0; /*將低四位遮蔽掉*/ while(temp!=0xf0)/*如果不相等證明有鍵按下*/ { delay(6); temp=P1; temp=temp&0xf0; while(temp!=0xf0) { temp=P1;/*把讀回的埠值傳給temp*/ switch(temp) { case 0xee:num=1;/*1*/ break; case 0xde:num=2;/*2*/ break; case 0xbe:num=3;/*3*/ break; case 0x7e:num=14;/*開始*/ break; } while(P1==oxfe);/////////////////改動///////////////////////// while(temp!=0xf0) { temp=P1; temp=temp&0xf0; } } } P1=0xfd;/*檢查第二行*/ temp=P1;/*讀回IO口值*/ temp=temp&0xf0; /*將低四位遮蔽掉*/ while(temp!=0xf0)/*如果不相等證明有鍵按下*/ { delay(6); temp=P1; temp=temp&0xf0; while(temp!=0xf0) { temp=P1;/*把讀回的埠值傳給temp*/ switch(temp) { case 0xed:num=4;/*4*/ break; case 0xdd:num=5;/*5*/ break; case 0xbd:num=6;/*6*/ break; case 0x7d:num=15;/*停止*/ break; } while(P1==0xfd);/////////////改動//////////////////// while(temp!=0xf0)/*鬆手檢測*/ { temp=P1; temp=temp&0xf0; } } } P1=0xfb;/*檢查第三行*/ temp=P1;/*讀回IO口值*/ temp=temp&0xf0; /*將低四位遮蔽掉*/ while(temp!=0xf0)/*如果不相等證明有鍵按下*/ { delay(6); temp=P1; temp=temp&0xf0; while(temp!=0xf0) { temp=P1;/*把讀回的埠值傳給temp*/ switch(temp) { case 0xeb:num=7;/*7*/ break; case 0xdb:num=8;/*8*/ break; case 0xbb:num=9;/*9*/ break; case 0x7b:num=16;/*SET*/ break; } while(P1==oxfb);/////////////////改動//////////////////////// while(temp!=0xf0) { temp=P1; temp=temp&0xf0; } } } P1=0xf7; /*檢查第四行*/ temp=P1;/*讀回IO口值*/ temp=temp&0xf0; /*將低四位遮蔽掉*/ while(temp!=0xf0)/*如果不相等證明有鍵按下*/ { delay(6); temp=P1; temp=temp&0xf0; while(temp!=0xf0) { temp=P1; /*把讀回的埠值傳給temp*/ switch(temp) { case 0xe7:num=0;/*0*/ break; case 0xd7:num=11;/*OK*/ break; case 0xb7:num=12;/*CE*/ break; case 0x77:num=13;/*EXIT*/ break; } while(P1==oxf7);//////////////改動//////////////////// while(temp!=0xf0) { temp=P1; temp=temp&0xf0; } } } return num;/*把按鍵鍵值num返回給anjian()*/ 你在自己看看吧,應該就是這樣改動的,方法就是按照我的改動方法
uchar anjian(void) { uchar num; P1=0xfe; /*檢查第一行*/ temp=P1;/*讀回IO口值*/ temp=temp&0xf0; /*將低四位遮蔽掉*/ while(temp!=0xf0)/*如果不相等證明有鍵按下*/ { delay(6); temp=P1; temp=temp&0xf0; while(temp!=0xf0) { temp=P1;/*把讀回的埠值傳給temp*/ switch(temp) { case 0xee:num=1;/*1*/ break; case 0xde:num=2;/*2*/ break; case 0xbe:num=3;/*3*/ break; case 0x7e:num=14;/*開始*/ break; } while(P1==oxfe);/////////////////改動///////////////////////// while(temp!=0xf0) { temp=P1; temp=temp&0xf0; } } } P1=0xfd;/*檢查第二行*/ temp=P1;/*讀回IO口值*/ temp=temp&0xf0; /*將低四位遮蔽掉*/ while(temp!=0xf0)/*如果不相等證明有鍵按下*/ { delay(6); temp=P1; temp=temp&0xf0; while(temp!=0xf0) { temp=P1;/*把讀回的埠值傳給temp*/ switch(temp) { case 0xed:num=4;/*4*/ break; case 0xdd:num=5;/*5*/ break; case 0xbd:num=6;/*6*/ break; case 0x7d:num=15;/*停止*/ break; } while(P1==0xfd);/////////////改動//////////////////// while(temp!=0xf0)/*鬆手檢測*/ { temp=P1; temp=temp&0xf0; } } } P1=0xfb;/*檢查第三行*/ temp=P1;/*讀回IO口值*/ temp=temp&0xf0; /*將低四位遮蔽掉*/ while(temp!=0xf0)/*如果不相等證明有鍵按下*/ { delay(6); temp=P1; temp=temp&0xf0; while(temp!=0xf0) { temp=P1;/*把讀回的埠值傳給temp*/ switch(temp) { case 0xeb:num=7;/*7*/ break; case 0xdb:num=8;/*8*/ break; case 0xbb:num=9;/*9*/ break; case 0x7b:num=16;/*SET*/ break; } while(P1==oxfb);/////////////////改動//////////////////////// while(temp!=0xf0) { temp=P1; temp=temp&0xf0; } } } P1=0xf7; /*檢查第四行*/ temp=P1;/*讀回IO口值*/ temp=temp&0xf0; /*將低四位遮蔽掉*/ while(temp!=0xf0)/*如果不相等證明有鍵按下*/ { delay(6); temp=P1; temp=temp&0xf0; while(temp!=0xf0) { temp=P1; /*把讀回的埠值傳給temp*/ switch(temp) { case 0xe7:num=0;/*0*/ break; case 0xd7:num=11;/*OK*/ break; case 0xb7:num=12;/*CE*/ break; case 0x77:num=13;/*EXIT*/ break; } while(P1==oxf7);//////////////改動//////////////////// while(temp!=0xf0) { temp=P1; temp=temp&0xf0; } } } return num;/*把按鍵鍵值num返回給anjian()*/ 你在自己看看吧,應該就是這樣改動的,方法就是按照我的改動方法