解释一下这段程序unsigned char GetAryKey(void) { //P36无--P42 //P37无--P44 u8 keyH=0, keyL=0, key=0; P44=1;P42=1;P35=1;P34=1; P33=0;P32=0;P31=0;P30=0; if(P44)keyH |=0x80; if(P42)keyH |=0x40; if(P35)keyH |=0x20; if(P34)keyH |=0x10; P44=0;P42=0;P35=0;P34=0; P33=1;P32=1;P31=1;P30=1; if(P33)keyL |=0x08; if(P32)keyL |=0x04; if(P31)keyL |=0x02; if(P30)keyL |=0x01; switch(keyH) { case 0x70: key = 1; break;//0111 case 0xb0: key = 2; break;//1011 case 0xd0: key = 3; break;//1101 case 0xe0: key = 4; break;//1110 default: return 0; } switch(keyL) { case 0x07: return key; //0111 case 0x0b: return key + 4;//1011 case 0x0d: return key + 8;//1101 case 0x0e: return key + 12;//1110 default: return 0; } }
时间: 2023-02-12 13:23:16 浏览: 540
实时多任务系统µC/OS-Ⅱ在DSP上的移植
这段程序实现了一个函数GetAryKey,用来获取一个数组的键。它定义了两个变量keyH和keyL,用来存储高位和低位的值。首先,程序将P44, P42, P35, P34设置为1,然后判断这些引脚上的值是否为1,如果是,则将对应的位设置为1。接下来,将P44, P42, P35, P34设置为0,然后将P33, P32, P31, P30设置为1,再判断这些引脚上的值是否为1,如果是,则将对应的位设置为1。接着,通过两个switch语句来判断keyH和keyL的值,根据值的不同,返回不同的值。如果keyH和keyL都没有匹配到任何一个case,则返回0。
阅读全文