标题: 上图,来高手吧、 [打印本页] 作者: 恋May 时间: 2011-8-15 19:50 标题: 上图,来高手吧、 [attach]8837[/attach]
int keyscan()
{
uchar temp,z,x;
DDRB=0xf0;
PORTB=0x0f;
x=PORTB&0x0f;
if(x!=0x0f)
{
delay1ms(10);
x=PORTB&0x0f;
if(x!=0x0f)
{
temp=PORTB&0x0f;
DDRB=0x0f;
PORTB=0xf0;
z=temp|PORTB;
x=PORTB&0xf0;
while(x!=0xf0)//松手检测
{
x=PORTB&0xf0;
}
switch(z)
{
case 0xee: num =0; break;
case 0xde: num =4; break;
case 0xbe: num =8; break;
case 0x7e: num =12; break;
case 0xed: num =1; break;
case 0xdd: num =5; break;
case 0xbd: num =9; break;
case 0x7d: num =13; break;
case 0xeb: num =2; break;
case 0xdb: num =6;break;
case 0xbb: num =10;break;
case 0x7b: num =14;break;
case 0xe7: num =3;break;
case 0xd7: num =7;break;
case 0xb7: num =11;break;
case 0x77: num =15;break;
default:num=988;
}
}
}
return num;
}
感觉程序没太大问题,出错的现象是什么?作者: 恋May 时间: 2011-8-16 10:49
一切从0开始。今天早上起来自己从头编写了一个 扫描程序,问题解决了。马上来上 程序。作者: 恋May 时间: 2011-8-16 10:50
int key(void) {
int readkey;
int x_temp,y_temp;
DDRB=0X0f;
PUCR_PUPBE=1;
PORTB=0Xf0;
if(PORTB!=0xf0) {
delay(1000);
if(PORTB!=0xf0) {
PORTB&=0xf0;
x_temp=PORTB;
DDRB=0Xf0;
PORTB=0X0f;
if(PORTB!=0x0f){
PORTB&=0X0f;
y_temp=PORTB;
readkey=(x_temp|y_temp);
switch(readkey) {
case 0xee:num=1;break; //1
case 0xde:num=2;break;
case 0xbe:num=3;break;
case 0x7e:num=4;break;
case 0xed:num=5;break;
case 0xdd:num=6;break;
case 0xbd:num=7;break;
case 0x7d:num=8;break;
case 0xeb:num=9;break;
case 0xdb:num=10;break;
case 0xbb:num=11;break;
case 0x7b:num=12;break;
case 0xe7:num=13;break;
case 0xd7:num=14;break;
case 0xb7:num=15;break;
case 0x77:num=16;break;