51单片机 P2口 高低位数据交换
发布网友
发布时间:2024-03-05 22:18
我来回答
共3个回答
热心网友
时间:2024-03-08 17:50
unsigned char fan(unsigned char dat)
{
unsigned char led1,i;
for(i=0;i<8;i++)
{
led1>>=1;
if((dat<<i)&0x80)
led1+=0x80;
}
return led1;
}
用法很简单,比如你要原来写P2=0x01;现在写成P2=fan(0x01); 就反过来了。
热心网友
时间:2024-03-08 17:50
第7位与0位交换,6位与1位交换,等等。。。
试试下列扭转函数:
char torsion(char x)
{
char i = 0, y = 0;
for(; i < 8; i++) if(x & (1 << i)) y += (128 >> i);
reture y;
}
可以满足要求。
热心网友
时间:2024-03-08 17:51
typedef struct
{
unsigned p2_0:1;
unsigned p2_1:1;
unsigned p2_2:1;
unsigned p2_3:1;
unsigned p2_4:1;
unsigned p2_5:1;
unsigned p2_6:1;
unsigned p2_7:1;
}data_def;
typedef struct
{
unsigned p2_7:1;
unsigned p2_6:1;
unsigned p2_5:1;
unsigned p2_4:1;
unsigned p2_3:1;
unsigned p2_2:1;
unsigned p2_1:1;
unsigned p2_0:1;
}P2_def;
union
{
data_def buf;
unsigned char data;
}datatok;
union
{
P2_def buf;
unsigned char P2d;
}P2tok;
unsigned char change(unsigned char dat)
{
datatok.data=dat;
P2tok.buf.p2_7=datatok.data.p2_0;
P2tok.buf.p2_6=datatok.data.p2_1;
P2tok.buf.p2_5=datatok.data.p2_2;
P2tok.buf.p2_4=datatok.data.p2_3;
P2tok.buf.p2_3=datatok.data.p2_4;
P2tok.buf.p2_2=datatok.data.p2_5;
P2tok.buf.p2_1=datatok.data.p2_6;
P2tok.buf.p2_0=datatok.data.p2_7;
return (P2tok.P2d);
}
子函数里的代码可以拿出去用