I/O接口高低位互换

来源:互联网 发布:知乎 神人 常凯申 编辑:程序博客网 时间:2024/05/16 23:52

有人设计硬件电路的时候,稍有马虎,把8位接口的口线序号弄反了。


比如:本应该用P0.0-P0.7连接接D0-D7的,不小心却做成了P0.7-P0.0接D0-D7了。


硬件已经做好,更改起来,很不方便。这时就需要在软件方面来解决。


呵呵,硬件设计是把8条线,全弄拧了。那么在软件中,必须用一个函数,把8位数,再拧回来。


请看下面的函数:

uchar  num(uchar  dat)
{
    uchar  val;
val = ((dat & 0x01) << 7) | ((dat & 0x02) << 5) | ((dat & 0x04) << 3) | ((dat & 0x08) << 1) |
      ((dat & 0x10) >> 1) | ((dat & 0x20) >> 3) | ((dat & 0x40) >> 5) | ((dat & 0x80) >> 7);
    return  val;

在函数中,即实现了把dat中的第7位和第0位交换、第6位和第1位交换、第5位和第2位交换、第4位和第3位交换。

这个函数就可以解决硬件接反的问题。


这个函数也行:

char  torsion(char  x) 

{

    char i = 0, y = 0;

    for(; i < 8; i++)  if(x & (1 << i))  y += (128 >> i);

    reture  y;

}


实际工作中,这样的事情,还是时有发生,可见下面的网址:
http://zhidao.baidu.com/question/328357117.html
http://zhidao.baidu.com/question/344491575.html

今天又碰上一个:
http://zhidao.baidu.com/question/354111154.html

0 0
原创粉丝点击