学电子 发表于 2013-5-23 21:19:35

关于给P0口赋值的问题

一般给P0口赋值,直接可以写成P0=0x45即P0^0~P0^7=0100 0101
可是现在想让P0^7~P0^0=0100 0101,也即是说把0x45倒过来赋给P0,哪位高手有方法,求助!!!

zjk 发表于 2013-5-23 21:46:29

本帖最后由 zjk 于 2013-5-23 21:49 编辑

额,P0=0xA2不行么?悲催的孩子。。。{:sweat:}

benqme 发表于 2013-5-23 21:50:21

有必要这样做,直接倒过来赋值就可以,P0=0x54 就OK了

xslff 发表于 2013-5-23 21:59:44

楼主想让0x45自动转换成0x54。

学电子 发表于 2013-5-23 22:00:53

zjk 发表于 2013-5-23 21:46 static/image/common/back.gif
额,P0=0xA2不行么?悲催的孩子。。。

额,这只是一个例子。没那么简单,程序中要赋值无数次,不可能把每次要赋的值改过来

学电子 发表于 2013-5-23 22:04:06

xslff 发表于 2013-5-23 21:59 static/image/common/back.gif
楼主想让0x45自动转换成0x54。

不是这个意思,应该是想让0x45转换成成0xA2.

或者是对P0口进行转换,可是怎么装换呢?

学电子 发表于 2013-5-23 22:04:35

benqme 发表于 2013-5-23 21:50 static/image/common/back.gif
有必要这样做,直接倒过来赋值就可以,P0=0x54 就OK了

我不是这个意思啊

benqme 发表于 2013-5-23 23:18:18

#include <reg52.h>
#include <intrins.h>
unsigned char temp,i;
main()
{
        temp=0x45;
        P1=temp;
        temp=_cror_(temp,1);        //         循环右移一位
        P1=temp;                                //P1=0xa2
        while(1);
}

#include <reg52.h>
#include <intrins.h>
unsigned char temp,i;
main()
{
        temp=0x45;
        P1=temp;
        for(i=0;i<4;i++)
        {
                temp=_crol_(temp,1);
        }
        P1=temp;    //p1=0x54;
        while(1);
}

学电子 发表于 2013-5-24 09:26:42

benqme 发表于 2013-5-23 23:18 static/image/common/back.gif
#include
#include
unsigned char temp,i;


谢谢你了,可是我需要的是针对一类数的算法,不只是针对0x45变成0xA2

Tliang 发表于 2013-5-24 10:22:53

本帖最后由 Tliang 于 2013-5-24 10:27 编辑

1、改硬件
2、改数据
3、写个转换函数。
如下
uint8 tranition(uint8 dat)
{
    uint8 i, temp = 0;
    for(i = 0;i < 8;i++)
    {
      temp >>= 1;
      temp |= (dat & 0x80);
      dat<<= 1;
    }
    return temp;
}

学电子 发表于 2013-5-24 11:10:30

Tliang 发表于 2013-5-24 10:22 static/image/common/back.gif
1、改硬件
2、改数据
3、写个转换函数。


感谢高手!改硬件都被你看出来了!

学习了!!

zbn2010 发表于 2013-5-24 12:26:17

Tliang 发表于 2013-5-24 10:22 static/image/common/back.gif
1、改硬件
2、改数据
3、写个转换函数。


这个方法好,学习了。谢谢
页: [1]
查看完整版本: 关于给P0口赋值的问题