P2=4Location,首先Location4意味着值左移2位后赋值给P2整个字节(8个位),原本是通过位赋值,分别单独对P2的位2,3,4单独赋值,楼主代码不全,猜测可能是实现单独对具体GPIO口的操作,即P2的2口,3口,4口。简化成P2=4*Location,就不需要单独操作,比如,
Locatiion是0,左移2位后(乘以4)是0,二进制表示00000000,对应原来的case 8;
Locatiion是1,左移2位后(乘以4)是4,二进制表示00000100,对应原来的case 7;
Locatiion是2,左移2位后(乘以4)是8,二进制表示00001000,对应原来的case 6;
Locatiion是3,左移2位后(乘以4)是12,二进制表示00001100,对应原来的case 5;
Locatiion是4,左移2位后(乘以4)是16,二进制表示00010000,对应原来的case 4;
Locatiion是5,左移2位后(乘以4)是20,二进制表示00010100,对应原来的case 3;
Locatiion是6,左移2位后(乘以4)是24,二进制表示00011000,对应原来的case 2;
Locatiion是7,左移2位后(乘以4)是28,二进制表示00011100,对应原来的case 1;
这样实现的整体效果就是对P2的三个位直接操作。