但是不知道是否最简,八辈子没用过单片机了<br /><br />typedef struct<br />{<br /> volatile unsigned char* port;<br /> unsigned char portMask; <br />} tGPIO;<br /><br /> <br />tGPIO cols[COL_COUNT] =<br />{<br /> {&TRISC, 1<<5},<br /> {&TRISC, 1<<6},<br /> {&TRISC, 1<<7},<br />};<br /><br />#define bitset(var,mask) ((var) |= (mask))<br />#define bitclr(var,mask) ((var) &= ~(mask))<br /><br />void KeySetCol(unsigned char col)<br />{<br /> unsigned char i;<br /><br /> for (i=0; i<COL_COUNT; i++)<br /> bitset(*cols.port, cols.portMask);<br /><br /> bitclr(*cols[col].port, cols[col].portMask);<br />}
|