有这样一个设想,
对于单片机IO端口的顺序连续访问,能否通过某一索引变量的形式进行。并写成如下程序结构。
for(i=0;i<6;i++)
{
if( some condition)
IO(i) = 1;
else
IO(i) = 0;
// my method
array[i] = ...
}
有试过bit 和 sbit 好像都不行, 不可以取地址, 不能定数组。
如果 (Reg<<1 & 0x01) 的话,可以,但如果 是p2.3 - p3.7 这样子跨端口的怎么办。
目前的方法大概是:
switch (i)
case 1:
IO1 = 1 或0;
...
array[0] = xxx;
break;
case 2:
IO2 = 1 或0;
array[1] = xxx;
break;
default:
break;
...
因为觉得他们的位寻址地址是相邻的,有没有好办法来利用这一点,达到变量索引访问外部连续IO的目的呢?
原来的方法看上去,非常繁冗没含量啊。
------解决方案--------------------
int i,j;
j=0
for(i=1;i<=0x80;i<<=1)
{
if( some condition)
P1
------解决方案--------------------
= i;
else
P1&=(~i);
// my method
array[j] = ...
j++;
}
这样可以不?