我是C编程的新手,我想将一个十六进制代码(38)发送到8个引脚(在视差螺旋桨微控制器上),这样第一个引脚变为0,下一个引脚变为0,下一个引脚变为0引脚获得1,等等.然后将二进制代码发送到每个引脚会更容易.
顺便说一下,这是C代码.到目前为止我使用的代码,通过使用二进制工作是:
//int port[] = {27,26,25,24,23,22,21,20};
int i = 8;
while(i >0)
{ //while start
--i;
low(27);
low(26);
high(25);
high(24);
high(23);
low(22);
low(21);
low(20);
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是将一个十六进制代码(38)发送到引脚20到27.
循环应该有点不同
int port = 0x20; // starting port
int val = 0x38; // value
int i;
for(i=0 ; i<8 ; i++) {
if (val & 1) high(port);
else low (port);
val >>= 1; // shift val one bit right
port++; // increment port
}
Run Code Online (Sandbox Code Playgroud)
循环从端口 0x20和val的位 0开始。如果该位为 1,则该端口为高电平,否则为低电平。
然后val向右移动一位,以使用位 1,并且 port 递增。
等等...对于val (0x38)的八位,执行了 8 次。
请注意,如果您必须从顶部端口开始,则此不同版本应该适合
int val = 0x38; // value
int port;
for(port=0x27 ; port >= 0x20 ; port--) { // goes from port 0x27~20
if (val & 0x80) high(port);
else low (port);
val <<= 1; // shift val one bit left
}
Run Code Online (Sandbox Code Playgroud)