红联Linux门户
Linux帮助

arm 键盘扫描程序问题

发布时间:2011-04-14 21:07:56来源:红联作者:王文果
各位大侠,arm U8 Key_Scan函数
rGPGDAT = rGPGDAT & (~((1<<6)|(1<<2))) | (1<<6) | (0<<2) ; //GPG6,2 output 0
rGPEDAT = rGPEDAT & (~((1<<13)|(1<<11))) | (1<<13) | (1<<11) ; //GPE13,11 output 0
if( (rGPFDAT&(1<< 0)) == 0 ) return 16 ;
else if( (rGPFDAT&(1<< 2)) == 0 ) return 15 ;
else if( (rGPGDAT&(1<< 3)) == 0 ) return 14 ;
else if( (rGPGDAT&(1<<11)) == 0 ) return 13 ;

rGPGDAT = rGPGDAT & (~((1<<6)|(1<<2))) | (0<<6) | (1<<2) ; //GPG6,2 output 0
rGPEDAT = rGPEDAT & (~((1<<13)|(1<<11))) | (1<<13) | (1<<11) ; //GPE13,11 output 0
if( (rGPFDAT&(1<< 0)) == 0 ) return 11 ;
else if( (rGPFDAT&(1<< 2)) == 0 ) return 8 ;
else if( (rGPGDAT&(1<< 3)) == 0 ) return 5 ;
else if( (rGPGDAT&(1<<11)) == 0 ) return 2 ;

rGPGDAT = rGPGDAT & (~((1<<6)|(1<<2))) | (1<<6) | (1<<2) ; //GPG6,2 output 0
rGPEDAT = rGPEDAT & (~((1<<13)|(1<<11))) | (1<<13) | (0<<11) ; //GPE13,11 output 0
if( (rGPFDAT&(1<< 0)) == 0 ) return 10 ;
else if( (rGPFDAT&(1<< 2)) == 0 ) return 7 ;
else if( (rGPGDAT&(1<< 3)) == 0 ) return 4 ;
else if( (rGPGDAT&(1<<11)) == 0 ) return 1 ;

rGPGDAT = rGPGDAT & (~((1<<6)|(1<<2))) | (1<<6) | (1<<2) ; //GPG6,2 output 0
rGPEDAT = rGPEDAT & (~((1<<13)|(1<<11))) | (0<<13) | (1<<11) ; //GPE13,11 output 0
if( (rGPFDAT&(1<< 0)) == 0 ) return 12 ;
else if( (rGPFDAT&(1<< 2)) == 0 ) return 9 ;
else if( (rGPGDAT&(1<< 3)) == 0 ) return 6 ;
else if( (rGPGDAT&(1<<11)) == 0 ) return 3 ;
else return 0xff ;
读了很久没看懂,希望哪位大侠指点一下
文章评论

共有 3 条评论

  1. 王文果 于 2011-04-14 21:30:40发表:

    应该是

  2. 王文果 于 2011-04-14 21:26:44发表:

    {:2_97:}

  3. 王文果 于 2011-04-14 21:26:25发表:

    是不是和arm按键机制有关