当前位置: 代码迷 >> 单片机 >> 关于延续位的寻址
  详细解决方案

关于延续位的寻址

热度:119   发布时间:2016-04-28 14:58:40.0
关于连续位的寻址
有这样一个设想,
对于单片机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++;
 }

这样可以不?
  相关解决方案