小弟在做51学习 。用键盘输入,数码管显示共六个管子。但我在键盘输入时,六个数码管总是显示同一个键值。p2口输出显示。p1口接收键盘。p0用于显示选择。用外部中断0启动扫描。下面是我的程序。请高人指点。如何实现按位接收键值并显示。小弟十分感谢!!!
void time0() interrupt 0 using 0 { unsigned char i; P1=0x00;
for(i=0;i<2;i++) {
if(i==0) { E3=1;SA=0;SB=0;SC=0;//开第0位显示 ch[0]=keyscan();//键盘扫描 delay(3); }
if(i==1) { E3=1;SA=1;SB=0;SC=0;//开第一位显示 ch[1]=keyscan(); delay(3); } 。。。。。。
if(i==6) { E3=1;SA=0;SB=1;SC=1;//开第6位显示 ch[5]=keyscan(); delay(3); }
}
/*if(1) { E3=1;SA=0;SB=0;SC=0; keyscan(); delay(1); }
if(1) { E3=1;SA=1;SB=0;SC=0; //P2=table[3]; keyscan(); delay(1); }*/
}
void main(void) { unsigned char i; SP=0x50; EA=0; time_init();//设置初值
for(i=0;i<2;i++) { P0=1; E3=1; display(ch); delay(1); }
} |