如何通过C语言中的循环更改对象名称?

时间:2013-01-24 12:42:47

标签: c

如何通过循环更改对象名称?

我想创造一个像骑士骑士一样的光效。用PIC

我认为不是手动打开和关闭而是使用循环来更改RB行号。

我想更改此端口行名称的最后一个数字:像RB01 RB02一样

我的代码就像这样

for(int i = 0; i>6 ; i++ ){

PORTB = 0X00;
RB+i = 1;

}

有什么样的方法可以做这样的事吗?感谢

4 个答案:

答案 0 :(得分:4)

假设RB01RB02等只是用于访问#define中的位的方便PORTB,您可以使用按位算法编写循环而不使用{{ 1}}。

RB0*

答案 1 :(得分:2)

它不是很优雅,但一种方法是这样做:

PORTB = 0x00;
for (i = 0; i < 6; ++i)
{
    RB00 = (i == 0);
    RB01 = (i == 1);
    RB02 = (i == 2);
    RB03 = (i == 3);
    RB04 = (i == 4);
    RB05 = (i == 5);
    // note: you probably want to put a delay in here, e.g. 200 ms
}

如果您想在每次打开新LED时保持以前的LED,那么您可以这样做:

PORTB = 0x00;
for (i = 0; i < 6; ++i)
{
    RB00 = (i >= 0);
    RB01 = (i >= 1);
    RB02 = (i >= 2);
    RB03 = (i >= 3);
    RB04 = (i >= 4);
    RB05 = (i >= 5);
    // note: you probably want to put a delay in here, e.g. 200 ms
}

答案 2 :(得分:0)

不,没有办法以这种方式“生成”符号名称。您可以使用位掩码来操作相关端口的锁存寄存器。

答案 3 :(得分:0)

我可能会使用表格:

struct portbits
{
   sometype bit;   // Not quite sure what "RB0..RB5" actually translate to. 
};

struct portbits bits[] =
{
   RB00, 
   RB01, 
   RB02, 
   RB03, 
   RB04, 
   RB05, 
   RB06, 
   RB07, 
};

for(i = 0; i < 7; i++)
{
   bits[i] = 1; 
}
相关问题