发送十六进制代码

Gre*_*fox 6 c microcontroller

我是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.

Rin*_*g Ø 3

循环应该有点不同

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)